You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "Matthias (Jira)" <ji...@apache.org> on 2021/01/15 12:49:00 UTC
[jira] [Updated] (FLINK-16794) ClassNotFoundException caused by
ClassLoader.getSystemClassLoader using impertinently
[ https://issues.apache.org/jira/browse/FLINK-16794?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Matthias updated FLINK-16794:
-----------------------------
Description:
In some 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:
# [ClusterClient.java:113|https://github.com/apache/flink/blob/c6997c97c575d334679915c328792b8a3067cfb5/flink-clients/src/main/java/org/apache/flink/client/program/ClusterClient.java#L113]: {{return getAccumulators(jobID, ClassLoader.getSystemClassLoader());}}
# [BlobUtils.java:290|https://github.com/apache/flink/blob/c6997c97c575d334679915c328792b8a3067cfb5/flink-runtime/src/main/java/org/apache/flink/runtime/blob/BlobUtils.java#L290]: {{return (Throwable) InstantiationUtil.deserializeObject(bytes, ClassLoader.getSystemClassLoader());}}
# [SerializedThrowableDeserializer.java:50|https://github.com/apache/flink/blob/c6997c97c575d334679915c328792b8a3067cfb5/flink-runtime/src/main/java/org/apache/flink/runtime/rest/messages/json/SerializedThrowableDeserializer.java#L50]: {{return InstantiationUtil.deserializeObject(serializedException, ClassLoader.getSystemClassLoader());}}
# [RemoteRpcInvocation.java:121|https://github.com/apache/flink/blob/c6997c97c575d334679915c328792b8a3067cfb5/flink-runtime/src/main/java/org/apache/flink/runtime/rpc/messages/RemoteRpcInvocation.java#L121]: {{methodInvocation = serializedMethodInvocation.deserializeValue(ClassLoader.getSystemClassLoader());}}
was:
In some 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());
> 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.0
> Reporter: victor.jiang
> Priority: Major
>
> In some 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:
> # [ClusterClient.java:113|https://github.com/apache/flink/blob/c6997c97c575d334679915c328792b8a3067cfb5/flink-clients/src/main/java/org/apache/flink/client/program/ClusterClient.java#L113]: {{return getAccumulators(jobID, ClassLoader.getSystemClassLoader());}}
> # [BlobUtils.java:290|https://github.com/apache/flink/blob/c6997c97c575d334679915c328792b8a3067cfb5/flink-runtime/src/main/java/org/apache/flink/runtime/blob/BlobUtils.java#L290]: {{return (Throwable) InstantiationUtil.deserializeObject(bytes, ClassLoader.getSystemClassLoader());}}
> # [SerializedThrowableDeserializer.java:50|https://github.com/apache/flink/blob/c6997c97c575d334679915c328792b8a3067cfb5/flink-runtime/src/main/java/org/apache/flink/runtime/rest/messages/json/SerializedThrowableDeserializer.java#L50]: {{return InstantiationUtil.deserializeObject(serializedException, ClassLoader.getSystemClassLoader());}}
> # [RemoteRpcInvocation.java:121|https://github.com/apache/flink/blob/c6997c97c575d334679915c328792b8a3067cfb5/flink-runtime/src/main/java/org/apache/flink/runtime/rpc/messages/RemoteRpcInvocation.java#L121]: {{methodInvocation = serializedMethodInvocation.deserializeValue(ClassLoader.getSystemClassLoader());}}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)