From 40d5e7e822f19517ca0b5ae90848bc785f07523c Mon Sep 17 00:00:00 2001 From: "Lingling Ye (from Dev Box)" Date: Tue, 18 Aug 2026 13:39:31 +0800 Subject: [PATCH] fix race --- .../azureappconfiguration.go | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/azureappconfiguration/azureappconfiguration.go b/azureappconfiguration/azureappconfiguration.go index 153816a..5477c09 100644 --- a/azureappconfiguration/azureappconfiguration.go +++ b/azureappconfiguration/azureappconfiguration.go @@ -245,24 +245,34 @@ func (azappcfg *AzureAppConfiguration) Refresh(ctx context.Context) error { defer azappcfg.refreshInProgress.Store(false) var keyValueRefreshed, featureFlagRefreshed bool - var err error refreshTask := func(client *azappconfig.Client) error { + var kvRefreshed, ffRefreshed bool eg, egCtx := errgroup.WithContext(ctx) eg.Go(func() error { - if keyValueRefreshed, err = azappcfg.refreshKeyValues(egCtx, azappcfg.newKeyValueRefreshClient(client)); err != nil { + refreshed, err := azappcfg.refreshKeyValues(egCtx, azappcfg.newKeyValueRefreshClient(client)) + if err != nil { return fmt.Errorf("failed to refresh key values: %w", err) } + kvRefreshed = refreshed return nil }) eg.Go(func() error { - if featureFlagRefreshed, err = azappcfg.refreshFeatureFlags(egCtx, azappcfg.newFeatureFlagRefreshClient(client)); err != nil { + refreshed, err := azappcfg.refreshFeatureFlags(egCtx, azappcfg.newFeatureFlagRefreshClient(client)) + if err != nil { return fmt.Errorf("failed to refresh feature flags: %w", err) } + ffRefreshed = refreshed return nil }) - return eg.Wait() + if err := eg.Wait(); err != nil { + return err + } + + keyValueRefreshed = kvRefreshed + featureFlagRefreshed = ffRefreshed + return nil } if err := azappcfg.executeFailoverPolicy(ctx, refreshTask); err != nil { @@ -273,10 +283,11 @@ func (azappcfg *AzureAppConfiguration) Refresh(ctx context.Context) error { // No need to reload Key Vault secrets if key values are refreshed secretRefreshed := false if !keyValueRefreshed { - secretRefreshed, err = azappcfg.refreshKeyVaultSecrets(ctx) + refreshed, err := azappcfg.refreshKeyVaultSecrets(ctx) if err != nil { return fmt.Errorf("failed to reload Key Vault secrets: %w", err) } + secretRefreshed = refreshed } // Only execute callbacks if actual changes were applied