[ https://issues.apache.org/jira/browse/IGNITE-11914?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ivan Bessonov reassigned IGNITE-11914: -------------------------------------- Assignee: Ivan Bessonov > Failures to deserialize discovery data should be handled by a failure handler > ----------------------------------------------------------------------------- > > Key: IGNITE-11914 > URL: https://issues.apache.org/jira/browse/IGNITE-11914 > Project: Ignite > Issue Type: Bug > Affects Versions: 2.7.5 > Reporter: Denis Mekhanikov > Assignee: Ivan Bessonov > Priority: Major > Attachments: DiscoveryDataDeserializationFailureHanderTest.java > > > When a node during join receives a discovery data packet, that it cannot > deserialize, then this error is printed to log and not handled in any way. It > leads to swallowing potentially important failures. > For example, a failure to deserialize a continuous query remote filter should > be propagated to a failure handler, but it doesn't happen. Test is attached. > Error message: > {noformat} > Failed to unmarshal discovery data for component: 0 > class 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=sun.misc.Launcher$AppClassLoader@18b4aac2, > cls=org.apache.ignite.tests.p2p.CacheDeploymentEntryEventFilterFactory] > at > org.apache.ignite.marshaller.jdk.JdkMarshaller.unmarshal0(JdkMarshaller.java:146) > at > org.apache.ignite.marshaller.AbstractNodeNameAwareMarshaller.unmarshal(AbstractNodeNameAwareMarshaller.java:93) > at > org.apache.ignite.internal.util.IgniteUtils.unmarshalZip(IgniteUtils.java:10068) > at > org.apache.ignite.spi.discovery.tcp.internal.DiscoveryDataPacket.unmarshalData(DiscoveryDataPacket.java:292) > at > org.apache.ignite.spi.discovery.tcp.internal.DiscoveryDataPacket.unmarshalGridData(DiscoveryDataPacket.java:154) > at > org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi.onExchange(TcpDiscoverySpi.java:2065) > at > org.apache.ignite.spi.discovery.tcp.ServerImpl$RingMessageWorker.processNodeAddFinishedMessage(ServerImpl.java:4882) > at > org.apache.ignite.spi.discovery.tcp.ServerImpl$RingMessageWorker.processMessage(ServerImpl.java:2964) > at > org.apache.ignite.spi.discovery.tcp.ServerImpl$RingMessageWorker.processMessage(ServerImpl.java:2696) > at > org.apache.ignite.spi.discovery.tcp.ServerImpl$MessageWorker.body(ServerImpl.java:7527) > at > org.apache.ignite.spi.discovery.tcp.ServerImpl$RingMessageWorker.body(ServerImpl.java:2818) > at > org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:120) > at > org.apache.ignite.spi.discovery.tcp.ServerImpl$MessageWorkerThread.body(ServerImpl.java:7458) > at org.apache.ignite.spi.IgniteSpiThread.run(IgniteSpiThread.java:61) > Caused by: java.lang.ClassNotFoundException: > org.apache.ignite.tests.p2p.CacheDeploymentEntryEventFilterFactory > at java.net.URLClassLoader.findClass(URLClassLoader.java:381) > at java.lang.ClassLoader.loadClass(ClassLoader.java:424) > at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335) > 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:8672) > at > org.apache.ignite.marshaller.jdk.JdkMarshallerObjectInputStream.resolveClass(JdkMarshallerObjectInputStream.java:59) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1863) > at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1746) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2037) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1568) > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:428) > at > org.apache.ignite.internal.processors.cache.query.continuous.CacheContinuousQueryHandlerV2.readExternal(CacheContinuousQueryHandlerV2.java:179) > at > java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:2113) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2062) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1568) > at > java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2282) > at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2206) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2064) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1568) > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:428) > at java.util.HashMap.readObject(HashMap.java:1409) > at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:498) > at > java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1158) > at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2173) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2064) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1568) > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:428) > at > org.apache.ignite.internal.util.IgniteUtils.readMap(IgniteUtils.java:5316) > at > org.apache.ignite.internal.processors.continuous.GridContinuousProcessor$DiscoveryData.readExternal(GridContinuousProcessor.java:2317) > at > java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:2113) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2062) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1568) > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:428) > at > org.apache.ignite.marshaller.jdk.JdkMarshaller.unmarshal0(JdkMarshaller.java:141) > ... 13 more > {noformat} -- This message was sent by Atlassian JIRA (v7.6.3#76005)