@@ -68,7 +68,7 @@ import { ConfigurationClientManager } from "./configurationClientManager.js";
6868import { getFixedBackoffDuration , getExponentialBackoffDuration } from "./common/backoffUtils.js" ;
6969import { InvalidOperationError , ArgumentError , isFailoverableError , isInputError } from "./common/errors.js" ;
7070import { ErrorMessages } from "./common/errorMessages.js" ;
71- import { SERVER_TIMESTAMP_HEADER } from "./afd/constants.js" ;
71+ import { X_MS_DATE_HEADER } from "./afd/constants.js" ;
7272
7373const MIN_DELAY_FOR_UNHANDLED_FAILURE = 5_000 ; // 5 seconds
7474
@@ -745,13 +745,16 @@ export class AzureAppConfigurationImpl implements AzureAppConfiguration {
745745
746746 let i = 0 ;
747747 for await ( const page of pageIterator ) {
748- const timestamp = this . #getResponseTimestamp ( page ) ;
748+ const serverResponseTime = this . #getMsDateHeader ( page ) ;
749749 if ( i >= pageWatchers . length ) {
750750 return true ;
751751 }
752752
753753 const lastServerResponseTime = pageWatchers [ i ] . lastServerResponseTime ;
754- const isUpToDate = lastServerResponseTime ? timestamp > lastServerResponseTime : true ;
754+ let isUpToDate = true ;
755+ if ( lastServerResponseTime !== undefined && serverResponseTime !== undefined ) {
756+ isUpToDate = serverResponseTime > lastServerResponseTime ;
757+ }
755758 if ( isUpToDate && page . _response . status === 200 && page . etag !== pageWatchers [ i ] . etag ) {
756759 return true ;
757760 }
@@ -802,7 +805,7 @@ export class AzureAppConfigurationImpl implements AzureAppConfiguration {
802805
803806 const items : ConfigurationSetting [ ] = [ ] ;
804807 for await ( const page of pageIterator ) {
805- pageWatchers . push ( { etag : page . etag , lastServerResponseTime : this . #getResponseTimestamp ( page ) } ) ;
808+ pageWatchers . push ( { etag : page . etag , lastServerResponseTime : this . #getMsDateHeader ( page ) } ) ;
806809 items . push ( ...page . items ) ;
807810 }
808811 return { items, pageWatchers } ;
@@ -1132,16 +1135,22 @@ export class AzureAppConfigurationImpl implements AzureAppConfiguration {
11321135 }
11331136
11341137 /**
1135- * Extracts the response timestamp from the headers. If not found, returns the current time.
1138+ * Extracts the response timestamp (x-ms-date) from the response headers. If not found, returns the current time.
11361139 */
1137- #getResponseTimestamp ( response : GetConfigurationSettingResponse | ListConfigurationSettingPage | RestError ) : Date {
1140+ #getMsDateHeader ( response : GetConfigurationSettingResponse | ListConfigurationSettingPage | RestError ) : Date {
11381141 let header : string | undefined ;
11391142 if ( isRestError ( response ) ) {
1140- header = response . response ?. headers ?. get ( SERVER_TIMESTAMP_HEADER ) ?? undefined ;
1143+ header = response . response ?. headers ?. get ( X_MS_DATE_HEADER ) ;
11411144 } else {
1142- header = response . _response ?. headers ?. get ( SERVER_TIMESTAMP_HEADER ) ?? undefined ;
1145+ header = response . _response ?. headers ?. get ( X_MS_DATE_HEADER ) ;
1146+ }
1147+ if ( header !== undefined ) {
1148+ const date = new Date ( header ) ;
1149+ if ( ! isNaN ( date . getTime ( ) ) ) {
1150+ return date ;
1151+ }
11431152 }
1144- return header ? new Date ( header ) : new Date ( ) ;
1153+ return new Date ( ) ;
11451154 }
11461155}
11471156
0 commit comments