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

   Thanks @SEZ9 \u2014 all requested points are present on `8b430e9808`; exact 
pointers below.\n\n**F1/F2 \u2014 contract scope:** 
`seatunnel-api/.../SourceSplitEnumerator.java:41-57` (`run()` Javadoc) now says 
the engine only guarantees `run()` after `open()` and all readers are 
registered; `addSplitsBack()` may arrive before or after `run()`, and dispatch 
of late splits is left to the implementation. The former implementation 
obligation is gone. The stricter behavior is documented only on 
`IncrementalSourceEnumerator`'s class Javadoc.\n\n**F3/F4 \u2014 ordering and 
exactly-once coverage:** `IncrementalSourceEnumerator.java:76-84` documents the 
trailing `run()` assignment pass for splits returned before `run()`. `:102-111` 
documents both `running == false` (queue now, dispatch from `run()`) and 
`running == true` (immediate assignment retry) branches. 
`IncrementalSourceEnumeratorTest#shouldAssignSplitsAddedBackBeforeRunExactlyOnce`
 calls `addSplitsBack()` before `run()`, then asserts
  the split is assigned after `run()` and the test context's 
`allAssignedSplits` contains it exactly once; the companion running-path test 
covers immediate dispatch.\n\n**F5\u2013F8 \u2014 E2E:**\n- **F5:** 
`AbstractMysqlCDCITBase.java:227` uses `await().atMost(2, TimeUnit.MINUTES)` 
for the injected failure, aligned with the other budgets.\n- **F6:** 
`mysqlcdc_to_mysql_with_sink_failure_recovery.conf:24-27` uses `job.retry.times 
= 3` (15s interval), allowing a replay before trigger removal to consume one 
retry without exhausting the job. The existing `DROP TRIGGER IF EXISTS` is kept 
after the checkpoint gate; the fix deliberately uses the tolerant-extra-restart 
option rather than assuming the `finally` ordering is atomic.\n- **F7/F8:** 
`AbstractMysqlCDCITBase.java:275` uses `substring(Math.min(logOffset, 
serverLogs.length()))`, so a rotated/shorter log returns no match and 
Awaitility retries instead of throwing 
`StringIndexOutOfBoundsException`.\n\nThe real Docker/Zeta `MysqlCDCIT#te
 stMysqlCdcContinuesAfterSinkFailure` run was 1/1, zero failures/errors/skips 
(120.907s); the CI MySQL CDC connector jobs were green on both JDK 8 and 11. 
The only remaining gate is the repository-side Build dispatch/approval, not a 
source-level item. A fresh formal approval from a write-enabled maintainer is 
still required for the merge queue.\n


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