I experienced this issue with Ignite Core 2.17.0. The following error
log was written:
Failed to send event notification to node:
f9529bce-8137-4afb-b33e-5f3dc30eb6ab
The stacktrace points to the serializer registered in our binary
configuration:
class org.apache.ignite.IgniteCheckedException: Failed to serialize
object [typeName=org.apache.ignite.util.deque.FastSizeDeque]
at
org.apache.ignite.internal.util.IgniteUtils.marshal(IgniteUtils.java:10864)
at
org.apache.ignite.internal.processors.continuous.GridContinuousProcessor.sendWithRetries(GridContinuousProcessor.java:1951)
at
org.apache.ignite.internal.processors.continuous.GridContinuousProcessor.sendWithRetries(GridContinuousProcessor.java:1932)
at
org.apache.ignite.internal.processors.continuous.GridContinuousProcessor.sendWithRetries(GridContinuousProcessor.java:1914)
at
org.apache.ignite.internal.processors.continuous.GridContinuousProcessor.sendNotification(GridContinuousProcessor.java:1319)
at
org.apache.ignite.internal.processors.continuous.GridContinuousProcessor.addNotification(GridContinuousProcessor.java:1256)
at
org.apache.ignite.internal.GridEventConsumeHandler$2$1.run(GridEventConsumeHandler.java:250)
at
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: class org.apache.ignite.binary.BinaryObjectException: Failed
to serialize object [typeName=org.apache.ignite.util.deque.FastSizeDeque]
at
org.apache.ignite.internal.binary.BinaryClassDescriptor.write(BinaryClassDescriptor.java:916)
at
org.apache.ignite.internal.binary.BinaryWriterExImpl.marshal0(BinaryWriterExImpl.java:237)
at
org.apache.ignite.internal.binary.BinaryWriterExImpl.marshal(BinaryWriterExImpl.java:170)
at
org.apache.ignite.internal.binary.BinaryWriterExImpl.marshal(BinaryWriterExImpl.java:157)
at
org.apache.ignite.internal.binary.GridBinaryMarshaller.marshal(GridBinaryMarshaller.java:254)
at
org.apache.ignite.internal.binary.BinaryMarshaller.marshal0(BinaryMarshaller.java:84)
at
org.apache.ignite.marshaller.AbstractNodeNameAwareMarshaller.marshal(AbstractNodeNameAwareMarshaller.java:56)
at
org.apache.ignite.internal.util.IgniteUtils.marshal(IgniteUtils.java:10858)
... 9 more
Caused by: java.lang.ClassCastException: class
org.apache.ignite.util.deque.FastSizeDeque cannot be cast to class
java.io.Serializable (org.apache.ignite.util.deque.FastSizeDeque is in
unnamed module of loader
org.apache.catalina.loader.ParallelWebappClassLoader @1af7f54a;
java.io.Serializable is in module java.base of loader 'bootstrap')
at com.example.MySerializer.writeBinary(MySerializer.java:16)
at
org.apache.ignite.internal.binary.BinaryClassDescriptor.write(BinaryClassDescriptor.java:826)
... 16 more
The error had no functional impact on us. Still, it raises the question
why a non-serializable object is supposed to be handled by
BinarySerializer. We would not have expected an Ignite utility type
(FastSizeDeque) to be passed in. The stacktrace implies that the
BinaryClassDescriptorhad a BinaryWriteMode.BINARYin that case. But even
without a serializer it looks like the write process would not have been
successful because FastSizeDequeis not Binarylizable.
Could you please fix or clarify the issue?