DanielLeens commented on PR #11639:
URL: https://github.com/apache/seatunnel/pull/11639#issuecomment-5459124124

   Thanks @SEZ9, this is another careful pass and every one of the eight issues 
has a concrete, checkable claim behind it - appreciated. Responding to each, 
with where I agree, where I'd push back on severity, and what I'm actually 
doing about it.
   
   **Context first, since it changes what "blocking" means right now**: the 
`Build` check on this exact head (`ef25cb1e3e6`) is currently red for a reason 
unrelated to any of the eight issues below. My own re-review earlier today 
(2026-08-28T01:50 UTC) found that `connector-cdc-db2` - a Debezium-based CDC 
connector merged into `dev` after this branch was opened, pulled in by the 
2026-08-27 rebase - was never migrated to declare its own 
`debezium-api`/`debezium-embedded`, so it no longer compiles at all (confirmed 
against the fork's own job logs, not a guess). That is the actual current 
blocker and needs to land before any of the items below can be validated 
against a green build, so I'm folding the doc/test fixes I'm accepting from 
this review into the same follow-up commit as the db2 fix rather than pushing 
several small commits.
   
   **Issue 1 (versionless `provided` deps, atomic coupling to the parent pom) - 
agree on the fix, pushing back on High.** The coupling is real, but I'd 
characterize it as a discoverability gap, not a silent-failure risk: 
`connector-cdc-base/pom.xml`, `connector-cdc/pom.xml`'s relocated 
`dependencyManagement`, and the shade filters are all in the same commit set of 
this same PR - there's no partial-apply path within the PR itself. A downstream 
cherry-pick that took only the base module's diff would fail loudly at the very 
next `mvn compile` (unresolved artifact version, since a versionless `provided` 
dependency has nothing to fall back to) - not silently degrade. Still, a 
pointer comment costs nothing and helps exactly the backport scenario you're 
describing, so I'll add one next to the versionless declarations in 
`connector-cdc-base/pom.xml` pointing at `connector-cdc/pom.xml`'s management 
block.
   
   **Issue 2 (no runtime fail-fast for missing Debezium classes) - agree, will 
add.** The failure mode you describe is real, though it's only reachable 
through a configuration the docs already call unsupported (mixing pre- and 
post-change plugin jars in one plugins dir). Still, turning an opaque 
`NoClassDefFoundError` into a message that names the missing dependency and 
points at `incompatible-changes.md` is cheap and strictly better for whoever 
hits it despite the docs. Will add a 
`Class.forName("io.debezium.embedded.EmbeddedEngine")` probe at 
`DebeziumAdapter` resolution.
   
   **Issue 3 (patched-vs-stock class race, no runtime detection) - agree it's 
not fully closed, but it's narrower than it reads.** 
`stockDebeziumCoreOverridesAreExcludedInEveryCdcShadeConfiguration` (added in 
the last couple of commits) now mechanically parses both shade-filter lists and 
asserts they match the expected exclude set byte-for-byte, including the `$*` 
nested-class patterns - that catches a regression in the filter *content* at 
build time, for every connector in this repo. What it can't catch is a 
regression in the filter *mechanism itself* (a `combine.children` typo 
elsewhere, or a plugin-config inheritance change) - your runtime 
`ProtectionDomain`/code-source assertion idea would close that. I'd rather 
stage that, plus the bigger FQCN-relocation idea, as a dedicated follow-up 
rather than grow this PR's diff further - it's a packaging-strategy change, not 
a scope change. Will open a tracking issue referencing this thread so it 
doesn't get lost.
   
   **Issue 4 (test fragile to jar-classpath / working-directory) - agree, 
straightforward, will fix.** `PatchedDebeziumClassesTest`'s `Files.isDirectory` 
check on the `ProtectionDomain` code source does assume an exploded 
`target/classes` layout, and the two pom reads do rely on the working 
directory. Will add a jar-entry fallback for the class enumeration and anchor 
the pom reads to an explicit basedir instead of CWD.
   
   **Issue 5 (downstream Maven consumers lose the curated exclusions) - agree, 
doc fix.** Correct that `kafka-log4j-appender`, the glassfish jersey exclusion, 
and the `zstd-jni` M1 override now live in `connector-cdc`'s 
`dependencyManagement`, which a third party depending on `connector-cdc-base` 
as a plain library dependency does not inherit. Will add the exact 
`<exclusions>` block to both `incompatible-changes.md` migration notes (en/zh) 
so it can be copy-pasted rather than reconstructed.
   
   **Issue 6 (wall-of-text docs, no version stated) - agree on structure.** 
Will split the Impact bullet into sub-bullets (upgrade-as-a-set / new 
dependency declarations / shade exclusions) and add a fenced XML snippet with 
the literal exclude patterns, both docs. On the release version: this PR is 
still pre-merge and blocked on the db2 fix above, so I'd rather not hardcode a 
version number that may shift before it actually lands - will fill that in once 
we're closer to a release cut rather than commit to a guess now.
   
   **Issue 7 (zstd-jni pin, native-lib drift risk) - one factual correction, 
then agree on the ask.** The `1.5.5-5` pin (with the Apple-M1 rationale 
comment) wasn't deleted - it moved to `connector-cdc/pom.xml`'s 
`dependencyManagement` alongside `debezium-api`/`debezium-embedded`, same 
idiom, same file, lines 94-98 at this head. So today every connector still 
resolves through exactly one place, which is what you're asking for. What's 
genuinely missing is a build-time guard against a *future* per-connector 
override drifting away from that single pin - agree that's worth having. Will 
add a maven-enforcer `dependencyConvergence`-style rule scoped to the CDC 
modules as a non-blocking follow-up.
   
   **Issue 8 (PR description contradicts the docs/pom comment on whether the 
jar still ships `io.debezium` classes) - confirmed and fixed.** You're right, 
the description said "`connector-cdc-base-*.jar` no longer contains 
`io.debezium` classes" while the pom comment and both `incompatible-changes.md` 
entries correctly say five patched classes remain. I've updated the description 
just now to say the jar no longer contains the *stock* Debezium runtime classes 
while the five patched classes stay, matching the actual docs.
   
   **Summary of what happens next**: the db2 fix (mechanical, matching the 
pattern already applied to the other seven connectors) is the real blocker and 
lands first; Issues 1 (comment), 4, 5, 6 and 8 are folded into that same 
follow-up since they're all doc/test-robustness fixes with no runtime behavior 
change; Issues 2, 3 and 7 are accepted non-blocking follow-ups I'll track 
separately so they don't get lost in a growing diff. Thanks again for staying 
on this - the shade-filter and patched-class discipline in this thread has 
meaningfully improved over the last several rounds, and Issue 8 in particular 
was a real accuracy bug in my own PR description that's now fixed.
   


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