xxubai opened a new issue, #3818:
URL: https://github.com/apache/amoro/issues/3818

   ### What happened?
   
   When I set `org.apache.flink.util.ChildFirstClassLoader`, the flink 
Optimizer can not serialize delete pk(Structlike) via kryo since there may have 
some dependencies confilction.
   Tow different ClassLoader loaded different class: 
`org.objenesis.strategy.InstantiatorStrategy`
   
   ### Affects Versions
   
   master/0.8.x
   
   ### What table formats are you seeing the problem on?
   
   Iceberg
   
   ### What engines are you seeing the problem on?
   
   Optimizer
   
   ### How to reproduce
   
   _No response_
   
   ### Relevant log output
   
   ```shell
   tm_id=optimizer-kubed-bts-0-f93q2x-taskmanager-1-2 application_id=/default 
subtask_index=4 java.lang.LinkageError: loader constraint violation: when 
resolving method 'void 
com.esotericsoftware.kryo.Kryo<span>DefaultInstantiatorStrategy.setFallbackInstantiatorStrategy(org.objenesis.strategy.InstantiatorStrategy)'
 the class loader org.apache.flink.util.ChildFirstClassLoader @79877ee of the 
current class, org/apache/amoro/utils/SerializationUtil</span>KryoInstantiator, 
and the class loader 'app' for the method's defining class, 
   com/esotericsoftware/kryo/Kryo<span>DefaultInstantiatorStrategy, have 
different Class objects for the type 
org/objenesis/strategy/InstantiatorStrategy used in the signature 
(org.apache.amoro.utils.SerializationUtil</span>KryoInstantiator is in unnamed 
module of loader org.apache.flink.util.ChildFirstClassLoader @79877ee, parent 
loader 'app'; com.esotericsoftware.kryo.Kryo<span>DefaultInstantiatorStrategy 
is in unnamed module of loader 'app') at 
   
org.apache.amoro.utils.SerializationUtil</span>KryoInstantiator.newKryo(SerializationUtil.java:120)
 at 
   
org.apache.amoro.utils.SerializationUtil<span>KryoSerializerInstance.<init>(SerializationUtil.java:92)
 at 
java.base/java.lang.ThreadLocal</init></span>SuppliedThreadLocal.initialValue(Unknown
 Source) at 
   java.base/java.lang.ThreadLocal.setInitialValue(Unknown Source) at 
   java.base/java.lang.ThreadLocal.get(Unknown Source) at 
   
org.apache.amoro.utils.SerializationUtil.kryoSerialize(SerializationUtil.java:70)
 at 
   org.apache.amoro.io.reader.StructLikeFunnel.funnel(StructLikeFunnel.java:36) 
at 
   org.apache.amoro.io.reader.StructLikeFunnel.funnel(StructLikeFunnel.java:28) 
at 
   
org.apache.amoro.shade.guava32.com.google.common.hash.AbstractHasher.putObject(AbstractHasher.java:133)
 at 
   
org.apache.amoro.shade.guava32.com.google.common.hash.AbstractHashFunction.hashObject(AbstractHashFunction.java:36)
 at 
   
org.apache.amoro.shade.guava32.com.google.common.hash.BloomFilterStrategies<span>2.put(BloomFilterStrategies.java:109)
 at 
   
org.apache.amoro.shade.guava32.com.google.common.hash.BloomFilter.put(BloomFilter.java:176)
 at 
   
org.apache.amoro.io.reader.CombinedDeleteFilter.lambda</span>initializeBloomFilter<span>5(CombinedDeleteFilter.java:288)
 at java.base/java.util.HashMap.forEach(Unknown Source) at 
   
org.apache.amoro.io.reader.CombinedDeleteFilter.initializeBloomFilter(CombinedDeleteFilter.java:282)
 at 
   
org.apache.amoro.io.reader.CombinedDeleteFilter.applyEqDeletes(CombinedDeleteFilter.java:244)
 at 
   
org.apache.amoro.io.reader.CombinedDeleteFilter.applyEqDeletes(CombinedDeleteFilter.java:368)
 at 
   
org.apache.amoro.io.reader.CombinedDeleteFilter.filter(CombinedDeleteFilter.java:214)
 at 
   
org.apache.amoro.io.reader.GenericCombinedIcebergDataReader.readData(GenericCombinedIcebergDataReader.java:124)
 at 
   
org.apache.amoro.optimizing.AbstractRewriteFilesExecutor.rewriterDataFiles(AbstractRewriteFilesExecutor.java:149)
 at 
   
org.apache.amoro.io.AuthenticatedFileIOAdapter.doAs(AuthenticatedFileIOAdapter.java:48)
 at 
   
org.apache.amoro.optimizing.AbstractRewriteFilesExecutor.execute(AbstractRewriteFilesExecutor.java:108)
 at 
   
org.apache.amoro.optimizing.AbstractRewriteFilesExecutor.execute(AbstractRewriteFilesExecutor.java:64)
 at 
   
org.apache.amoro.optimizer.common.OptimizerExecutor.executeTask(OptimizerExecutor.java:150)
 at 
   
org.apache.amoro.optimizer.flink.FlinkOptimizerExecutor.executeTask(FlinkOptimizerExecutor.java:70)
 at 
   
org.apache.amoro.optimizer.common.OptimizerExecutor.start(OptimizerExecutor.java:53)
 at 
   
org.apache.amoro.optimizer.flink.FlinkExecutor.lambda</span>open$0(FlinkExecutor.java:64)
 at java.base/java.lang.Thread.run(Unknown Source)
   ```
   
   ### Anything else
   
   _No response_
   
   ### Are you willing to submit a PR?
   
   - [x] Yes I am willing to submit a PR!
   
   ### Code of Conduct
   
   - [x] I agree to follow this project's Code of Conduct


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