SEZ9 commented on PR #10551:
URL: https://github.com/apache/seatunnel/pull/10551#issuecomment-5564545223

   Thanks @DanielLeens for the from-scratch re-review of `805608cd8aa1` and for 
diffing it byte-for-byte against `7f21b1a3a315` — that confirms the only 
production change is the `pendingJobCleanupIMap.get(jobId)` → 
`getOwnedPendingCleanup(jobId, jobInfo)` substitution in the second lock-fenced 
block before `jobMaster.init(...)`, and I agree that closes the 
unowned-stale-record restore abort (PR10551-F2). The reentrancy note on 
`IMap#lock` for the same jobId inside `getOwnedPendingCleanup` matches my 
reading as well.
   
   Two things on my side:
   
   1. Your comment appears to be cut off at "Sorry for" — the carryover 
correction about the 2026-08-18 "zero diff" claim didn't come through. Could 
you re-post the rest? I'd like to know whether it changes the status of 
anything below.
   
   2. Since this round touched exactly one line, the remaining items from the 
earlier scope are, as far as I can tell, still open on this head. Concretely, 
what I still need before I can approve:
      - **PR10551-F1**: `repairMissingJobStateForRestore` still uses a 
jobId-only `pendingJobCleanupIMap.containsKey` fence. The same 
`getOwnedPendingCleanup(jobId, jobInfo)` ownership check should be applied 
there, otherwise a stale older-generation record still blocks repair for the 
active generation.
      - **PR10551-F3**: please document the `pendingJobCleanupIMap.lock(jobId)` 
→ `runningJobStateIMap.lock(key)` ordering contract in the code (javadoc on 
both call sites is fine) and confirm `DistributedStateTransition` never 
acquires them in the reverse order.
      - **PR10551-F4 / PR10551-F6**: `cleanupPendingJobStateMaps` still aborts 
on the first `remove` failure and the scheduler catch only logs. Either 
continue past individual failures and only drop the cleanup record once every 
removal succeeded, or reschedule the cleanup on failure — I'm fine with either 
as long as the record isn't left permanently live with partial residue.
      - **PR10551-F5**: `jobMaster.init(...)` is still executed while holding 
the distributed `pendingJobCleanupIMap` lock. If narrowing the lock to the 
fence-check + state-repair is not feasible, please say why in a comment so the 
next reader knows it's intentional.
      - **PR10551-F7**: when repair returns null and there is no owned cleanup 
record, please restore the old behavior of removing the stale `JobInfo` (or 
explain why leaving it is now safe).
      - **PR10551-F8**: a test for the unowned 
stale-cleanup-record-during-restore path — now that `getOwnedPendingCleanup` is 
in the restore fence, this is the case that would have caught the original bug.
   
   If any of these were already addressed in a way I'm not seeing on this head, 
point me at the spot and I'll re-check.
   
   <!-- streview-comment:862 -->


-- 
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