DanielLeens commented on PR #11924:
URL: https://github.com/apache/seatunnel/pull/11924#issuecomment-5522174791

   Thanks for jumping in and clarifying the ownership on #11999, @BinTaoMa — 
that's helpful context for the maintainers deciding priority here.
   
   From a pure code-review standpoint on **this** PR (#11924), the coordination 
question doesn't change my open finding. The head is still `4a5e69f1c08a`, 
unchanged since my last re-review on 2026-08-31/09-01 (the only commit since 
then just merged `dev` to resolve conflicts and doesn't touch 
`TaskExecutionService.java`). So Issue 1 from my 2026-08-25 review is still 
unresolved at the current head — I just re-pulled the file at this exact SHA to 
confirm:
   
   - `TaskExecutionService.java:1184-1185` — `if (groupFutures != null && 
groupFutures.isEmpty()) { timerFlushFutures.remove(taskGroupLocation, 
groupFutures); }`
   - `TaskExecutionService.java:1211-1212` — same `groupFutures.isEmpty()` → 
`timerFlushFutures.remove(...)` pattern inside 
`closeTimerFlushTaskForGeneration`
   - `TaskExecutionService.java:1215-1216` — `if (generationFutures.isEmpty()) 
{ timerFlushFuturesByGeneration.remove(executionGeneration, generationFutures); 
}`
   
   All three are still non-atomic `isEmpty()`-then-`remove(key, map)` checks: a 
new timer-flush future can be registered into the same 
`groupFutures`/`generationFutures` map in the gap between the `isEmpty()` read 
and the `remove()` call, and that entry then gets silently dropped from the 
outer map even though it's non-empty at removal time — the same race @dybyte 
flagged and you already fixed correctly for `cancelAsyncFunction` via 
`computeIfPresent(...)`. That fix just hasn't been mirrored to these three 
timer-flush spots yet. This is still High severity/blocking for #11924 
regardless of how #11755 priority is resolved between the two PRs.
   
   On the #11999-vs-#11924 sequencing question itself: that's a scope/priority 
call for the maintainers rather than something I can settle from a diff review 
— I haven't reviewed #11999's implementation, so I can't vouch for its 
correctness, only note (per your and @JeremyXin's description) that it takes a 
narrower `synchronized`-gate approach without the generation-scoped future 
registries, so it wouldn't inherit this PR's still-open Issue 1. If the 
maintainers do land #11999 first as the near-term fix, I'd still want #11924 to 
close out Issue 1 (and ideally land the regression coverage its own 
`testTimerFlushCloseOnlyCancelsOwnedExecutionGeneration` test is targeting) 
before merge, whether as a fresh PR or a rebase on top of #11999.
   
   Separately, FYI on CI: the current head's `Build` check on the apache side 
shows `cancelled` (https://github.com/apache/seatunnel/runs/99465692849, ran 
~9h then got cancelled with no steps recorded), and there's no commit status 
ever posted for `4a5e69f1c08a` (`state: pending`, 0 statuses) — so this head 
hasn't actually completed a CI run yet, independent of the code review outcome 
above.
   
   I'll do a fresh full re-review as soon as Issue 1 is addressed and/or the 
coordination with #11999 is resolved.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to