victor.jiang created FLINK-16794:
------------------------------------
Summary: ClassNotFoundException caused by
ClassLoader.getSystemClassLoader using impertinently
Key: FLINK-16794
URL: https://issues.apache.org/jira/browse/FLINK-16794
Project: Flink
Issue Type: Improvement
Components: Client / Job Submission, Runtime / REST
Affects Versions: 1.8.3, 1.8.2, 1.8.1, 1.8.0
Reporter: victor.jiang
In same containerization environment,the context classloader is not the
SystemClassLoader,it uses the customized classloader usually for the classes
isolation ,so the ClassNotFoundException may be caused。recommends using
getClass/Caller/ThreadCurrentContext 's ClassLoader。
The related sources below:
1.flink-clients\src\main\java\org\apache\flink\client\program\ClusterClient.java"(690,33):
return getAccumulators(jobID, ClassLoader.getSystemClassLoader());
2.flink-clients\src\main\java\org\apache\flink\client\program\MiniClusterClient.java"(148,33):
return getAccumulators(jobID, ClassLoader.getSystemClassLoader());
3.flink-runtime\src\main\java\org\apache\flink\runtime\blob\BlobUtils.java"(348,66):
return (Throwable) InstantiationUtil.deserializeObject(bytes,
ClassLoader.getSystemClassLoader());
4.flink-runtime\src\main\java\org\apache\flink\runtime\rest\messages\json\SerializedThrowableDeserializer.java"(52,68):
return InstantiationUtil.deserializeObject(serializedException,
ClassLoader.getSystemClassLoader());
5.flink-runtime\src\main\java\org\apache\flink\runtime\rpc\messages\RemoteRpcInvocation.java"(118,67):
methodInvocation =
serializedMethodInvocation.deserializeValue(ClassLoader.getSystemClassLoader());
--
This message was sent by Atlassian Jira
(v8.3.4#803005)