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

   @SEZ9 Quick clarification — the review body isn't actually cut off. I just 
re-pulled the raw body directly via the GitHub API (`GET 
/repos/apache/seatunnel/pulls/11307/reviews/4978389826`) and it's the full 
11,995 characters, well under GitHub's ~65536-char single-comment limit, so 
nothing was dropped on my end. This may be a rendering artifact on the PR page 
rather than a real truncation.
   
   For convenience, here's the part right after the "Before" snippet — the 
"after" (post-merge, regressed) code path plus the fix guidance:
   
   ```java
   // After (current head, post-merge):
   boolean spark35 = 
container.getDockerImageName().startsWith("apache/spark:3.5");
   String dependencyDirectory = spark35 ? "/opt/spark/jars" : 
"/tmp/seatunnel/plugins/Iceberg/lib";
   DependencyJar.of(S3AFileSystem.class).copyTo(container, dependencyDirectory);
   DependencyJar.of(AmazonS3.class).copyTo(container, dependencyDirectory);
   ```
   
   Root cause: `DependencyJar.of(...)` resolves the **modular** `hadoop-aws` / 
`aws-java-sdk-s3` jars off the local Maven test classpath, not the 
previously-used **shaded/uber** `aws-java-sdk-bundle` jar. The modular jars 
need an external Guava; Spark 3.5.8 only ships its own bundled 
`guava-14.0.1.jar`, so `S3AFileSystem`'s `SimpleAWSCredentialsProvider` hits 
`NoSuchMethodError: Preconditions.checkArgument(boolean, String, Object, 
Object)` at runtime — deterministic on both the JDK 8 and JDK 11 lanes, 
confirmed in the fork CI run.
   
   Two fix options (from the review, location `IcebergSourceIT.java:93-101`):
   - **Option A** (restores previously-verified behavior): for the `spark35` 
branch, stage a shaded/uber jar (e.g. `aws-java-sdk-bundle`) instead of the 
modular jars, so no external Guava is required.
   - **Option B**: keep `DependencyJar` for consistency with `dev`, but stage 
the modular jars into an isolated SeaTunnel plugin/classpath location added via 
`--jars` / `spark.driver.extraClassPath` instead of dumping them into Spark's 
own `jars/` directory, preserving classpath isolation from Spark's bundled 
Guava.
   
   Once one of those lands and the Iceberg S3 E2E lane goes green on the 
updated head, I'll do a fresh full re-review per the protocol — no need to wait 
on me for anything else in the meantime.
   


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