]
Galder Zamarreño commented on ISPN-7672:
----------------------------------------
Hmmmm, why would the server be configured with optimistic transactional caches? The client
has no method to start a transaction or batch and then commit it, so taking in account
each possible (implicit) transaction right now would contain just one operation within it,
what would be the sense of using optimistic transactions?
Optimistic transactions are normally used to avoid locking a key for the duration of the
tx and instead relying on version checks at the end of the transaction. With HR, since
only a single operation can be part of the tx, I hardly see much benefit to using
optimistic locking since the lock duration would be the minimal it can be.
Am I missing something?
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.0.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.