]
Galder Zamarreño commented on ISPN-7672:
----------------------------------------
Well, in a way, Hot Rod versions is the data consistency guarantee. I kinda saw it as a
replacement of any other internal versioning system...
What about having value and Hot Rod version merged into the value part that's stored
in Infinispan. Not only would it solve this problem, but it would also solve this little
annoying issue that some odd use case can happen: ISPN-4972
NonTotalOrderTxPerCacheInboundInvocationHandler throws warning when
adding cache entry using Spring Session
-----------------------------------------------------------------------------------------------------------
Key: ISPN-7672
URL:
https://issues.jboss.org/browse/ISPN-7672
Project: Infinispan
Issue Type: Bug
Components: Cloud Integrations, Spring Integration
Affects Versions: 9.0.0.CR4
Reporter: Sebastian Łaskawiec
Assignee: Galder Zamarreño
Priority: Blocker
Fix For: 9.1.0.Final
When I'm trying to add an entry using Spring Session integration with a
[transactional
cache|https://github.com/slaskawi/presentations/blob/master/2017_spring_s...],
the server throws a warning:
{code}
[transactions-repository-1-2cbrv] 06:53:40,773 WARN
[org.infinispan.remoting.inboundhandler.NonTotalOrderTxPerCacheInboundInvocationHandler]
(remote-thread--p2-t18) ISPN000071: Caught exception when handling command
DistributedExecuteCommand [cache=Cache 'sessions'@transactions-repository-1-2cbrv,
keys=[], callable=ClusterEventCallable{identifier=b345211e-fbd7-4305-b3a6-6979301e0360,
events=[ClusterEvent {type=CACHE_ENTRY_CREATED, cache=Cache
'sessions'@transactions-repository-1-2cbrv, key=[B@8c75820, value=[B@76856353,
oldValue=null, transaction=RecoveryAwareGlobalTransaction{xid=< 131077, 29, 36,
0000000000-1-1-84170374-96-629488-44-62370001349,
0000000000-1-1-84170374-96-629488-44-62370001400000000 >, internalId=562954248388609}
GlobalTx:transactions-repository-1-cwk6f:1, retryCommand=false,
origin=transactions-repository-1-cwk6f}]}]: org.infinispan.commons.CacheListenerException:
ISPN000280: Caught exception [java.lang.ClassCastException] while invoking method [public
void
org.infinispan.server.hotrod.ClientListenerRegistry$BaseClientEventSender.onCacheEvent(org.infinispan.notifications.cachelistener.event.CacheEntryEvent)]
on listener instance:
org.infinispan.server.hotrod.ClientListenerRegistry$StatelessClientEventSender@7b97a57
[transactions-repository-1-2cbrv] at
org.infinispan.notifications.impl.AbstractListenerImpl$ListenerInvocationImpl$1.run(AbstractListenerImpl.java:401)
[transactions-repository-1-2cbrv] at
org.infinispan.util.concurrent.WithinThreadExecutor.execute(WithinThreadExecutor.java:20)
[transactions-repository-1-2cbrv] at
org.infinispan.notifications.impl.AbstractListenerImpl$ListenerInvocationImpl.invoke(AbstractListenerImpl.java:419)
[transactions-repository-1-2cbrv] at
org.infinispan.notifications.cachelistener.CacheNotifierImpl$BaseCacheEntryListenerInvocation.doRealInvocation(CacheNotifierImpl.java:1512)
[transactions-repository-1-2cbrv] at
org.infinispan.notifications.cachelistener.CacheNotifierImpl$BaseCacheEntryListenerInvocation.doRealInvocation(CacheNotifierImpl.java:1508)
[transactions-repository-1-2cbrv] at
org.infinispan.notifications.cachelistener.CacheNotifierImpl$BaseCacheEntryListenerInvocation.invokeNoChecks(CacheNotifierImpl.java:1503)
[transactions-repository-1-2cbrv] at
org.infinispan.notifications.cachelistener.CacheNotifierImpl.notifyClusterListeners(CacheNotifierImpl.java:711)
[transactions-repository-1-2cbrv] at
org.infinispan.notifications.cachelistener.cluster.ClusterEventCallable.call(ClusterEventCallable.java:49)
[transactions-repository-1-2cbrv] at
org.infinispan.notifications.cachelistener.cluster.ClusterEventCallable.call(ClusterEventCallable.java:25)
[transactions-repository-1-2cbrv] at
org.infinispan.commands.read.DistributedExecuteCommand.invokeAsync(DistributedExecuteCommand.java:99)
[transactions-repository-1-2cbrv] at
org.infinispan.remoting.inboundhandler.BasePerCacheInboundInvocationHandler.invokeCommand(BasePerCacheInboundInvocationHandler.java:90)
[transactions-repository-1-2cbrv] at
org.infinispan.remoting.inboundhandler.BaseBlockingRunnable.invoke(BaseBlockingRunnable.java:90)
[transactions-repository-1-2cbrv] at
org.infinispan.remoting.inboundhandler.BaseBlockingRunnable.runAsync(BaseBlockingRunnable.java:68)
[transactions-repository-1-2cbrv] at
org.infinispan.remoting.inboundhandler.BaseBlockingRunnable.run(BaseBlockingRunnable.java:40)
[transactions-repository-1-2cbrv] at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[transactions-repository-1-2cbrv] at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[transactions-repository-1-2cbrv] at java.lang.Thread.run(Thread.java:745)
[transactions-repository-1-2cbrv] Caused by: java.lang.ClassCastException:
org.infinispan.container.versioning.SimpleClusteredVersion cannot be cast to
org.infinispan.container.versioning.NumericVersion
[transactions-repository-1-2cbrv] at
org.infinispan.server.hotrod.ClientListenerRegistry$BaseClientEventSender.onCacheEvent(ClientListenerRegistry.java:363)
[transactions-repository-1-2cbrv] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
[transactions-repository-1-2cbrv] at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[transactions-repository-1-2cbrv] at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[transactions-repository-1-2cbrv] at java.lang.reflect.Method.invoke(Method.java:498)
[transactions-repository-1-2cbrv] at
org.infinispan.notifications.impl.AbstractListenerImpl$ListenerInvocationImpl$1.run(AbstractListenerImpl.java:396)
[transactions-repository-1-2cbrv] ... 16 more
[transactions-repository-1-2cbrv]
{code}
This didn't happen in {{CR2}} release, so there must be something that changed since
then. I also noticed that this sometimes leads to exceptions in the Hot Rod client.