private ScaleStatus GetScaleStatusWithTelemetry()

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;
        }