binary-signal opened a new issue, #3553:
URL: https://github.com/apache/fluss/issues/3553

   ### Search before asking
   
   - [x] I searched in the [issues](https://github.com/apache/fluss/issues) and 
found nothing similar.
   
   
   ### Fluss version
   
   main (development)
   
   ### Please describe the bug 🐞
   
   The published fluss-client and fluss-flink-* uber-jars each ship 
jackson-core twice:
   
     1. correctly relocated under 
org/apache/fluss/shaded/jackson2/com/fasterxml/jackson/core/…  and
     2. an unrelocated copy at the root com/fasterxml/jackson/core/… 
   
   
   The unrelocated copy is an old jackson-core (2.15.x). Because it sits 
com.fasterxml.jackson.core package, it shadows the jackson-core a downstream 
application puts on its  classpath. Any app using a newer jackson (e.g. 2.18.x) 
then breaks at runtime  in our case YAML config loading:
   
   ```
   Exception in thread "main" java.lang.NoSuchMethodError: 
'com.fasterxml.jackson.core.JsonToken 
com.fasterxml.jackson.dataformat.yaml.YAMLParser._updateToken(com.fasterxml.jackson.core.JsonToken)'
        at 
com.fasterxml.jackson.dataformat.yaml.YAMLParser.nextToken(YAMLParser.java:532)
        at 
com.fasterxml.jackson.databind.ObjectMapper._readTreeAndClose(ObjectMapper.java:4854)
        at 
com.fasterxml.jackson.databind.ObjectMapper.readTree(ObjectMapper.java:3199)
   ```
    
   _updateToken was added in jackson-core 2.16, but the leaked 2.15.x 
jackson-core wins the class-load race, so jackson-dataformat-yaml 2.18.x fails.
   
   
   Same result for fluss-flink-2.2 , fluss-fs-s3, which ships only the 
unrelocated jackson-core 2.15.3. fluss-common is clean, so the unrelocated copy 
enters during the client/flink uber-jar assembly, a transitive 
com.fasterxml.jackson.core:jackson-core gets bundled without passing through 
the com.fasterxml.jackson → 
org.apache.fluss.shaded.jackson2.com.fasterxml.jackson relocation (the 
relocated set comes from the pre-shaded fluss-shaded-jackson artifact).
   
   Expected
   The uber-jars should expose no classes under the root 
com/fasterxml/jackson/**. Either relocate every jackson class (add/extend the 
com.fasterxml.jackson relocation rule so it also cover the transitively-bundled 
jackson-core), or exclude the transitive plain jackson-core from the shade 
artifactSet so only the pre-shaded fluss-shaded-jackson classes remain.
   
    
     Environment
   
     - Fluss: 0.9.0-incubating / 0.9.1-incubating (also reproduced on 
1.0-SNAPSHOT)
     - Leaked jackson-core: 2.15.x; app jackson: 2.18.2
     - Flink 2.2, Java 21
   
   ### Solution
   
   _No response_
   
   ### Are you willing to submit a PR?
   
   - [ ] I'm willing to submit a PR!


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