[infinispan-issues] [JBoss JIRA] Commented: (ISPN-666) MultipleRpcCommand being serialized ignoring the @Marshaller
Galder Zamarreño (JIRA)
jira-events at lists.jboss.org
Thu Oct 21 11:37:54 EDT 2010
[ https://jira.jboss.org/browse/ISPN-666?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12558549#action_12558549 ]
Galder Zamarreño commented on ISPN-666:
---------------------------------------
For future reference, he's further analysis I did on this JIRA:
- https://jira.jboss.org/browse/ISPN-666: As said in the JIRA, there're a couple of places from where JBoss Marshalling can return NotSerializableException when marshalling:
a) Within JBoss Marshalling, an instance of org.jboss.marshalling.util.IdentityIntMap maintains the known classes for which JBoss Marshalling can provide its own efficient marshalling, i.e. ArrayList...etc. Now, when this map is queried and the class cannot be found (i.e. a user or Infinispan defined object is returned), the map should return -1. Now, if the map ended up returning anything other than -1 for the case of user/Infinispan objects, a NotSerializableException would be thrown. This would mean that somehow that IdentityIntMap is getting corrupted.
b) The other place from which NSE can be thrown in this case would be if ConstantObjectTable.getObjectWriter() returned null for MultipleRpcCommand. Now, for that to happen, MultipleRpcCommand would need to be missing from writers map in ConstantObjectTable. Now, ReplicationQueue, which is the one throwing this error, starts (priority = 10) after VAM (priority = 9), so can't see how writers map could be corrupted or half empty. Maybe another case of multiple cacheManager.getCache() ending up with some weird writers map? Can't say.
> MultipleRpcCommand being serialized ignoring the @Marshaller
> ------------------------------------------------------------
>
> Key: ISPN-666
> URL: https://jira.jboss.org/browse/ISPN-666
> Project: Infinispan
> Issue Type: Bug
> Components: Marshalling, RPC
> Affects Versions: 4.2.0.ALPHA2
> Reporter: Sanne Grinovero
> Assignee: Galder Zamarreño
> Priority: Critical
>
> I'm getting the following stacktrace:
> 2010-09-23 00:10:28,232 ERROR [ReplicationQueue] (Scheduled-ReplicationQueueThread-1) failed replicating 1 elements in replication queue
> org.infinispan.CacheException: java.lang.RuntimeException: Failure to marshal argument(s)
> at org.infinispan.remoting.transport.jgroups.CommandAwareRpcDispatcher.invokeRemoteCommands(CommandAwareRpcDispatcher.java:122)
> at org.infinispan.remoting.transport.jgroups.JGroupsTransport.invokeRemotely(JGroupsTransport.java:403)
> at org.infinispan.remoting.rpc.RpcManagerImpl.invokeRemotely(RpcManagerImpl.java:100)
> at org.infinispan.remoting.rpc.RpcManagerImpl.invokeRemotely(RpcManagerImpl.java:128)
> at org.infinispan.remoting.ReplicationQueueImpl.flush(ReplicationQueueImpl.java:126)
> at org.infinispan.remoting.ReplicationQueueImpl$1.run(ReplicationQueueImpl.java:83)
> at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
> at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)
> at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)
> at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)
> at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:181)
> at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:205)
> 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:619)
> Caused by: java.lang.RuntimeException: Failure to marshal argument(s)
> at org.infinispan.remoting.transport.jgroups.CommandAwareRpcDispatcher$ReplicationTask.marshallCall(CommandAwareRpcDispatcher.java:242)
> at org.infinispan.remoting.transport.jgroups.CommandAwareRpcDispatcher$ReplicationTask.call(CommandAwareRpcDispatcher.java:266)
> at org.infinispan.remoting.transport.jgroups.CommandAwareRpcDispatcher.invokeRemoteCommands(CommandAwareRpcDispatcher.java:120)
> ... 14 more
> Caused by: org.infinispan.marshall.NotSerializableException: org.infinispan.commands.remote.MultipleRpcCommand
> Caused by: an exception which occurred:
> in object org.infinispan.commands.remote.MultipleRpcCommand at dcf4f7b7
> On the default cache, being configured as :
> <default>
> <clustering mode="replication">
> <async useReplQueue="true" replQueueInterval="300" asyncMarshalling="false" />
> </clustering>
> <locking isolationLevel="READ_COMMITTED" concurrencyLevel="1000" lockAcquisitionTimeout="6000" writeSkewCheck="false" useLockStriping="false" />
> <jmxStatistics enabled="false" />
> <eviction maxEntries="-1" strategy="NONE" />
> <expiration maxIdle="-1" />
> </default>
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the infinispan-issues
mailing list