From 70729fb3c497e6eaae9e66d972a87d6d5aa2c734 Mon Sep 17 00:00:00 2001 From: Tingluo Huang Date: Mon, 27 Apr 2020 23:44:17 -0400 Subject: [PATCH] Help trace worker crash in Kusto. (#450) * Help trace worker crash in Kusto. * more * feedback. --- src/Runner.Common/Constants.cs | 3 +++ src/Runner.Listener/JobDispatcher.cs | 5 +++-- src/Runner.Worker/ActionCommandManager.cs | 5 ++++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/Runner.Common/Constants.cs b/src/Runner.Common/Constants.cs index e67b6d42e..8533e931a 100644 --- a/src/Runner.Common/Constants.cs +++ b/src/Runner.Common/Constants.cs @@ -137,6 +137,9 @@ namespace GitHub.Runner.Common public const int RunnerUpdating = 3; public const int RunOnceRunnerUpdating = 4; } + + public static readonly string InternalTelemetryIssueDataKey = "_internal_telemetry"; + public static readonly string WorkerCrash = "WORKER_CRASH"; } public static class RunnerEvent diff --git a/src/Runner.Listener/JobDispatcher.cs b/src/Runner.Listener/JobDispatcher.cs index 706044c55..45f509e85 100644 --- a/src/Runner.Listener/JobDispatcher.cs +++ b/src/Runner.Listener/JobDispatcher.cs @@ -858,7 +858,6 @@ namespace GitHub.Runner.Listener } } - // TODO: We need send detailInfo back to DT in order to add an issue for the job private async Task CompleteJobRequestAsync(int poolId, Pipelines.AgentJobRequestMessage message, Guid lockToken, TaskResult result, string detailInfo = null) { Trace.Entering(); @@ -952,8 +951,10 @@ namespace GitHub.Runner.Listener ArgUtil.NotNull(timeline, nameof(timeline)); TimelineRecord jobRecord = timeline.Records.FirstOrDefault(x => x.Id == message.JobId && x.RecordType == "Job"); ArgUtil.NotNull(jobRecord, nameof(jobRecord)); + var unhandledExceptionIssue = new Issue() { Type = IssueType.Error, Message = errorMessage }; + unhandledExceptionIssue.Data[Constants.Runner.InternalTelemetryIssueDataKey] = Constants.Runner.WorkerCrash; jobRecord.ErrorCount++; - jobRecord.Issues.Add(new Issue() { Type = IssueType.Error, Message = errorMessage }); + jobRecord.Issues.Add(unhandledExceptionIssue); await jobServer.UpdateTimelineRecordsAsync(message.Plan.ScopeIdentifier, message.Plan.PlanType, message.Plan.PlanId, message.Timeline.Id, new TimelineRecord[] { jobRecord }, CancellationToken.None); } catch (Exception ex) diff --git a/src/Runner.Worker/ActionCommandManager.cs b/src/Runner.Worker/ActionCommandManager.cs index 29bd4a03b..132e5cce5 100644 --- a/src/Runner.Worker/ActionCommandManager.cs +++ b/src/Runner.Worker/ActionCommandManager.cs @@ -486,7 +486,10 @@ namespace GitHub.Runner.Worker foreach (var property in command.Properties) { - issue.Data[property.Key] = property.Value; + if (!string.Equals(property.Key, Constants.Runner.InternalTelemetryIssueDataKey, StringComparison.OrdinalIgnoreCase)) + { + issue.Data[property.Key] = property.Value; + } } context.AddIssue(issue);