AbstractSerializer and ClassNotFoundException

156 views
Skip to first unread message

witcher

unread,
Dec 13, 2011, 8:55:34 AM12/13/11
to Hazelcast
My applications that writes or read from hazelcast have different
storage classes. After some time of working, on nodes that doesn`t
have and needs some storage classes (they are note readed and writed
from that instance), apears such errors.
Dec 12, 2011 8:39:48 AM com.hazelcast.nio.AbstractSerializer
SEVERE: com.sistyma.tables.ExposureManagerResult
java.lang.ClassNotFoundException:
com.sistyma.tables.ExposureManagerResult
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:
301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at
com.hazelcast.nio.AbstractSerializer.loadClass(AbstractSerializer.java:
83)
at
com.hazelcast.nio.AbstractSerializer.loadClass(AbstractSerializer.java:
61)
at com.hazelcast.nio.AbstractSerializer
$1.resolveClass(AbstractSerializer.java:92)
at
java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:
1574)
at
java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1495)
at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:
1731)
at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
at
java.io.ObjectInputStream.readUnshared(ObjectInputStream.java:440)
at com.hazelcast.nio.DefaultSerializer
$ObjectSerializer.readNormal(DefaultSerializer.java:383)
at com.hazelcast.nio.DefaultSerializer
$ObjectSerializer.read(DefaultSerializer.java:353)
at
com.hazelcast.nio.DefaultSerializer.read(DefaultSerializer.java:134)
at
com.hazelcast.nio.CustomSerializerAdapter.read(CustomSerializerAdapter.java:
33)
at
com.hazelcast.nio.AbstractSerializer.toObject(AbstractSerializer.java:
116)
at
com.hazelcast.nio.AbstractSerializer.toObject(AbstractSerializer.java:
146)
at com.hazelcast.nio.Serializer.readObject(Serializer.java:72)
at
com.hazelcast.impl.ThreadContext.toObject(ThreadContext.java:103)
at com.hazelcast.nio.IOUtil.toObject(IOUtil.java:149)
at com.hazelcast.impl.BlockingQueueManager
$GetValueKeysCallable.call(BlockingQueueManager.java:381)
at com.hazelcast.impl.BlockingQueueManager
$GetValueKeysCallable.call(BlockingQueueManager.java:364)
at com.hazelcast.impl.ExecutorManager
$RequestExecutor.run(ExecutorManager.java:208)
at com.hazelcast.impl.executor.ParallelExecutorService
$ParallelExecutorImpl
$ExecutionSegment.doRun(ParallelExecutorService.java:214)
at com.hazelcast.impl.executor.ParallelExecutorService
$ParallelExecutorImpl
$ExecutionSegment.run(ParallelExecutorService.java:204)
at java.util.concurrent.ThreadPoolExecutor
$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor
$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)

hazelcast is 1.9.4.4 on 1.9.1 evrything was normal.

Mehmet Dogan

unread,
Dec 15, 2011, 2:29:01 AM12/15/11
to haze...@googlegroups.com
Are you using one of IList.remove(object), IList.contains(object), IList.indexOf(object), IList.lastIndexOf(object)?

These operations are cause of deserialization of data on that unrelated node.
Hazelcast needs to deserialize binary data to real object and do equals check on owner node of the item.

@mmdogan





--
You received this message because you are subscribed to the Google Groups "Hazelcast" group.
To post to this group, send email to haze...@googlegroups.com.
To unsubscribe from this group, send email to hazelcast+...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/hazelcast?hl=en.


Joe Planisky

unread,
Dec 15, 2011, 9:15:44 AM12/15/11
to haze...@googlegroups.com
SQL queries on IMap value objects also deserialize data and require all nodes to have access to the class of the value objects.

--
Joe P

Mehmet Dogan

unread,
Dec 15, 2011, 9:35:04 AM12/15/11
to haze...@googlegroups.com
Sure they do. It is best all nodes to have all required classed by any of them. I just mentioned only List those operations because 'GetValueKeysCallable' was in the stack trace and that is used by IList operations. 

@mmdogan




witcher

unread,
Dec 16, 2011, 11:15:02 AM12/16/11
to Hazelcast
No. I Only use maps, and I use only that maps, that storage classes I
have in application.

Mehmet Dogan

unread,
Dec 16, 2011, 1:09:01 PM12/16/11
to haze...@googlegroups.com

What I asking was, do you use any of those IList operations on any of your other nodes?

The class 'GetValueKeysCallable', seen on your stack trace, is only used for IList operations.

@mmdogan

witcher

unread,
Dec 16, 2011, 2:27:49 PM12/16/11
to Hazelcast
Yes, in one of nodes, realy was used IList.
But what about this?

Dec 13, 2011 1:54:34 PM com.hazelcast.nio.AbstractSerializer
SEVERE: com.sistyma.storageclasses.PriceAndSize
java.lang.ClassNotFoundException:
com.sistyma.storageclasses.PriceAndSize

at java.io.ObjectInputStream.readObject(ObjectInputStream.java:
350)
at java.util.ArrayList.readObject(ArrayList.java:593)
at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1848)
at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:
1752)
at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:
350)
at java.util.HashMap.readObject(HashMap.java:1030)
at sun.reflect.GeneratedMethodAccessor10.invoke(Unknown
Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1848)
at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:
1752)


at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
at
java.io.ObjectInputStream.readUnshared(ObjectInputStream.java:440)
at com.hazelcast.nio.DefaultSerializer
$ObjectSerializer.readNormal(DefaultSerializer.java:383)
at com.hazelcast.nio.DefaultSerializer
$ObjectSerializer.read(DefaultSerializer.java:353)
at
com.hazelcast.nio.DefaultSerializer.read(DefaultSerializer.java:134)
at
com.hazelcast.nio.CustomSerializerAdapter.read(CustomSerializerAdapter.java:
33)
at
com.hazelcast.nio.AbstractSerializer.toObject(AbstractSerializer.java:
116)
at
com.hazelcast.nio.AbstractSerializer.toObject(AbstractSerializer.java:
146)
at com.hazelcast.nio.Serializer.readObject(Serializer.java:72)
at
com.hazelcast.impl.ThreadContext.toObject(ThreadContext.java:103)
at com.hazelcast.nio.IOUtil.toObject(IOUtil.java:149)

at com.hazelcast.impl.BaseManager
$RequestBasedCall.getResultAsObject(BaseManager.java:384)
at com.hazelcast.impl.BaseManager
$ResponseQueueCall.getResultAsObject(BaseManager.java:455)
at com.hazelcast.impl.BaseManager
$RequestBasedCall.getResultAsObject(BaseManager.java:368)
at com.hazelcast.impl.BaseManager
$ResponseQueueCall.getResultAsObject(BaseManager.java:455)
at com.hazelcast.impl.ConcurrentMapManager
$MPut.txnalPut(ConcurrentMapManager.java:1688)
at com.hazelcast.impl.ConcurrentMapManager
$MPut.txnalPut(ConcurrentMapManager.java:1634)
at com.hazelcast.impl.ConcurrentMapManager
$MPut.put(ConcurrentMapManager.java:1531)
at com.hazelcast.impl.FactoryImpl$MProxyImpl
$MProxyReal.put(FactoryImpl.java:3512)
at com.hazelcast.impl.FactoryImpl$MProxyImpl
$MProxyReal.put(FactoryImpl.java:3492)
at com.hazelcast.impl.FactoryImpl
$MProxyImpl.put(FactoryImpl.java:3065)
at com.hazelcast.impl.FactoryImpl
$MProxyImpl.put(FactoryImpl.java:3019)
at com.hazelcast.impl.ConcurrentMapManager
$PutAllCallable.call(ConcurrentMapManager.java:860)
at com.hazelcast.impl.ConcurrentMapManager
$PutAllCallable.call(ConcurrentMapManager.java:830)


at com.hazelcast.impl.ExecutorManager
$RequestExecutor.run(ExecutorManager.java:208)
at com.hazelcast.impl.executor.ParallelExecutorService
$ParallelExecutorImpl
$ExecutionSegment.doRun(ParallelExecutorService.java:214)
at com.hazelcast.impl.executor.ParallelExecutorService
$ParallelExecutorImpl
$ExecutionSegment.run(ParallelExecutorService.java:204)
at java.util.concurrent.ThreadPoolExecutor
$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor
$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)

On 16 дек, 20:09, Mehmet Dogan <meh...@hazelcast.com> wrote:
> What I asking was, do you use any of those IList operations on any of your
> other nodes?
>
> The class 'GetValueKeysCallable', seen on your stack trace, is only used
> for IList operations.
>
> @mmdogan
>

Mehmet Dogan

unread,
Dec 19, 2011, 1:54:10 AM12/19/11
to haze...@googlegroups.com
IMap.putAll() is designed over IMap.put operation which in some way calls put operation on related node for each key/value. Because put operation returns old value for that key, if there is an old value Hazelcast deserializes binary value to object. And in your case if that class does not exist on that node, operation throws ClassNotFoundException. 

@mmdogan
Reply all
Reply to author
Forward
0 new messages