li3zhi4 commented on PR #11618:
URL: https://github.com/apache/seatunnel/pull/11618#issuecomment-5164651247

   Thanks for the sharp catch, @nielifeng. You're right — `isNeverStop()` was 
only overridden in MySQL's `BinlogOffset`, so the other CDC connectors' 
`NO_STOPPING_OFFSET` sentinels were classified as bounded by the shared reader, 
which could silently FINISH an unbounded job. I've implemented your option 1 
(commit `cd0274ee7d`):
   
   **`isNeverStop()` implemented for every sentinel offset used by the shared 
reader:**
   - `LsnOffset` (PostgreSQL + SQL Server): `NO_STOPPING_OFFSET.equals(this)`
   - `RedoLogOffset` (Oracle): `NO_STOPPING_OFFSET.equals(this)`
   - `ChangeStreamOffset` (MongoDB): `NO_STOPPING_OFFSET.equals(this)`
   
   **Regression tests:**
   - Per-connector sentinel tests (`LsnOffsetTest` PG/SQLServer, 
`RedoLogOffsetTest`, `ChangeStreamOffsetTest`) asserting 
`NO_STOPPING_OFFSET.isNeverStop()` is `true` and a normal offset is not
   - 
`IncrementalSourceStreamFetcherTest.testNeverStopSentinelIsNotSignaledAsBoundedCompletion`:
 simulates a finished fetch task with a real never-stop sentinel and asserts 
`pollSplitRecords()` returns an **empty iterator instead of null** — i.e. an 
unbounded connector is never marked completed by the shared reader
   
   **Verification (all local):**
   - `spotless:check` ✅ (cdc-base + 4 connector modules)
   - `IncrementalSourceStreamFetcherTest` 3/3 ✅, `LsnOffsetTest` 2/2 (each) ✅, 
`RedoLogOffsetTest` 1/1 ✅, `ChangeStreamOffsetTest` 1/1 ✅
   - compile ✅
   
   Happy to adjust if you'd prefer the explicit split/config contract (option 
2) instead.
   


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