Closed codecovdesign closed 2 weeks ago
raised at audit, marking as bug, as pointed out per the user expectation is unexpected
sync with Eli on 8/29
we need to better understand the logic/engineering here. why can't we report an intermediary state or display upload count and should we push harder indicate how many uploads are processing x or y (example)? Overall, there is a lot to do but we'll probably need to expand our capability and contextualize the data for the user. route moving forward for exploration: 1) identify intermediate state, 2) default doesn't show coverage, 3) can opt-in to partial data
Kyle todo setup a kickoff
related issue under review here: https://github.com/codecov/engineering-team/issues/2442 this is related since the contextualized state there when incomplete information is show for a different but related scenario. if we'd like to show partial information, we could follow this pattern.
related: https://github.com/codecov/engineering-team/issues/1245 in this case situation that would be helpful if we knew the amount of uploads processing
sync on 9/10
Upload Error Behavior on the Commit Page:
What happens?
commitData?.commit?.uploads
.How does it work?
These are the expected upload states:
export const UploadStateEnum = {
error: 'ERROR',
uploaded: 'UPLOADED',
processed: 'PROCESSED',
complete: 'COMPLETE',
started: 'STARTED',
} as const;
TLDR: On the commit page, if any upload has an error state, we display the error message immediately. We skip checking for other states once an error is detected, focusing solely on the error state for that upload.
To answer the question:
Will this page update if the CI build is triggered for the same commit?
No, the page will not update because we still account for the existing upload error. As long as the error persists, the error state will remain displayed. If the user submits a different commit with no upload errors, it will be processed as usual. The issue here is not related to the "processing" state but rather how the application handles errors.
We should consider what behavior is expected if there is one processing error. Should we display partial data in such cases? Currently, if part of the data is not successful, no data is shown at all.
Lmk if you have any specific questions!
According to @thomasrockhu-codecov, unfortunately we can not support the re-run all jobs to show the latest job in the UI. I think we can use "history" or "Version" at the list of commits and list of pull pages to indicate the data is from the initial run so if you rerun the commit/job, you will be looking at the recorded history of the commit. (Related to issue #2220)
Maybe we can reuse the page header and description for this message. Wdyt of this solution @codecovdesign?
Update from sync 9/24: we consider not show this in the commits page but focus on the individual commit details page.
We should consider what behavior is expected if there is one processing error. Should we display partial data in such cases? Currently, if part of the data is not successful, no data is shown at all.
@Adal3n3 from some of the ongoing work, is there an initial iteration that will help with this scenario? (indicating this has processing issue occurred)
also added a sync for next week we can talk then too
sync on 9/24 with @RulaKhaled @Adal3n3 @nora-codecov
x
on commit landing indicate fail uploadsTom helped me set up a test branch with an erroneous upload, so we can see and test conditions
current experience
The thing that's confusing me is that the notification (pr comment) we want exists, but it's not being returned as the pr comment when there's an upload error, and I don't know why. Here's what I found:
UploadTask
which kicks off the UploadProcessorTask
, which chains together the reports to process, and inserts UploadFinisherTask
as the last item on the processing chain.UploadFinisherTask
looks at the reports that were just processed in the chain, and if any are successful = False
, it changes the result and triggers NotifyErrorTask
. Here's that decision making codeNotifyErrorTask
(code here) should be posting a comment with the message "❗️ We couldn't process [{self.failed_upload}] out of [{self.total_upload}] uploads. Codecov cannot generate a coverage report with partially processed data. Please review the upload errors on the commit page."
which seems to be the behavior we are looking for.codecov.yml
, going to add to test pr.can we tell that we are processing uploads or the number we are processing, and surface that to the user
what is our logic/behavior for BOTH the pr comment and app pulls page when the head commit has errors
Confirmed that we do show partial data, we don't account for the errored upload
added notify: notify_error: true
and got the pr comment!
you can see it here
Joey actually did this work at the time but never finalized and merged the prs, which would make this the default behavior for new repos going forward: https://github.com/codecov/shared/pull/320 and https://github.com/codecov/worker/pull/601
can we tell that we are processing uploads or the number we are processing, and surface that to the user
Shelter
: shelter won't help in terms of uploads, all report processing will still happen in the current tasks in Worker
. However, Shelter is set up to be an event driven tool, so maybe in the future we could build a reporting system on shelter that would work for notifying the user about upload processing status.CommitReport
table - there's 1 row per commit
per type
(type can be coverage, bundle analysis, test report - think about whether we want to separate those or separate by flags. Also carried forward uploads, would those be displayed differently?)CommitReport
can have any number of ReportSession
/ReportsUpload
s. This is created at the beginning of the upload process, so if an upload has been attempted/initiated, there is one of these in the database.Upload
box/list that we currently have on the commit page in gazebo, looking at that endpoint, I think this would give what you want. the uploads (ReportSession
s) have a state
field, you could display by state. In fact, right now I don't see any filters, so I'm not sure why it's not returning and displaying processing reports - theoretically it should.I think this answers all the investigation questions, let me know if you need anything else ☂
Next step, we'll have a debrief sync just to discuss these finding and close out the issue for planning
From group review with @Adal3n3 @aj-codecov @eliatcodecov @nora-codecov
after_n_build
Problem to Solve
When report processing fails on a pull request, the failure is currently only visible in the commits section. Users may not be aware that they need to check commits for this information, leading to confusion and missed insights.
Proposed Solution
Update Codecov’s PR comment messaging to display a clear indication of report processing failures directly on the PR page.
areas for investigation: