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]
