Serialize log pauses - #4003
Closed
alexey-igrychev wants to merge 1 commit into
Closed
Conversation
Signed-off-by: Aleksei Igrychev <aleksei.igrychev@palark.com>
Author
|
Verification:
|
This was referenced Aug 7, 2026
alexey-igrychev
added a commit
to werf/werf
that referenced
this pull request
Aug 8, 2026
## Summary Race-instrumented Docker builds temporarily use `werf/3p-buildx` while the upstream Buildx log-output race is pending review. This lets the bounded compose race scope finish and exposes later reports instead of exiting on the known Buildx race. ## What - Replace `github.com/docker/buildx` with `github.com/werf/3p-buildx` at the `docker/buildx#4003` fix commit. - Keep an in-line `go.mod` removal condition: remove the replacement after upstream PR `#4003` merges. - VERIFIED: local `task format && task build && task lint && task test:unit` passed. - VERIFIED: focused remote Linux race compose build-report scope passed with the replacement. - No werf API, flag, configuration, or non-race build behavior changes. ## Why Buildx progress printers mutate one process-global logrus output and race during concurrent Dockerfile builds. The upstream patch serializes those pauses; until it lands in a released dependency, this fork prevents that known report from masking subsequent race investigation. Depends on [docker/buildx#4003](docker/buildx#4003). Signed-off-by: Aleksei Igrychev <aleksei.igrychev@palark.com>
Author
|
Closing this PR: the global mutex is held from Concurrent printers therefore serialize whole builds, and blocked printers stop draining their unbuffered status channels, creating solve-progress backpressure. This is worse than the original race for consumers that build several images in parallel. A replacement needs concurrent output buffering/multiplexing rather than a process-wide lock around the full pause lifetime. |
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Concurrent Buildx progress printers call
logutil.Pauseagainst one global logrus logger.Pauseread and replaced the logger output without serializing the pause intervals, which races under Go's race detector.Serialize pauses until their buffered output is resumed, and cover concurrent calls with a race regression test.