Skip to content

[v26.1.x] transform: multi-produce failure wedge fix#30855

Merged
WillemKauf merged 2 commits into
redpanda-data:v26.1.xfrom
vbotbuildovich:backport-pr-30836-v26.1.x-667
Jun 20, 2026
Merged

[v26.1.x] transform: multi-produce failure wedge fix#30855
WillemKauf merged 2 commits into
redpanda-data:v26.1.xfrom
vbotbuildovich:backport-pr-30836-v26.1.x-667

Conversation

@vbotbuildovich

Copy link
Copy Markdown
Collaborator

Backport of PR #30836

Anish2454 and others added 2 commits June 19, 2026 20:09
Signed-off-by: Anish Shenoy <anish@onechronos.com>
(cherry picked from commit 638caa4)
`run_all_producers()` fanned out one producer loop per output via
`ss::parallel_for_each()`, which captures the first exception but waits
for every loop to finish before resolving. A producer loop only exits
once its abort source fires, so when a single producer threw (e.g. a
transient "not a leader for partition" during a leadership transfer) the
surviving loops spun forever. parallel_for_each stayed pending, the
exception was never observed, and state::errored never fired -- so the
processor's reported state stayed stuck at running with no progress on
the affected output until an external pause/resume.

Single-output transforms were unaffected because `parallel_for_each()`
over one element resolves exceptionally immediately.

Drive the producer loops off a composite abort source that fires when
either the processor stops (_as) or a producer fails (a local source).
The first producer to fail records its exception and aborts the local
source, which unwinds the sibling producer loops promptly; the captured
exception is then rethrown so it is reported exactly once as
state::errored, and the manager restarts the processor.

Also updates the repro test from the previous commit to assert the
failure is reported for any output count, and adds a regression test that
fails a producer, restarts, and asserts a clean restart with no spurious
second error.

(cherry picked from commit 38526c5)
@vbotbuildovich vbotbuildovich added this to the v26.1.x-next milestone Jun 19, 2026
@vbotbuildovich vbotbuildovich added the kind/backport PRs targeting a stable branch label Jun 19, 2026
@vbotbuildovich

Copy link
Copy Markdown
Collaborator Author

CI test results

test results on build#86049
test_status test_class test_method test_arguments test_kind job_url passed reason test_history
FLAKY(PASS) GroupMetricsTest test_topic_recreation null integration https://buildkite.com/redpanda/redpanda/builds/86049#019ee18c-b161-456f-9efd-7d315167ebaa 10/11 Test PASSES after retries.No significant increase in flaky rate(baseline=0.0000, p0=1.0000, reject_threshold=0.0100. adj_baseline=0.1000, p1=0.3487, trust_threshold=0.5000) https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=GroupMetricsTest&test_method=test_topic_recreation

@WillemKauf WillemKauf merged commit 954b3fb into redpanda-data:v26.1.x Jun 20, 2026
18 checks passed
@tyson-redpanda tyson-redpanda modified the milestones: v26.1.x-next, v26.1.11 Jun 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/build area/redpanda area/wasm WASM Data Transforms kind/backport PRs targeting a stable branch

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants