@@ -29,11 +29,14 @@ import {
29
29
SEED_KEY_NAME ,
30
30
VARIANT_KEY_NAME ,
31
31
VARIANTS_KEY_NAME ,
32
- CONFIGURATION_VALUE_KEY_NAME
32
+ CONFIGURATION_VALUE_KEY_NAME ,
33
+ CONDITIONS_KEY_NAME ,
34
+ CLIENT_FILTERS_KEY_NAME
33
35
} from "./featureManagement/constants.js" ;
34
36
import { AzureKeyVaultKeyValueAdapter } from "./keyvault/AzureKeyVaultKeyValueAdapter.js" ;
35
37
import { RefreshTimer } from "./refresh/RefreshTimer.js" ;
36
- import { getConfigurationSettingWithTrace , listConfigurationSettingsWithTrace , requestTracingEnabled } from "./requestTracing/utils.js" ;
38
+ import { RequestTracingOptions , getConfigurationSettingWithTrace , listConfigurationSettingsWithTrace , requestTracingEnabled } from "./requestTracing/utils.js" ;
39
+ import { FeatureFlagTracingOptions } from "./requestTracing/FeatureFlagTracingOptions.js" ;
37
40
import { KeyFilter , LabelFilter , SettingSelector } from "./types.js" ;
38
41
import { ConfigurationClientManager } from "./ConfigurationClientManager.js" ;
39
42
@@ -61,6 +64,7 @@ export class AzureAppConfigurationImpl implements AzureAppConfiguration {
61
64
#options: AzureAppConfigurationOptions | undefined ;
62
65
#isInitialLoadCompleted: boolean = false ;
63
66
#isFailoverRequest: boolean = false ;
67
+ #featureFlagTracing: FeatureFlagTracingOptions | undefined ;
64
68
65
69
// Refresh
66
70
#refreshInProgress: boolean = false ;
@@ -99,6 +103,9 @@ export class AzureAppConfigurationImpl implements AzureAppConfiguration {
99
103
100
104
// enable request tracing if not opt-out
101
105
this . #requestTracingEnabled = requestTracingEnabled ( ) ;
106
+ if ( this . #requestTracingEnabled) {
107
+ this . #featureFlagTracing = new FeatureFlagTracingOptions ( ) ;
108
+ }
102
109
103
110
if ( options ?. trimKeyPrefixes ) {
104
111
this . #sortedTrimKeyPrefixes = [ ...options . trimKeyPrefixes ] . sort ( ( a , b ) => b . localeCompare ( a ) ) ;
@@ -170,12 +177,14 @@ export class AzureAppConfigurationImpl implements AzureAppConfiguration {
170
177
return this . #featureFlagEnabled && ! ! this . #options?. featureFlagOptions ?. refresh ?. enabled ;
171
178
}
172
179
173
- get #requestTraceOptions( ) {
180
+ get #requestTraceOptions( ) : RequestTracingOptions {
174
181
return {
175
- requestTracingEnabled : this . #requestTracingEnabled,
176
- initialLoadCompleted : this . #isInitialLoadCompleted,
182
+ enabled : this . #requestTracingEnabled,
177
183
appConfigOptions : this . #options,
178
- isFailoverRequest : this . #isFailoverRequest
184
+ initialLoadCompleted : this . #isInitialLoadCompleted,
185
+ replicaCount : this . #clientManager. getReplicaCount ( ) ,
186
+ isFailoverRequest : this . #isFailoverRequest,
187
+ featureFlagTracing : this . #featureFlagTracing
179
188
} ;
180
189
}
181
190
@@ -662,6 +671,25 @@ export class AzureAppConfigurationImpl implements AzureAppConfiguration {
662
671
} ;
663
672
}
664
673
674
+ if ( this . #requestTracingEnabled && this . #featureFlagTracing !== undefined ) {
675
+ if ( featureFlag [ CONDITIONS_KEY_NAME ] &&
676
+ featureFlag [ CONDITIONS_KEY_NAME ] [ CLIENT_FILTERS_KEY_NAME ] &&
677
+ Array . isArray ( featureFlag [ CONDITIONS_KEY_NAME ] [ CLIENT_FILTERS_KEY_NAME ] ) ) {
678
+ for ( const filter of featureFlag [ CONDITIONS_KEY_NAME ] [ CLIENT_FILTERS_KEY_NAME ] ) {
679
+ this . #featureFlagTracing. updateFeatureFilterTracing ( filter [ NAME_KEY_NAME ] ) ;
680
+ }
681
+ }
682
+ if ( featureFlag [ VARIANTS_KEY_NAME ] && Array . isArray ( featureFlag [ VARIANTS_KEY_NAME ] ) ) {
683
+ this . #featureFlagTracing. notifyMaxVariants ( featureFlag [ VARIANTS_KEY_NAME ] . length ) ;
684
+ }
685
+ if ( featureFlag [ TELEMETRY_KEY_NAME ] && featureFlag [ TELEMETRY_KEY_NAME ] [ ENABLED_KEY_NAME ] ) {
686
+ this . #featureFlagTracing. usesTelemetry = true ;
687
+ }
688
+ if ( featureFlag [ ALLOCATION_KEY_NAME ] && featureFlag [ ALLOCATION_KEY_NAME ] [ SEED_KEY_NAME ] ) {
689
+ this . #featureFlagTracing. usesSeed = true ;
690
+ }
691
+ }
692
+
665
693
return featureFlag ;
666
694
}
667
695
0 commit comments