@@ -110,7 +110,6 @@ export class AzureAppConfigurationImpl implements AzureAppConfiguration {
110110 #secretRefreshEnabled: boolean = false ;
111111 #secretReferences: ConfigurationSetting [ ] = [ ] ; // cached key vault references
112112 #secretRefreshTimer: RefreshTimer | undefined = undefined ;
113- #resolveSecretsInParallel: boolean = false ;
114113
115114 /**
116115 * Selectors of key-values obtained from @see AzureAppConfigurationOptions.selectors
@@ -202,7 +201,6 @@ export class AzureAppConfigurationImpl implements AzureAppConfiguration {
202201 this . #secretRefreshEnabled = true ;
203202 this . #secretRefreshTimer = new RefreshTimer ( secretRefreshIntervalInMs ) ;
204203 }
205- this . #resolveSecretsInParallel = options . keyVaultOptions . parallelSecretResolutionEnabled ?? false ;
206204 }
207205 this . #adapters. push ( new AzureKeyVaultKeyValueAdapter ( options ?. keyVaultOptions , this . #secretRefreshTimer) ) ;
208206 this . #adapters. push ( new JsonKeyValueAdapter ( ) ) ;
@@ -558,25 +556,19 @@ export class AzureAppConfigurationImpl implements AzureAppConfiguration {
558556 this . #aiConfigurationTracing. reset ( ) ;
559557 }
560558
559+ for ( const adapter of this . #adapters) {
560+ await adapter . preload ?.( loadedSettings . filter ( s => adapter . canProcess ( s ) ) ) ; // dedup and warm the secret cache
561+ }
562+
561563 for ( const setting of loadedSettings ) {
562564 if ( isSecretReference ( setting ) ) {
563565 this . #secretReferences. push ( setting ) ; // cache secret references for resolve/refresh secret separately
564- continue ;
565566 }
566567 // adapt configuration settings to key-values
567568 const [ key , value ] = await this . #processKeyValue( setting ) ;
568569 keyValues . push ( [ key , value ] ) ;
569570 }
570571
571- if ( this . #secretReferences. length > 0 ) {
572- for ( const adapter of this . #adapters) {
573- await adapter . preload ?.( this . #secretReferences) ; // dedup and warm the secret cache
574- }
575- await this . #resolveSecretReferences( this . #secretReferences, ( key , value ) => {
576- keyValues . push ( [ key , value ] ) ;
577- } ) ;
578- }
579-
580572 this . #clearLoadedKeyValues( ) ; // clear existing key-values in case of configuration setting deletion
581573 for ( const [ k , v ] of keyValues ) {
582574 this . #configMap. set ( k , v ) ; // reset the configuration
@@ -674,7 +666,7 @@ export class AzureAppConfigurationImpl implements AzureAppConfiguration {
674666
675667 if ( needRefresh ) {
676668 for ( const adapter of this . #adapters) {
677- await adapter . onChangeDetected ( ) ;
669+ await adapter . onChangeDetected ?. ( ) ;
678670 }
679671 await this . #loadSelectedKeyValues( ) ;
680672
@@ -718,12 +710,16 @@ export class AzureAppConfigurationImpl implements AzureAppConfiguration {
718710 return Promise . resolve ( false ) ;
719711 }
720712
721- for ( const adapter of this . #adapters) {
722- await adapter . preload ?.( this . #secretReferences) ; // dedup and warm the secret cache
713+ const keyVaultRefAdapter = this . #adapters. find ( adapter => adapter instanceof AzureKeyVaultKeyValueAdapter ) as AzureKeyVaultKeyValueAdapter | undefined ;
714+ if ( keyVaultRefAdapter ) {
715+ // dedup and warm the secret cache
716+ await keyVaultRefAdapter . preload ( this . #secretReferences) ;
723717 }
724- await this . #resolveSecretReferences( this . #secretReferences, ( key , value ) => {
718+
719+ for ( const setting of this . #secretReferences) {
720+ const [ key , value ] = await this . #processKeyValue( setting ) ;
725721 this . #configMap. set ( key , value ) ;
726- } ) ;
722+ }
727723
728724 this . #secretRefreshTimer. reset ( ) ;
729725 return Promise . resolve ( true ) ;
@@ -899,27 +895,6 @@ export class AzureAppConfigurationImpl implements AzureAppConfiguration {
899895 throw new Error ( ErrorMessages . ALL_FALLBACK_CLIENTS_FAILED ) ;
900896 }
901897
902- async #resolveSecretReferences( secretReferences : ConfigurationSetting [ ] , resultHandler : ( key : string , value : unknown ) => void ) : Promise < void > {
903- if ( this . #resolveSecretsInParallel) {
904- const secretResolutionPromises : Promise < void > [ ] = [ ] ;
905- for ( const setting of secretReferences ) {
906- const secretResolutionPromise = this . #processKeyValue( setting )
907- . then ( ( [ key , value ] ) => {
908- resultHandler ( key , value ) ;
909- } ) ;
910- secretResolutionPromises . push ( secretResolutionPromise ) ;
911- }
912-
913- // Wait for all secret resolution promises to be resolved
914- await Promise . all ( secretResolutionPromises ) ;
915- } else {
916- for ( const setting of secretReferences ) {
917- const [ key , value ] = await this . #processKeyValue( setting ) ;
918- resultHandler ( key , value ) ;
919- }
920- }
921- }
922-
923898 async #processKeyValue( setting : ConfigurationSetting < string > ) : Promise < [ string , unknown ] > {
924899 this . #setAIConfigurationTracing( setting ) ;
925900
0 commit comments