[ 
https://issues.apache.org/jira/browse/IGNITE-8857?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sergey Chugunov updated IGNITE-8857:
------------------------------------
    Affects Version/s: 2.5

> ZookeeperClusterNode class instances sneak into BaselineTopology when 
> non-empty user attributes are defined
> -----------------------------------------------------------------------------------------------------------
>
>                 Key: IGNITE-8857
>                 URL: https://issues.apache.org/jira/browse/IGNITE-8857
>             Project: Ignite
>          Issue Type: Bug
>          Components: zookeeper
>    Affects Versions: 2.5
>            Reporter: Sergey Chugunov
>            Assignee: Sergey Chugunov
>            Priority: Major
>             Fix For: 2.7
>
>
> When persistence-enabled cluster is activated for the first time, it saves 
> information about cluster nodes into BaselineTopology, including user 
> attributes.
> It turned out that in case of cluster started with ZookeeperDiscoverySpi on 
> first activation instances of ZookeeperClusterNode are persisted to disk 
> within BaselineTopology.
> After that the same nodes cannot be switched to TcpDiscoverySpi without 
> having ignite-zookeeper.jar on classpath, an attempt to start cluster results 
> in the following exception:
> {code}
> org.apache.ignite.IgniteCheckedException: Failed to start processor: 
> GridProcessorAdapter []
>       at 
> org.apache.ignite.internal.IgniteKernal.startProcessor(IgniteKernal.java:1754)
>       at org.apache.ignite.internal.IgniteKernal.start(IgniteKernal.java:998)
>       at 
> org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start0(IgnitionEx.java:2014)
>       at 
> org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start(IgnitionEx.java:1723)
>       at org.apache.ignite.internal.IgnitionEx.start0(IgnitionEx.java:1151)
>       at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:671)
>       at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:596)
>       at org.apache.ignite.Ignition.start(Ignition.java:327)
>       ... 33 common frames omitted
> Caused by: org.apache.ignite.IgniteCheckedException: 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=union-module-impl:com.sbt.core.envelope.container.loader.ImplClassLoader@7e532bb8,
>  cls=org.apache.ignite.spi.discovery.zk.internal.ZookeeperClusterNode$1]
>       at 
> org.apache.ignite.marshaller.jdk.JdkMarshaller.unmarshal0(JdkMarshaller.java:144)
>       at 
> org.apache.ignite.marshaller.AbstractNodeNameAwareMarshaller.unmarshal(AbstractNodeNameAwareMarshaller.java:94)
>       at 
> org.apache.ignite.marshaller.jdk.JdkMarshaller.unmarshal0(JdkMarshaller.java:161)
>       at 
> org.apache.ignite.marshaller.AbstractNodeNameAwareMarshaller.unmarshal(AbstractNodeNameAwareMarshaller.java:82)
>       at 
> org.apache.ignite.internal.processors.cache.persistence.metastorage.MetaStorage.read(MetaStorage.java:158)
>       at 
> org.apache.ignite.internal.processors.cluster.GridClusterStateProcessor.onReadyForRead(GridClusterStateProcessor.java:216)
>       at 
> org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager.notifyMetastorageReadyForRead(GridCacheDatabaseSharedManager.java:437)
>       at 
> org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager.readMetastore(GridCacheDatabaseSharedManager.java:633)
>       at 
> org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager.start0(GridCacheDatabaseSharedManager.java:539)
>       at 
> org.apache.ignite.internal.processors.cache.GridCacheSharedManagerAdapter.start(GridCacheSharedManagerAdapter.java:61)
>       at 
> org.apache.ignite.internal.processors.cache.GridCacheProcessor.start(GridCacheProcessor.java:700)
>       at 
> org.apache.ignite.internal.IgniteKernal.startProcessor(IgniteKernal.java:1751)
>       ... 40 common frames omitted
> Caused by: java.lang.ClassNotFoundException: 
> org.apache.ignite.spi.discovery.zk.internal.ZookeeperClusterNode$1
>       at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
>       at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
>       at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>       at java.lang.Class.forName0(Native Method)
>       at java.lang.Class.forName(Class.java:348)
>       at 
> org.apache.ignite.internal.util.IgniteUtils.forName(IgniteUtils.java:8608)
>       at 
> org.apache.ignite.marshaller.jdk.JdkMarshallerObjectInputStream.resolveClass(JdkMarshallerObjectInputStream.java:59)
>       at 
> java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1819)
>       at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1713)
>       at 
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1986)
>       at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1535)
>       at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1919)
>       at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1529)
>       at 
> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2231)
>       at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2155)
>       at 
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2013)
>       at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1535)
>       at 
> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2231)
>       at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2155)
>       at 
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2013)
>       at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1535)
>       at java.io.ObjectInputStream.readObject(ObjectInputStream.java:422)
>       at java.util.HashMap.readObject(HashMap.java:1404)
>       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:1058)
>       at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2122)
>       at 
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2013)
>       at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1535)
>       at 
> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2231)
>       at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2155)
>       at 
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2013)
>       at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1535)
>       at java.io.ObjectInputStream.readObject(ObjectInputStream.java:422)
>       at 
> org.apache.ignite.marshaller.jdk.JdkMarshaller.unmarshal0(JdkMarshaller.java:139)
>       ... 51 common frames omitted
> {code}
> We should prevent ZookeeperClusterNode instances to be persisted to disk.



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

Reply via email to