[ 
https://issues.apache.org/jira/browse/IGNITE-15256?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17395313#comment-17395313
 ] 

Ivan Fedorenkov commented on IGNITE-15256:
------------------------------------------

[~ivan.glukos] [~irakov] could you please review?

> ClassNotFoundException on attempt to invoke service method from Java 
> ThinClient after cluster failover
> ------------------------------------------------------------------------------------------------------
>
>                 Key: IGNITE-15256
>                 URL: https://issues.apache.org/jira/browse/IGNITE-15256
>             Project: Ignite
>          Issue Type: Bug
>          Components: thin client
>    Affects Versions: 2.10
>            Reporter: Ivan Fedorenkov
>            Assignee: Ivan Fedorenkov
>            Priority: Major
>             Fix For: 2.12
>
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> Say, we have a thin client that uses some ignite service. This service 
> exposes a method with an Externalizable input parameter. If cluster fails 
> over after some period of successful interactions between the cluster and the 
> client the following exception could be observed in cluster logs:
> {code:java}
> [2021-08-04 
> 23:22:44,695][ERROR][client-connector-#114%client.ReliabilityTest%][ClientListenerNioListener]
>  Failed to parse client request.
> class org.apache.ignite.binary.BinaryObjectException: Failed to unmarshal 
> object with optimized marshaller
>       at 
> org.apache.ignite.internal.binary.BinaryUtils.doReadOptimized(BinaryUtils.java:1819)
>       at 
> org.apache.ignite.internal.binary.BinaryUtils.unmarshal(BinaryUtils.java:2034)
>       at 
> org.apache.ignite.internal.binary.BinaryReaderExImpl.readObjectDetached(BinaryReaderExImpl.java:1341)
>       at 
> org.apache.ignite.internal.binary.BinaryReaderExImpl.readObjectDetached(BinaryReaderExImpl.java:1336)
>       at 
> org.apache.ignite.internal.processors.platform.client.service.ClientServiceInvokeRequest.<init>(ClientServiceInvokeRequest.java:126)
>       at 
> org.apache.ignite.internal.processors.platform.client.ClientMessageParser.decode(ClientMessageParser.java:486)
>       at 
> org.apache.ignite.internal.processors.platform.client.ClientMessageParser.decode(ClientMessageParser.java:311)
>       at 
> org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.onMessage(ClientListenerNioListener.java:164)
>       at 
> org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.onMessage(ClientListenerNioListener.java:55)
>       at 
> org.apache.ignite.internal.util.nio.GridNioFilterChain$TailFilter.onMessageReceived(GridNioFilterChain.java:279)
>       at 
> org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedMessageReceived(GridNioFilterAdapter.java:109)
>       at 
> org.apache.ignite.internal.util.nio.GridNioAsyncNotifyFilter$3.body(GridNioAsyncNotifyFilter.java:97)
>       at 
> org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125)
>       at 
> org.apache.ignite.internal.util.worker.GridWorkerPool$1.run(GridWorkerPool.java:70)
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>       at java.lang.Thread.run(Thread.java:748)
> Caused by: class 
> org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerInaccessibleClassException:
>  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=Failed to resolve class name [platformId=0, platform=Java, 
> typeId=-771474336]]
>       at 
> org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller.unmarshal0(OptimizedMarshaller.java:257)
>       at 
> org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller.unmarshal0(OptimizedMarshaller.java:225)
>       at 
> org.apache.ignite.marshaller.AbstractNodeNameAwareMarshaller.unmarshal(AbstractNodeNameAwareMarshaller.java:92)
>       at 
> org.apache.ignite.internal.binary.BinaryUtils.doReadOptimized(BinaryUtils.java:1816)
>       ... 16 more
> Caused by: java.lang.ClassNotFoundException: Failed to resolve class name 
> [platformId=0, platform=Java, typeId=-771474336]
>       at 
> org.apache.ignite.internal.MarshallerContextImpl.getClassName(MarshallerContextImpl.java:459)
>       at 
> org.apache.ignite.internal.MarshallerContextImpl.getClassName(MarshallerContextImpl.java:384)
>       at 
> org.apache.ignite.internal.MarshallerContextImpl.getClass(MarshallerContextImpl.java:371)
>       at 
> org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.descriptorFromCache(OptimizedMarshallerUtils.java:329)
>       at 
> org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.classDescriptor(OptimizedMarshallerUtils.java:274)
>       at 
> org.apache.ignite.internal.marshaller.optimized.OptimizedObjectInputStream.readObject0(OptimizedObjectInputStream.java:348)
>       at 
> org.apache.ignite.internal.marshaller.optimized.OptimizedObjectInputStream.readObjectOverride(OptimizedObjectInputStream.java:205)
>       at java.io.ObjectInputStream.readObject(ObjectInputStream.java:494)
>       at java.io.ObjectInputStream.readObject(ObjectInputStream.java:461)
>       at 
> org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller.unmarshal0(OptimizedMarshaller.java:251)
>       ... 19 more
> [2021-08-04 23:22:44,698][WARN 
> ][grid-nio-worker-client-listener-0-#90%client.ReliabilityTest%][ClientListenerProcessor]
>  Failed to shutdown socket: null
> java.nio.channels.ClosedChannelException
>       at 
> sun.nio.ch.SocketChannelImpl.shutdownOutput(SocketChannelImpl.java:796)
>       at sun.nio.ch.SocketAdaptor.shutdownOutput(SocketAdaptor.java:423)
>       at 
> org.apache.ignite.internal.util.IgniteUtils.close(IgniteUtils.java:4234)
>       at 
> org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.closeKey(GridNioServer.java:2784)
>       at 
> org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.close(GridNioServer.java:2835)
>       at 
> org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.close(GridNioServer.java:2794)
>       at 
> org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.bodyInternal(GridNioServer.java:2157)
>       at 
> org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.body(GridNioServer.java:1910)
>       at 
> org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125)
>       at java.lang.Thread.run(Thread.java:748) {code}
> Root cause: client believes that it has registered the type within the 
> cluster, but cluster can loose this information after failover if its working 
> directory gets erased.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to