[jira] [Commented] (IGNITE-11914) Failures to deserialize discovery data should be handled by a failure handler
[ https://issues.apache.org/jira/browse/IGNITE-11914?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16877679#comment-16877679 ] Anton Kalashnikov commented on IGNITE-11914: [~ibessonov] thanks for changes. Looks good to me. > 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 > Fix For: 2.8 > > Attachments: DiscoveryDataDeserializationFailureHanderTest.java > > Time Spent: 10m > Remaining Estimate: 0h > > 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
[jira] [Commented] (IGNITE-11914) Failures to deserialize discovery data should be handled by a failure handler
[ https://issues.apache.org/jira/browse/IGNITE-11914?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16876870#comment-16876870 ] Ivan Bessonov commented on IGNITE-11914: [~akalashnikov] thank you fore the review, I fixed everything according to your comments, please take a look. > 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 > Fix For: 2.8 > > Attachments: DiscoveryDataDeserializationFailureHanderTest.java > > Time Spent: 10m > Remaining Estimate: 0h > > 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(ObjectInputStrea
[jira] [Commented] (IGNITE-11914) Failures to deserialize discovery data should be handled by a failure handler
[ https://issues.apache.org/jira/browse/IGNITE-11914?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16876028#comment-16876028 ] Anton Kalashnikov commented on IGNITE-11914: [~ibessonov], In generall your changes looks good for me. But I have one proposal: maybe it better to avoid boolean flag(panic mark) on public api and instead use two methods such as "umarshalData" and "unmarshalDataIfPossible"(name of methods can be changed it just the example) > 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 > Fix For: 2.8 > > Attachments: DiscoveryDataDeserializationFailureHanderTest.java > > Time Spent: 10m > Remaining Estimate: 0h > > 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(Obj
[jira] [Commented] (IGNITE-11914) Failures to deserialize discovery data should be handled by a failure handler
[ https://issues.apache.org/jira/browse/IGNITE-11914?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16873967#comment-16873967 ] Ignite TC Bot commented on IGNITE-11914: {panel:title=--> Run :: All: No blockers found!|borderStyle=dashed|borderColor=#ccc|titleBGColor=#D6F7C1}{panel} [TeamCity *--> Run :: All* Results|https://ci.ignite.apache.org/viewLog.html?buildId=4204863&buildTypeId=IgniteTests24Java8_RunAll] > 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 > > Time Spent: 10m > Remaining Estimate: 0h > > 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.defaultR
[jira] [Commented] (IGNITE-11914) Failures to deserialize discovery data should be handled by a failure handler
[ https://issues.apache.org/jira/browse/IGNITE-11914?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16866601#comment-16866601 ] Denis Mekhanikov commented on IGNITE-11914: --- It's actually a tricky question, what should be done in a situation, when discovery data cannot be deserialized. I would say, that if an existing node cannot deserialize data sent from a new one, then the joining node should not be let into the cluster. If we decide to always propagate such failures to the failure handler, then one node with some class in discovery data, which is available on that node only, will be able to bring down the whole cluster. > 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 >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
[jira] [Commented] (IGNITE-11914) Failures to deserialize discovery data should be handled by a failure handler
[ https://issues.apache.org/jira/browse/IGNITE-11914?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16866594#comment-16866594 ] Denis Mekhanikov commented on IGNITE-11914: --- [~ibessonov] sorry, forgot to attach it. Fixed. > 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 >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:15
[jira] [Commented] (IGNITE-11914) Failures to deserialize discovery data should be handled by a failure handler
[ https://issues.apache.org/jira/browse/IGNITE-11914?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16865676#comment-16865676 ] Ivan Bessonov commented on IGNITE-11914: Hi [~dmekhanikov], you said that "Test is attached." but I see no attachments. Can you please provide one? Thank you! > 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 >Priority: Major > > 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) >