davidzollo commented on PR #11556:
URL: https://github.com/apache/seatunnel/pull/11556#issuecomment-5579479463

   Resolved the merge conflict against `dev` (one file, 
`PostgresSourceFetchTaskContext.java` — two independent additive hunks: this 
PR's legacy 3-arg constructor and `close()` replication-connection cleanup vs. 
`dev`'s new `lastRelationSchemas`/`relationSchemaBaseline` fields and 
schema-listener cleanup; kept both sides) and pushed `ba7c8bd743c`, which also 
closes out the non-blocking follow-ups from your last review round on top of 
the Issue 1 fix already on this branch:
   
   - **Issue 8** — `HybridSplitAssigner.close()` now uses try/finally so a 
failure closing the snapshot assigner can't skip closing the incremental 
assigner.
   - **Issues 2/6** — `SnapshotSplitAssigner` now tracks whether 
`openEnumerator` has an outstanding, unclosed call (`dialectOpened`). 
`open()`'s catch-block cleanup and `close()`'s completion-gated cleanup share 
that guard, so `closeEnumerator` can't fire twice for one `openEnumerator` — 
closing the "slot does not exist on the second call" masking risk. 
`dialect.openEnumerator(sourceConfig)` moved inside `open()`'s try block so a 
partial failure there is also covered by the catch-side cleanup. Updated the 
three existing `close()` gating tests to call `open()` first (matching real 
lifecycle usage now that `close()` only releases what `open()` actually 
acquired) and added a dedicated regression test for the double-close fix.
   - **Issue 3 (and 5, which it subsumes)** — `PostgresSourceConfigFactory` now 
validates `slot.name` against `^[a-z0-9_]{1,63}$` at config-factory time, 
failing fast at job submission. Since that guarantees the name is single-byte 
ASCII, the existing char-count truncation in `PostgresSourceConfig` is now 
provably byte-accurate rather than resting on an unenforced assumption — 
documented on both call sites instead of touching the truncation logic itself. 
I did not add a dedicated unit test for the new validation call path itself (no 
existing test in this file exercises `fromReadonlyConfig`, and building a 
minimal-but-correct `ReadonlyConfig` for it blind felt riskier than the 
one-line guard clause it's protecting); flagging that gap rather than shipping 
an unverified test.
   - **Issue 7** — added the `max_replication_slots >= parallelism + 1` sizing 
note to all four PostgreSQL/OpenGauss EN/ZH docs.
   
   **Issue 4 not addressed** — the deterministic backfill-slot-name collision 
after a reader crash. A correct fix needs a drop-if-exists-with-retry (or 
per-attempt naming) change inside the path that builds Debezium's replication 
connection for the backfill slot, which I don't think I should design and ship 
without a real PostgreSQL failure-injection test bed to verify the 
retry/backoff behavior against. Given it's rated Medium/non-blocking, I'd 
rather flag it here than guess.
   
   `./mvnw spotless:apply` run on `connector-cdc-base` and 
`connector-cdc-postgres` before pushing, no further formatting changes 
produced. Per the SeaTunnel local-verification rule I'm not running the 
modules' tests locally — GitHub CI on this head is the verification source of 
truth.
   


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