apache / apache/seatunnel

[Bug] [Zeta] CooperativeTaskWorker resolves its class loader from the shared executionContexts map instead of its own generation's context

Open
#12,224 1 comment 0 reactions 1 assignee Claimed by @zhangshenghang View on GitHub
Dominant language
Java
Stars
9.7k
Forks
2.4k
Avg merge
3d 9h
Merged PRs (30d)
204

Description

### Search before asking

- [x] I had searched in the issues and found no similar issues.

### What happened

Split out from the review of #11727, where it was found and deferred with
reviewer agreement rather than widening that PR further.

#11727 makes `BlockingWorker.run()` resolve its `TaskGroupContext` and class
loader from the tracker's own generation-scoped `ownedContext`, so a stale
`taskDone()` from an earlier restore generation cannot hand it the wrong
generation's context.

`CooperativeTaskWorker` is the sibling path for thread-shared tasks and still
resolves from the shared, location-keyed `executionContexts` map. Since
`TaskGroupLocation` (`{jobId, pipelineId, taskGroupId}`) is reused verbatim
across restore generations, the same cross-generation mismatch is reachable
there.

Scope: only reachable under `task_execution_thread_share_mode: ALL` or `PART`.
The default (`OFF`) routes tasks through `BlockingWorker`, which #11727 already
fixes.

### SeaTunnel Version

dev

### Are you willing to submit PR?

- [x] Yes I am willing to submit a PR!

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.