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

   @SEZ9 Reposting the portion of @DanielLeens' review above that gets 
truncated in some views — the findings mapping it contains, verbatim:
   
   - **F1/F6 (serializer wiring / test bypass)**: `connector-cdc-base` has no 
`PendingSplitsStateSerializer` class at all. `IncrementalSource` does not 
override `getEnumeratorStateSerializer()`, so the engine uses the interface 
default `DefaultSerializer`, whose `serialize()`/`deserialize()` call 
`SerializationUtils` — plain `ObjectOutputStream`/`ObjectInputStream` over the 
`Serializable` object graph. A plain field on a `Serializable` class with 
unchanged `serialVersionUID` is picked up automatically; there is no separate 
serializer to "wire" in this codebase. 
`IncrementalPhaseStateTest.shouldPreserveStopOffsetThroughJavaSerializationRoundTrip`
 exercises exactly this real persistence path, and 
`shouldDefaultStopOffsetToNullOnLegacySerializedState` covers the legacy 
(field-absent) checkpoint. Resolved.
   - **F2 (single authoritative resolution point)**: the current design 
resolves inside `createIncrementalSplit()`, guarded by `resolvedStopOffset == 
null` — `HybridSplitAssigner` only creates incremental splits after snapshot 
completion, so there is exactly one resolution point and every split from one 
assignment shares the cached value. Resolved.
   - **F5 (retry with backoff)**: `resolveLatestStopOffsetWithRetry()` in 
`IncrementalSplitAssigner.java` retries up to 3 attempts with 300ms/600ms 
backoff before wrapping and throwing. Resolved.
   - **F3 (E2E readiness gate)**: `runLatestStopStartupMode` waits for row id=1 
at the sink, then defensively asserts row id=2000 is NOT yet in the sink before 
proceeding — it verifies the structural guarantee at runtime and fails loudly 
instead of producing a false data-loss failure. Resolved.
   - **F4/F7/F8 (docs / PR description)**: `docs/en|zh/MySQL-CDC.md` document 
the snapshot-completion semantics with a worked example, and the PR description 
names the enumerator-side mechanism 
(`IncrementalSplitAssigner.createIncrementalSplit()`).


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