@@ -72,36 +72,44 @@ public ZeroToOneScaleMonitor(string functionId, BlobServiceClient blobServiceCli
7272
7373 public async Task < ScaleMetrics > GetMetricsAsync ( )
7474 {
75- // if new blob were detected we want to GetScaleStatus return scale out vote at least once
76- if ( Interlocked . Equals ( _threadSafeWritesDetectedValue , 1 ) )
75+ try
7776 {
78- _logger . LogInformation ( $ "New writes were detectd but GetScaleStatus was not called. Waiting GetScaleStatus to call.") ;
79- return new ScaleMetrics ( ) ;
80- }
77+ // if new blob were detected we want to GetScaleStatus return scale out vote at least once
78+ if ( Interlocked . Equals ( _threadSafeWritesDetectedValue , 1 ) )
79+ {
80+ _logger . LogInformation ( $ "New writes were detectd but GetScaleStatus was not called. Waiting GetScaleStatus to call.") ;
81+ return new ScaleMetrics ( ) ;
82+ }
8183
82- var blobLogListener = await _blobLogListener . Value . ConfigureAwait ( false ) ;
83- BlobWithContainer < BlobBaseClient > [ ] recentWrites = _recentWrite == null ? ( await blobLogListener . GetRecentBlobWritesAsync ( CancellationToken . None ) . ConfigureAwait ( false ) ) . ToArray ( )
84- : new BlobWithContainer < BlobBaseClient > [ ] { _recentWrite } ;
85- if ( recentWrites . Length > 0 )
86- {
87- StringBuilder stringBuilder = new StringBuilder ( ) ;
88- foreach ( var write in recentWrites )
84+ var blobLogListener = await _blobLogListener . Value . ConfigureAwait ( false ) ;
85+ BlobWithContainer < BlobBaseClient > [ ] recentWrites = _recentWrite == null ? ( await blobLogListener . GetRecentBlobWritesAsync ( CancellationToken . None ) . ConfigureAwait ( false ) ) . ToArray ( )
86+ : new BlobWithContainer < BlobBaseClient > [ ] { _recentWrite } ;
87+ if ( recentWrites . Length > 0 )
8988 {
90- stringBuilder . Append ( $ "' { write . BlobClient . Name } ', " ) ;
91- if ( stringBuilder . Length > 1000 )
89+ StringBuilder stringBuilder = new StringBuilder ( ) ;
90+ foreach ( var write in recentWrites )
9291 {
93- stringBuilder . Append ( "[truncated]" ) ;
94- break ;
92+ stringBuilder . Append ( $ "'{ write . BlobClient . Name } ', ") ;
93+ if ( stringBuilder . Length > 1000 )
94+ {
95+ stringBuilder . Append ( "[truncated]" ) ;
96+ break ;
97+ }
9598 }
99+ _logger . LogInformation ( $ "'{ recentWrites . Length } ' recent writes were detected for '{ _scaleMonitorDescriptor . FunctionId } ': { stringBuilder } ") ;
100+ Interlocked . CompareExchange ( ref _threadSafeWritesDetectedValue , 1 , 0 ) ;
101+ }
102+ else
103+ {
104+ _logger . LogInformation ( $ "No recent writes were detected for '{ _scaleMonitorDescriptor . FunctionId } '") ;
105+ Interlocked . CompareExchange ( ref _threadSafeWritesDetectedValue , 0 , 1 ) ;
96106 }
97- _logger . LogInformation ( $ "'{ recentWrites . Length } ' recent writes were detected for '{ _scaleMonitorDescriptor . FunctionId } ': { stringBuilder } ") ;
98- Interlocked . CompareExchange ( ref _threadSafeWritesDetectedValue , 1 , 0 ) ;
99107 }
100- else
108+ catch ( Exception e )
101109 {
102- _logger . LogInformation ( $ "No recent writes were detected for '{ _scaleMonitorDescriptor . FunctionId } '") ;
103- Interlocked . CompareExchange ( ref _threadSafeWritesDetectedValue , 0 , 1 ) ;
110+ _logger . LogWarning ( $ "Encountered exception while detecting recent writes for '{ _scaleMonitorDescriptor . FunctionId } '. Exception: { e . ToString ( ) } ") ;
104111 }
112+
105113 return new ScaleMetrics ( ) ;
106114 }
107115
0 commit comments