li3zhi4 commented on PR #11677: URL: https://github.com/apache/seatunnel/pull/11677#issuecomment-6229781525
Thanks @SEZ9. All four items are implemented on current head `2ba8abe8701dab8971ebb1fc5ea077f3a73b9545`; I am restating the exact evidence here for the re-review, rather than treating the earlier author comments as reviewer sign-off. 1. **F1/F2 — narrowed shared contract:** `SourceSplitEnumerator.java:42-57` now describes only the engine guarantees (open plus reader registration before `run()`), explicitly says the listed ordering is typical rather than a universal implementation contract, and leaves late-split dispatch to each implementation. CDC-specific stronger behavior is documented in `IncrementalSourceEnumerator.java:38-48`. Current link: https://github.com/li3zhi4/seatunnel/blob/2ba8abe8701dab8971ebb1fc5ea077f3a73b9545/seatunnel-api/src/main/java/org/apache/seatunnel/api/source/SourceSplitEnumerator.java#L42-L57 2. **F3/F4 — pre-run gate:** `IncrementalSourceEnumerator.java:74-84` documents that `run()` performs the first queued assignment, while `:102-111` documents why `addSplitsBack()` does not dispatch while `running == false`. `IncrementalSourceEnumeratorTest#shouldAssignSplitsAddedBackBeforeRunExactlyOnce` (`IncrementalSourceEnumeratorTest.java:60-80`) asserts no pre-run dispatch and exactly one post-run assignment. Link: https://github.com/li3zhi4/seatunnel/blob/2ba8abe8701dab8971ebb1fc5ea077f3a73b9545/seatunnel-connectors-v2/connector-cdc/connector-cdc-base/src/main/java/org/apache/seatunnel/connectors/seatunnel/cdc/source/enumerator/IncrementalSourceEnumerator.java#L74-L111 3. **F5/F6 — timing/replay:** the injected-failure wait is already `atMost(2, TimeUnit.MINUTES)` in `AbstractMysqlCDCITBase.java:265`, matching the other convergence waits. The separate trigger-removal catalog check is the only 30-second bound. `DROP TRIGGER IF EXISTS` runs in `finally`; it is not possible to promise an absolute ordering against a concurrently restarted job, so the test deliberately sets `job.retry.times = 3` and documents that one replay may consume the extra retry headroom (`mysqlcdc_to_mysql_with_sink_failure_recovery.conf:18-27`). This is a bounded race-handling policy, not an unproven guarantee. 4. **F7/F8 — log rotation:** `AbstractMysqlCDCITBase.java:267-279`, especially line 275, uses `substring(Math.min(logOffset, serverLogs.length()))` inside the Awaitility lambda. If the log shrinks, the suffix becomes empty and the poll retries instead of throwing `StringIndexOutOfBoundsException`. The earlier green E2E did not force log rotation, so this is reported as defensive coverage rather than claimed path execution. Validation on the synced head: `IncrementalSourceEnumeratorTest` 2/2 passed; four affected modules Spotless and `git diff --check` passed; fork Build run 38893273138 and Apache required Build are SUCCESS; MySQL CDC E2E lanes (JDK 11 and 17) are both SUCCESS. Please re-review these pointers on the current head and refresh the recorded change request if you consider the items closed. A write-enabled maintainer approval is still required. -- 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]
