]
Pedro Ruivo commented on ISPN-7672:
-----------------------------------
I think we have a design flaw with our {{Metadata}}. {{Metadata}} exposes the {{version}}
and it shouldn't. We use versioning internally to keep the data consistent (currently
write-skew checks, in the future, eventual consistent and the triangle will probably need
versions as well) and it can allow a user to replace or remove it. It simply would create
inconsistencies.
In other hand, Hot Rod creates and manages it own version (it looks for conditional
commands) but it should have its own {{Metadata}}'s implementation where it can store
the version without messing with the internal version. I think this would solve the
problem but in the future, we need to remove {{Metadata.version()}} from public access.
[~galder.zamarreno], since you know Hot Rod internals better than me, correct me if
I'm wrong :)
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.