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

   Thanks for pushing the shade-module refactor forward. I pulled the latest 
head `1591fdf939525c4233fceae4e28cf515c87ee551` locally as 
`seatunnel-review-9993`, reviewed the full diff against `apache/dev`, and 
checked the real dist / starter / E2E consumer paths instead of only the POM 
changes.
   
   # What this PR fixes
   - User pain: keeping the shaded dependencies inside the main reactor 
increases maintenance and release cost.
   - Fix approach: move toward consuming externally published shaded artifacts 
and update the surrounding build/dist/E2E paths.
   - In one sentence: this PR is trying to migrate SeaTunnel from in-repo 
shaded artifact production to external shaded artifact consumption.
   
   # Runtime path I checked
   ```text
   Artifact production side
     -> root/module POMs move toward external shaded artifact consumption
     -> MavenJarUtil.getHadoop3UberJarPath()
         -> now resolves the jar from Maven coordinates/properties
   
   Real consumer side
     -> SeaTunnelContainer / ConnectorPackageServiceContainer / 
ClusterSeaTunnelEngineContainer
         -> still copy or expect the old shaded jar name in lib/
     -> seatunnel-engine-k8s-e2e Dockerfile / KubernetesIT
         -> still copy the old jar name
     -> starter POM excludes / user docs
         -> still reference the old artifact id / old jar naming contract
   ```
   
   # Code review
   ## 1. Core logic
   The migration direction is reasonable, and 
`MavenJarUtil.getHadoop3UberJarPath()` is a useful step because it moves the 
source jar lookup to Maven coordinates.
   
   But the migration is still incomplete on the real consumer side. The latest 
head still hardcodes the old shaded Hadoop uber jar name in multiple 
E2E/container/K8S paths, and the starter excludes and user-facing deployment 
docs still point to the old artifact contract as well.
   
   So the production side is being moved, but the consumers have not been 
migrated as a single closed loop yet.
   
   ## 2. Compatibility
   This is a compatibility-sensitive migration even though there is no public 
API change. The shaded jar file name and artifact id are part of the practical 
contract for dist assembly, starter shading, container startup, K8S images, and 
user deployment docs. Right now those consumers are not aligned with the new 
production side.
   
   ## 3. Performance / side effects
   No meaningful runtime CPU/memory concern here. The real side effect is 
operational breakage: E2E, container startup, downstream shading, and user 
deployment instructions can all continue looking for the wrong jar.
   
   ## 4. Error handling / logging
   Issue 1: the E2E / container / K8S runtime paths still hardcode the old 
shaded jar name, so the migration is not closed on the real consumer path
   - Location: `seatunnel-e2e/.../SeaTunnelContainer.java:133-136`; 
`.../ConnectorPackageServiceContainer.java:87,112,137`; 
`.../ClusterSeaTunnelEngineContainer.java:80`; `.../KubernetesIT.java:190`; 
`seatunnel-engine-k8s-e2e/src/test/resources/seatunnel_dockerfile:20`
   - Why this is a problem: even though the source jar path is now resolved 
from Maven coordinates, these runtime consumers still copy or expect the old 
file name inside `${SEATUNNEL_HOME}/lib`.
   - Risk: real integration paths can still fail or keep relying on the legacy 
contract even after the production side moved.
   - Best fix: centralize the final artifact file name and make the 
container/K8S/E2E consumers all use that same single definition.
   - Severity: High
   - Already raised by others: No
   
   Issue 2: starter excludes and user-facing docs still reference the old 
artifact id / old jar naming contract
   - Location: `seatunnel-core/seatunnel-starter/pom.xml:137`; 
`seatunnel-core/seatunnel-flink-starter/pom.xml:96`; 
`seatunnel-core/seatunnel-spark-starter/pom.xml:102`; multiple deployment/docs 
paths such as `docs/en/connectors/source/Hive.md:27`, 
`docs/en/engines/zeta/hybrid-cluster-deployment.md:351,385`, and the 
corresponding zh docs
   - Why this is a problem: the migration is not just about where the jar comes 
from; it also changes what downstream consumers need to exclude, copy, and 
document. Those consumers are still speaking the old contract.
   - Risk: build-time and user-facing deployment behavior stay inconsistent 
even if the core dependency declarations are updated.
   - Best fix: finish the starter/doc migration in the same artifact contract, 
or do not claim the shade migration is complete yet.
   - Severity: High
   - Already raised by others: No
   
   # Testing coverage and stability
   The risk here is not flaky tests. The risk is that the current validation 
surface still clearly allows stale consumer paths to survive, which means the 
migration is not yet fully enforced by the test/deployment matrix.
   
   # Merge conclusion
   ### Conclusion: can merge after fixes
   
   1. Blocking items
   - Issue 1: migrate the real E2E / container / K8S consumers to the new 
shaded artifact contract.
   - Issue 2: migrate the starter excludes and the user-facing deployment/docs 
contract to the same new artifact naming.
   
   2. Suggested follow-up items
   - None beyond the blockers above; the migration-closure gaps are the main 
merge gate.
   
   Overall, I agree with the direction, but the current head still looks like a 
partial migration rather than a completed one. Happy to re-review once the 
consumer side is migrated end to end.
   


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