Skip to content

Commit a70122e

Browse files
chiangvincentVincent Chiang
andauthored
trycatch in getmetrics (Azure#45974)
Co-authored-by: Vincent Chiang <[email protected]>
1 parent 78ed4d1 commit a70122e

File tree

1 file changed

+29
-21
lines changed

1 file changed

+29
-21
lines changed

sdk/storage/Microsoft.Azure.WebJobs.Extensions.Storage.Blobs/src/Listeners/BlobScalerMonitorProvider.cs

Lines changed: 29 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)