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]

Reply via email to