-
Notifications
You must be signed in to change notification settings - Fork 414
Gracefully continue if createStatusReportBase throws
#2225
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
788a476 to
17bf96c
Compare
Previously, we weren't catching any possible exceptions in `createStatusReportBase` and runs would fail if any of the telemetry sub-items threw exceptions. As telemetry should not block the analysis, we continue here even if the status report throws.
17bf96c to
9e8cae9
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice. A few comments inline. If the answer to my question is "no", then this can go in as-is.
| await statusReport.sendStatusReport(trapCacheUploadStatusReport); | ||
| } else { | ||
| await statusReport.sendStatusReport(report); | ||
| if (config && didUploadTrapCaches) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we ever reasonably expect config to be falsy, but didUploadTrapCaches to be true? If so, we might want to still upload in that case:
| if (config && didUploadTrapCaches) { | |
| if (didUploadTrapCaches) { |
And the change below. But only if this is not already an error state.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think so — if config is undefined, we should be erroring out much earlier:
codeql-action/src/analyze-action.ts
Line 205 in f421cda
| if (config === undefined) { |
| ...report, | ||
| trap_cache_upload_duration_ms: Math.round(trapCacheUploadTime || 0), | ||
| trap_cache_upload_size_bytes: Math.round( | ||
| await getTotalCacheSize(config.trapCaches, logger), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Only if also adding above.
| await getTotalCacheSize(config.trapCaches, logger), | |
| await getTotalCacheSize(config?.trapCaches || {}, logger), |
| status === "success" || | ||
| status === "failure" || | ||
| status === "aborted" || | ||
| status === "user-error" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should this change to configuration-error? (Not in this PR)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We could: the configuration-error was codified in the overall job status (rather than status for each action, which is what this is). It would be nice to have them use the same syntax. But we would want to make sure that everyone consuming the data are aware about the transition, because we likely have existing monitors/queries/dashboards using user-error. I can write up an internal issue for this.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sure. I'd say it's low priority since it's just changing a name.
Previously, we weren't catching any possible exceptions in
createStatusReportBaseand runs would fail if any of the telemetry sub-items threw exceptions. As telemetry should not block the analysis, we continue here even if the status report throws.Merge / deployment checklist