-
Notifications
You must be signed in to change notification settings - Fork 1.4k
fix dropped pull progress output due to canceled context #2254
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
Merged
Merged
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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.
looking at
FromContextimplementation it only uses context for thectx.Value(contextKey)call and later uses another context coming with the call. So why does it matter if this context gets canceled. Also, it is possible that this context also gets canceled before the blobs are actually pulled.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.
yeah, it was not obvious to me either.
The progress factory is not used until later when we call the controller
Startbuildkit/util/progress/controller/controller.go
Line 30 in 699121c
Start is eventually called here when we need to Unlazy the ref:
buildkit/cache/remote.go
Line 201 in 699121c
By the time we call Start, the original context from the
p.g.Dohas already been canceled, the new writer immediately gets ignored via:buildkit/util/progress/progress.go
Lines 171 to 172 in 699121c
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.
As discussed in slack, it seems the reader is what is getting associated with the canceled context via the flightcontrol on g.Do:
buildkit/util/flightcontrol/flightcontrol.go
Lines 105 to 110 in 699121c
So this fix is really about using the reader associated with the CacheKey ctx