]
Dan Berindei commented on ISPN-7672:
------------------------------------
[~pruivo] yes, that's the one.
Not long ago transactional caches weren't officially supported by the HotRod server at
all, so this isn't the first problem we have discovered in this area. The HotRod
conditional operations rely on
[{{NumericVersion}}|https://github.com/infinispan/infinispan/blob/fdc6d3cfe039c1e731525ed3a2faa7d2ce4abec9/client/hotrod-client/src/main/java/org/infinispan/client/hotrod/RemoteCache.java#L207],
so we could say they're not supported with OPT+RR+WS. IMO other operations should be
supported, including client listeners.
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: Pedro Ruivo
Priority: Critical
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.