Skip to content

fix: prevent progress printer race - #690

Merged
alexey-igrychev merged 1 commit into
2from
fix/progress-printer-race
Aug 10, 2026
Merged

fix: prevent progress printer race#690
alexey-igrychev merged 1 commit into
2from
fix/progress-printer-race

Conversation

@alexey-igrychev

@alexey-igrychev alexey-igrychev commented Aug 8, 2026

Copy link
Copy Markdown
Member

Progress-table printer initialization now completes before its worker goroutine starts. Callers can immediately stop and wait for a printer without concurrently reading state the worker is still assigning.

The race was reported by werf race CI during release uninstall: ProgressTablesPrinter.Stop read the cancellation function while Start assigned it in the worker goroutine.

Review in cubic

Signed-off-by: Aleksei Igrychev <aleksei.igrychev@palark.com>
@alexey-igrychev

Copy link
Copy Markdown
Member Author

Verification:

  • Remote Linux: task --yes build passed.
  • Remote Linux: CGO_ENABLED=1 task --yes test:ginkgo paths='./pkg/track' tags='ai_tests' parallel=false -- --race passed.
  • Mutation: move initialization back into the worker goroutine → TestAIProgressTablesPrinterStartInitializesBeforeReturn reports the race and observes uninitialized state.

Tracked in werf/werf#7775.

alexey-igrychev added a commit to werf/werf that referenced this pull request Aug 8, 2026
Use werf/nelm#690 so race CI can classify reports before the upstream merge.

Signed-off-by: Aleksei Igrychev <aleksei.igrychev@palark.com>
alexey-igrychev added a commit to werf/werf that referenced this pull request Aug 10, 2026
Use werf/nelm#690 so race CI can classify reports before the upstream merge.

Signed-off-by: Aleksei Igrychev <aleksei.igrychev@palark.com>
alexey-igrychev added a commit to werf/werf that referenced this pull request Aug 10, 2026
Use werf/nelm#690 so race CI can classify reports before the upstream merge.

Signed-off-by: Aleksei Igrychev <aleksei.igrychev@palark.com>
@alexey-igrychev
alexey-igrychev marked this pull request as ready for review August 10, 2026 14:28
@alexey-igrychev
alexey-igrychev merged commit 0609686 into 2 Aug 10, 2026
8 checks passed
@alexey-igrychev
alexey-igrychev deleted the fix/progress-printer-race branch August 10, 2026 14:28
alexey-igrychev added a commit to werf/werf that referenced this pull request Aug 10, 2026
…7805)

## Summary

Bump `werf/nelm` to `06096861c106` so concurrent release tracking no
longer data-races on the progress table printer. The race was reproduced
under the race detector in `e2e_complex` during release uninstall, where
`ProgressTablesPrinter.Stop` read state that the `Start` worker was
still writing.

## What

- Deploy no longer triggers a data race in
`ProgressTablesPrinter.Start`/`Stop` during concurrent release tracking
(werf/nelm#690).
- Deploy now matches Kubernetes resource condition types
case-insensitively during tracking (werf/nelm feat + werf/kubedog bump
to `e8f61a4bc90a`).
- The nelm range `8b420d326cbc..06096861c106` also carries werf/nelm#688
(concurrent Helm configuration race); nelm branch `2` was rebased
between the two pins, so the range is `diverged` rather than strictly
linear.
- VERIFIED: `task build` (macOS, non-CGO) succeeds against the new pins.

## Why

werf/nelm#690 moves printer state initialization before the tracking
goroutine starts, so `Stop` no longer reads a field the worker is
concurrently assigning. It is the last dependency race left open in
`e2e_complex`. nelm is an ordinary versioned dependency, so the fix
lands as a nelm PR plus this bump; the intermediate commits on branch
`2` come along with the tip.

Signed-off-by: Aleksei Igrychev <aleksei.igrychev@palark.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant