]
Sebastian Łaskawiec edited comment on ISPN-6883 at 7/22/16 1:30 AM:
--------------------------------------------------------------------
Hey [~NadirX]! I assigned this one to you since you added most of the implementation to
the Remote Cache Store. You will probably have an idea if this is a valid use case or
not.
Remote Cache Store does does't work properly in compatibility
mode
------------------------------------------------------------------
Key: ISPN-6883
URL:
https://issues.jboss.org/browse/ISPN-6883
Project: Infinispan
Issue Type: Bug
Components: Loaders and Stores
Affects Versions: 9.0.0.Alpha3
Reporter: Sebastian Łaskawiec
Assignee: Tristan Tarrant
Currently we can't use Remote Cache Store for Caches populated using REST with
compatibility mode.
The configuration for source cache looks like the following:
{code}
<distributed-cache name="default" mode="SYNC"
segments="20" owners="2" remote-timeout="30000"
start="EAGER">
<locking acquire-timeout="30000" concurrency-level="1000"
striping="false"/>
<transaction mode="NONE"/>
<compatibility enabled="true" />
</distributed-cache>
{code}
Destination cache:
{code}
<distributed-cache name="default" mode="SYNC"
segments="20" owners="2" remote-timeout="30000"
start="EAGER">
<locking acquire-timeout="30000" concurrency-level="1000"
striping="false"/>
<transaction mode="NONE"/>
<compatibility enabled="true" />
<remote-store cache="default" hotrod-wrapping="true"
read-only="true">
<remote-server outbound-socket-binding="remote-store-hotrod-server"
/>
</remote-store>
</distributed-cache>
{code}
With the configuration above, when performing [Rolling
Upgrade|http://infinispan.org/docs/stable/user_guide/user_guide.html#steps_2] procedure I
get:
{code}
03:38:43,025 ERROR [org.infinispan.interceptors.impl.InvocationContextInterceptor]
(nioEventLoopGroup-7-1) ISPN000136: Error executing command GetCacheEntryCommand, writing
keys []: java.lang.ClassCastException: java.lang.String cannot be cast to [B
at
org.infinispan.persistence.remote.wrapper.HotRodEntryMarshaller.objectToByteBuffer(HotRodEntryMarshaller.java:28)
at
org.infinispan.client.hotrod.impl.RemoteCacheImpl.obj2bytes(RemoteCacheImpl.java:494)
at
org.infinispan.client.hotrod.impl.RemoteCacheImpl.getWithMetadata(RemoteCacheImpl.java:208)
at org.infinispan.persistence.remote.RemoteStore.load(RemoteStore.java:109)
at
org.infinispan.persistence.manager.PersistenceManagerImpl.loadFromAllStores(PersistenceManagerImpl.java:455)
at
org.infinispan.persistence.PersistenceUtil.loadAndCheckExpiration(PersistenceUtil.java:113)
at
org.infinispan.persistence.PersistenceUtil.lambda$loadAndStoreInDataContainer$0(PersistenceUtil.java:98)
at
org.infinispan.container.DefaultDataContainer.lambda$compute$3(DefaultDataContainer.java:325)
at
org.infinispan.commons.util.concurrent.jdk8backported.EquivalentConcurrentHashMapV8.compute(EquivalentConcurrentHashMapV8.java:1873)
at org.infinispan.container.DefaultDataContainer.compute(DefaultDataContainer.java:324)
at
org.infinispan.persistence.PersistenceUtil.loadAndStoreInDataContainer(PersistenceUtil.java:91)
at
org.infinispan.interceptors.impl.CacheLoaderInterceptor.loadInContext(CacheLoaderInterceptor.java:352)
at
org.infinispan.interceptors.impl.CacheLoaderInterceptor.loadIfNeeded(CacheLoaderInterceptor.java:347)
at
org.infinispan.interceptors.impl.CacheLoaderInterceptor.visitDataCommand(CacheLoaderInterceptor.java:206)
at
org.infinispan.interceptors.impl.CacheLoaderInterceptor.visitGetCacheEntryCommand(CacheLoaderInterceptor.java:150)
at
org.infinispan.interceptors.impl.CacheLoaderInterceptor.visitGetCacheEntryCommand(CacheLoaderInterceptor.java:88)
at
org.infinispan.commands.read.GetCacheEntryCommand.acceptVisitor(GetCacheEntryCommand.java:40)
at
org.infinispan.interceptors.DDAsyncInterceptor.visitCommand(DDAsyncInterceptor.java:53)
at
org.infinispan.interceptors.impl.BaseAsyncInvocationContext.invokeInterceptorsSync(BaseAsyncInvocationContext.java:314)
at
org.infinispan.interceptors.impl.BaseAsyncInvocationContext.forkInvocationSync(BaseAsyncInvocationContext.java:98)
at
org.infinispan.interceptors.impl.BaseAsyncInvocationContext.invokeForkAndHandlerSync(BaseAsyncInvocationContext.java:474)
at
org.infinispan.interceptors.impl.BaseAsyncInvocationContext.afterVisit(BaseAsyncInvocationContext.java:463)
at
org.infinispan.interceptors.impl.BaseAsyncInvocationContext.invokeInterceptorsSync(BaseAsyncInvocationContext.java:329)
at
org.infinispan.interceptors.impl.BaseAsyncInvocationContext.invokeSync(BaseAsyncInvocationContext.java:282)
at
org.infinispan.interceptors.impl.AsyncInterceptorChainImpl.invoke(AsyncInterceptorChainImpl.java:236)
at org.infinispan.cache.impl.CacheImpl.getCacheEntry(CacheImpl.java:433)
at org.infinispan.cache.impl.CacheImpl.getCacheEntry(CacheImpl.java:439)
at
org.infinispan.cache.impl.AbstractDelegatingAdvancedCache.getCacheEntry(AbstractDelegatingAdvancedCache.java:216)
at org.infinispan.rest.RestCacheManager.getInternalEntry(RestCacheManager.scala:58)
at org.infinispan.rest.Server$$anonfun$getEntry$1.apply(Server.scala:90)
at org.infinispan.rest.Server$$anonfun$getEntry$1.apply(Server.scala:89)
at org.infinispan.rest.Server.protectCacheNotFound(Server.scala:498)
at org.infinispan.rest.Server.getEntry(Server.scala:89)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:139)
at
org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:295)
at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:249)
at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:236)
at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:395)
at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:202)
at
org.jboss.resteasy.plugins.server.netty.RequestDispatcher.service(RequestDispatcher.java:83)
at
org.jboss.resteasy.plugins.server.netty.RequestHandler.channelRead0(RequestHandler.java:53)
at
io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
at
io.netty.channel.ChannelHandlerInvokerUtil.invokeChannelReadNow(ChannelHandlerInvokerUtil.java:83)
at
io.netty.channel.DefaultChannelHandlerInvoker$7.run(DefaultChannelHandlerInvoker.java:159)
at
io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:339)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:373)
at
io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:742)
at
io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:145)
at java.lang.Thread.run(Thread.java:745)
{code}