in src/TriggerBinding/SqlTriggerScaleMonitor.cs [62:90]
private ScaleStatus GetScaleStatusWithTelemetry(int workerCount, SqlTriggerMetrics[] metrics)
{
var status = new ScaleStatus
{
Vote = ScaleVote.None,
};
var properties = new Dictionary<TelemetryPropertyName, string>(this._telemetryProps)
{
[TelemetryPropertyName.ScaleRecommendation] = $"{status.Vote}",
[TelemetryPropertyName.TriggerMetrics] = metrics is null ? "null" : $"[{string.Join(", ", metrics.Select(metric => metric.UnprocessedChangeCount))}]",
[TelemetryPropertyName.WorkerCount] = $"{workerCount}",
};
try
{
status = this.GetScaleStatusCore(workerCount, metrics);
properties[TelemetryPropertyName.ScaleRecommendation] = $"{status.Vote}";
TelemetryInstance.TrackEvent(TelemetryEventName.GetScaleStatus, properties);
}
catch (Exception ex)
{
this._logger.LogError($"Failed to get scale status for table '{this._userTable.FullName}' due to exception: {ex.GetType()}. Exception message: {ex.Message}");
TelemetryInstance.TrackException(TelemetryErrorName.GetScaleStatus, ex, properties);
}
return status;
}