Oleksii Mohylin created IGNITE-11662:
----------------------------------------

             Summary: Wrong classloader is used to unmarshal joining node data
                 Key: IGNITE-11662
                 URL: https://issues.apache.org/jira/browse/IGNITE-11662
             Project: Ignite
          Issue Type: Bug
    Affects Versions: 2.7
         Environment: Ignite 2.7
Karaf 4.2.0


            Reporter: Oleksii Mohylin


When a cluster coordinator node is running in Karaf container it cannot accept 
joining requests from other nodes. Problem lies in unability to unmarshal 
joining node data in 
org.apache.ignite.internal.processors.cluster.GridClusterStateProcessor.validateNode()

This line
{code:java}
joiningNodeState = marsh.unmarshal((byte[]) discoData.joiningNodeData(), 
Thread.currentThread().getContextClassLoader());{code}
fails with
{noformat}
Error on unmarshalling discovery data from node 
10.0.2.15,127.0.0.1,172.17.0.1:47501: Failed to find class with given class 
loader for unmarshalling (make sure same versions of all classes are available 
on all nodes or enable peer-class-loading) 
[clsLdr=jdk.internal.loader.ClassLoaders$AppClassLoader@5c0369c4, 
cls=org.apache.ignite.internal.processors.cluster.DiscoveryDataClusterState]; 
node is not allowed to join{noformat}
Apparently problem is wrong classloader returned by
{code:java}
Thread.currentThread().getContextClassLoader()){code}
which is not the one created in IgniteAbstractOsgiContextActivator.start().

*Proposed fix:* 

use proper way of obtaining classloader:
{code:java}
 U.resolveClassLoader(ctx.config()){code}
Like in other places. i.e. in GridClusterStateProcessor.collectGridNodeData().

 

 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to