Ignore error when fail to report worker crash. (#3588)

This commit is contained in:
Tingluo Huang
2024-11-21 16:10:12 -05:00
committed by GitHub
parent e640a9fef3
commit c46dac6736

View File

@@ -545,28 +545,36 @@ namespace GitHub.Runner.Listener
detailInfo = string.Join(Environment.NewLine, workerOutput); detailInfo = string.Join(Environment.NewLine, workerOutput);
Trace.Info($"Return code {returnCode} indicate worker encounter an unhandled exception or app crash, attach worker stdout/stderr to JobRequest result."); Trace.Info($"Return code {returnCode} indicate worker encounter an unhandled exception or app crash, attach worker stdout/stderr to JobRequest result.");
var jobServer = await InitializeJobServerAsync(systemConnection); try
var unhandledExceptionIssue = new Issue() { Type = IssueType.Error, Message = detailInfo };
unhandledExceptionIssue.Data[Constants.Runner.InternalTelemetryIssueDataKey] = Constants.Runner.WorkerCrash;
switch (jobServer)
{ {
case IJobServer js: var jobServer = await InitializeJobServerAsync(systemConnection);
{ var unhandledExceptionIssue = new Issue() { Type = IssueType.Error, Message = detailInfo };
await LogWorkerProcessUnhandledException(js, message, unhandledExceptionIssue); unhandledExceptionIssue.Data[Constants.Runner.InternalTelemetryIssueDataKey] = Constants.Runner.WorkerCrash;
// Go ahead to finish the job with result 'Failed' if the STDERR from worker is System.IO.IOException, since it typically means we are running out of disk space. switch (jobServer)
if (detailInfo.Contains(typeof(System.IO.IOException).ToString(), StringComparison.OrdinalIgnoreCase)) {
case IJobServer js:
{ {
Trace.Info($"Finish job with result 'Failed' due to IOException."); await LogWorkerProcessUnhandledException(js, message, unhandledExceptionIssue);
await ForceFailJob(js, message); // Go ahead to finish the job with result 'Failed' if the STDERR from worker is System.IO.IOException, since it typically means we are running out of disk space.
} if (detailInfo.Contains(typeof(System.IO.IOException).ToString(), StringComparison.OrdinalIgnoreCase))
{
Trace.Info($"Finish job with result 'Failed' due to IOException.");
await ForceFailJob(js, message);
}
break;
}
case IRunServer rs:
await ForceFailJob(rs, message, unhandledExceptionIssue);
break; break;
} default:
case IRunServer rs: throw new NotSupportedException($"JobServer type '{jobServer.GetType().Name}' is not supported.");
await ForceFailJob(rs, message, unhandledExceptionIssue); }
break; }
default: catch (Exception ex)
throw new NotSupportedException($"JobServer type '{jobServer.GetType().Name}' is not supported."); {
Trace.Error($"Catch exception during log worker process unhandled exception.");
Trace.Error(ex);
} }
} }