Skip to content

Commit affee1a

Browse files
Merge branch 'main' of https://github.com/Azure/AppConfiguration-JavaScriptProvider into zhiyuanliang/secret-refresh
2 parents bf3d971 + 9861d03 commit affee1a

File tree

1 file changed

+28
-32
lines changed

1 file changed

+28
-32
lines changed

src/AzureAppConfigurationImpl.ts

Lines changed: 28 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ export class AzureAppConfigurationImpl implements AzureAppConfiguration {
9191
#secretRefreshEnabled: boolean = false;
9292
#secretReferences: ConfigurationSetting[] = []; // cached key vault references
9393
#secretRefreshTimer: RefreshTimer;
94-
#resolveSecretInParallel: boolean = false;
94+
#resolveSecretsInParallel: boolean = false;
9595

9696
/**
9797
* Selectors of key-values obtained from @see AzureAppConfigurationOptions.selectors
@@ -183,7 +183,7 @@ export class AzureAppConfigurationImpl implements AzureAppConfiguration {
183183
this.#secretRefreshEnabled = true;
184184
this.#secretRefreshTimer = new RefreshTimer(secretRefreshIntervalInMs);
185185
}
186-
this.#resolveSecretInParallel = options.keyVaultOptions.parallelSecretResolutionEnabled ?? false;
186+
this.#resolveSecretsInParallel = options.keyVaultOptions.parallelSecretResolutionEnabled ?? false;
187187
}
188188
this.#adapters.push(new AzureKeyVaultKeyValueAdapter(options?.keyVaultOptions, this.#secretRefreshTimer));
189189
this.#adapters.push(new JsonKeyValueAdapter());
@@ -520,20 +520,16 @@ export class AzureAppConfigurationImpl implements AzureAppConfiguration {
520520
for (const setting of loadedSettings) {
521521
if (isSecretReference(setting)) {
522522
this.#secretReferences.push(setting); // cache secret references for resolve/refresh secret separately
523-
if (this.#resolveSecretInParallel) {
524-
continue;
525-
}
523+
continue;
526524
}
527525
// adapt configuration settings to key-values
528526
const [key, value] = await this.#processKeyValue(setting);
529527
keyValues.push([key, value]);
530528
}
531-
532-
if (this.#resolveSecretInParallel) {
533-
await this.#resolveSecretsInParallel(this.#secretReferences, (key, value) => {
534-
keyValues.push([key, value]);
535-
});
536-
}
529+
530+
await this.#resolveSecretReferences(this.#secretReferences, (key, value) => {
531+
keyValues.push([key, value]);
532+
});
537533

538534
this.#clearLoadedKeyValues(); // clear existing key-values in case of configuration setting deletion
539535
for (const [k, v] of keyValues) {
@@ -664,16 +660,9 @@ export class AzureAppConfigurationImpl implements AzureAppConfiguration {
664660
return Promise.resolve(false);
665661
}
666662

667-
if (this.#resolveSecretInParallel) {
668-
await this.#resolveSecretsInParallel(this.#secretReferences, (key, value) => {
669-
this.#configMap.set(key, value);
670-
});
671-
} else {
672-
for (const setting of this.#secretReferences) {
673-
const [key, value] = await this.#processKeyValue(setting);
674-
this.#configMap.set(key, value);
675-
}
676-
}
663+
await this.#resolveSecretReferences(this.#secretReferences, (key, value) => {
664+
this.#configMap.set(key, value);
665+
});
677666

678667
this.#secretRefreshTimer.reset();
679668
return Promise.resolve(true);
@@ -781,22 +770,29 @@ export class AzureAppConfigurationImpl implements AzureAppConfiguration {
781770
throw new Error("All fallback clients failed to get configuration settings.");
782771
}
783772

784-
async #resolveSecretsInParallel(secretReferences: ConfigurationSetting[], resultHandler: (key: string, value: unknown) => void): Promise<void> {
773+
async #resolveSecretReferences(secretReferences: ConfigurationSetting[], resultHandler: (key: string, value: unknown) => void): Promise<void> {
785774
if (secretReferences.length === 0) {
786775
return;
787776
}
788777

789-
const secretResolutionPromises: Promise<void>[] = [];
790-
for (const setting of secretReferences) {
791-
const secretResolutionPromise = this.#processKeyValue(setting)
792-
.then(([key, value]) => {
793-
resultHandler(key, value);
794-
});
795-
secretResolutionPromises.push(secretResolutionPromise);
796-
}
778+
if (this.#resolveSecretsInParallel) {
779+
const secretResolutionPromises: Promise<void>[] = [];
780+
for (const setting of secretReferences) {
781+
const secretResolutionPromise = this.#processKeyValue(setting)
782+
.then(([key, value]) => {
783+
resultHandler(key, value);
784+
});
785+
secretResolutionPromises.push(secretResolutionPromise);
786+
}
797787

798-
// Wait for all secret resolution promises to be resolved
799-
await Promise.all(secretResolutionPromises);
788+
// Wait for all secret resolution promises to be resolved
789+
await Promise.all(secretResolutionPromises);
790+
} else {
791+
for (const setting of secretReferences) {
792+
const [key, value] = await this.#processKeyValue(setting);
793+
resultHandler(key, value);
794+
}
795+
}
800796
}
801797

802798
async #processKeyValue(setting: ConfigurationSetting<string>): Promise<[string, unknown]> {

0 commit comments

Comments
 (0)