[
https://issues.apache.org/jira/browse/FLINK-14575?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Chesnay Schepler closed FLINK-14575.
------------------------------------
Resolution: Duplicate
> Wrong (parent-first) class loader during serialization while submitting jobs
> ----------------------------------------------------------------------------
>
> Key: FLINK-14575
> URL: https://issues.apache.org/jira/browse/FLINK-14575
> Project: Flink
> Issue Type: Bug
> Components: Client / Job Submission
> Affects Versions: 1.8.2, 1.9.1
> Reporter: Nico Kruber
> Priority: Major
>
> When building the user code classloader for job submission, Flink uses a
> parent first class loader for serializing the ExecutionConfig which may lead
> to problems in the following case:
> # have hadoop in the system class loader from lib/ (this also provides avro
> 1.8.3)
> # have a user jar with a newer avro, e.g. 1.9.1
> # register an Avro class with the execution config, e.g. through
> {{registerPojoType}} (please ignore for a second that this is not needed)
> During submission, a parent-first classloader will be used and thus, avro
> 1.8.3 will be used which does not map the version in the user classloader
> that will be used for deserialization.
> Exception during submission:
> {code}
> Caused by: java.io.InvalidClassException:
> org.apache.avro.specific.SpecificRecordBase; local class incompatible: stream
> classdesc serialVersionUID = 189988654766568477, local class serialVersionUID
> = -1463700717714793795
> at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:699)
> at
> java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885)
> at
> java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751)
> at
> java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885)
> at
> java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751)
> at java.io.ObjectInputStream.readClass(ObjectInputStream.java:1716)
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1556)
> at java.io.ObjectInputStream.readObject(ObjectInputStream.java:431)
> at java.util.HashSet.readObject(HashSet.java:341)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at
> java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1170)
> at
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2178)
> at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2069)
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573)
> at
> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2287)
> at
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2211)
> at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2069)
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573)
> at java.io.ObjectInputStream.readObject(ObjectInputStream.java:431)
> at
> org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:566)
> at
> org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:552)
> at
> org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:540)
> at
> org.apache.flink.util.SerializedValue.deserializeValue(SerializedValue.java:58)
> at
> org.apache.flink.runtime.jobmaster.JobMaster.<init>(JobMaster.java:278)
> at
> org.apache.flink.runtime.jobmaster.factories.DefaultJobMasterServiceFactory.createJobMasterService(DefaultJobMasterServiceFactory.java:83)
> at
> org.apache.flink.runtime.jobmaster.factories.DefaultJobMasterServiceFactory.createJobMasterService(DefaultJobMasterServiceFactory.java:37)
> at
> org.apache.flink.runtime.jobmaster.JobManagerRunner.<init>(JobManagerRunner.java:146)
> ... 10 more
> {code}
> The incriminating code is in
> * Flink 1.8.0:
> {{org.apache.flink.client.program.JobWithJars#buildUserCodeClassLoader}}
> * Flink master:
> {{org.apache.flink.client.ClientUtils#buildUserCodeClassLoader}}
> Thanks [~chesnay] for looking into this with me. [~aljoscha] Do you know why
> we use parent-first there?
--
This message was sent by Atlassian Jira
(v8.3.4#803005)