]
William Burns commented on ISPN-8719:
-------------------------------------
I believe we only guarantee a client working if it is same or older than the server.
Otherwise our newer clients would have to retain information for older protocols (which is
the job of the server).
Error "ISPN006016: Factory
'org.infinispan.server.hotrod.HotRodServer$ToEmptyBytesKeyValueFilterConverter'
not found in server" when using remoteCache version 9 against infinispan-server
version 8
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Key: ISPN-8719
URL:
https://issues.jboss.org/browse/ISPN-8719
Project: Infinispan
Issue Type: Bug
Affects Versions: 9.2.0.CR1
Reporter: Marek Posolda
Assignee: Gustavo Fernandes
Attachments: InfinispanRemote.java
Steps to reproduce:
1) Use infinispan server version 8.2.6 (or JDG server 7.1.0) and start it.
{code}
cd JDG_HOME/bin
./standalone.sh
{code}
2) Create sample java project having dependency on latest dependency 9.2.0.CR1 in
pom.xml:
{code}
<dependencies>
<dependency>
<groupId>org.infinispan</groupId>
<artifactId>infinispan-core</artifactId>
<version>9.2.0.CR1</version>
</dependency>
<dependency>
<groupId>org.infinispan</groupId>
<artifactId>infinispan-cachestore-remote</artifactId>
<version>9.2.0.CR1</version>
</dependency>
</dependencies>
{code}
3) Add one simple java class based on the tutorial:
http://infinispan.org/tutorials/simple/remote/ . The only difference is that I use hotRod
protocolVersion 2.5 and calling:
{code}
remoteCache.keySet().iterator().hasNext()
{code}. I am attaching the class in attachement.
4) Run the class. Seeing exception in both server log and on client-side.
Server exception
{code}
10:44:20,365 ERROR [org.infinispan.server.hotrod.CacheDecodeContext]
(HotRodServerWorker-6-1) ISPN005003: Exception reported: java.lang.IllegalStateException:
ISPN006016: Factory
'org.infinispan.server.hotrod.HotRodServer$ToEmptyBytesKeyValueFilterConverter'
not found in server
at
org.infinispan.server.hotrod.iteration.DefaultIterationManager.getFactory(DefaultIterationManager.java:148)
at
org.infinispan.server.hotrod.iteration.DefaultIterationManager.start(DefaultIterationManager.java:131)
at org.infinispan.server.hotrod.ContextHandler.realRead(ContextHandler.java:175)
at
org.infinispan.server.hotrod.ContextHandler.lambda$channelRead0$1(ContextHandler.java:57)
at org.infinispan.server.hotrod.ContextHandler$$Lambda$86/1492247987.run(Unknown
Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at
io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:144)
at java.lang.Thread.run(Thread.java:745)
{code}
Client exception:
{code}
Jan 24, 2018 10:44:20 AM org.infinispan.client.hotrod.impl.protocol.Codec20
checkForErrorsInResponseStatus
WARN: ISPN004005: Error received from the server: java.lang.IllegalStateException:
ISPN006016: Factory
'org.infinispan.server.hotrod.HotRodServer$ToEmptyBytesKeyValueFilterConverter'
not found in server
Exception in thread "main"
org.infinispan.client.hotrod.exceptions.HotRodClientException:Request for messageId=5
returned server error (status=0x85): java.lang.IllegalStateException: ISPN006016: Factory
'org.infinispan.server.hotrod.HotRodServer$ToEmptyBytesKeyValueFilterConverter'
not found in server
at
org.infinispan.client.hotrod.impl.protocol.Codec20.checkForErrorsInResponseStatus(Codec20.java:408)
at
org.infinispan.client.hotrod.impl.protocol.Codec20.readPartialHeader(Codec20.java:162)
at org.infinispan.client.hotrod.impl.protocol.Codec20.readHeader(Codec20.java:148)
at
org.infinispan.client.hotrod.impl.operations.HotRodOperation.readHeaderAndValidate(HotRodOperation.java:60)
at
org.infinispan.client.hotrod.impl.operations.IterationStartOperation.executeOperation(IterationStartOperation.java:72)
at
org.infinispan.client.hotrod.impl.operations.IterationStartOperation.executeOperation(IterationStartOperation.java:21)
at
org.infinispan.client.hotrod.impl.operations.RetryOnFailureOperation.execute(RetryOnFailureOperation.java:56)
at
org.infinispan.client.hotrod.impl.iteration.RemoteCloseableIterator.startInternal(RemoteCloseableIterator.java:127)
at
org.infinispan.client.hotrod.impl.iteration.RemoteCloseableIterator.start(RemoteCloseableIterator.java:140)
at
org.infinispan.client.hotrod.impl.RemoteCacheImpl.retrieveEntries(RemoteCacheImpl.java:162)
at
org.infinispan.client.hotrod.impl.RemoteCacheImpl.retrieveEntries(RemoteCacheImpl.java:168)
at
org.infinispan.client.hotrod.impl.RemoteCacheImpl.retrieveEntries(RemoteCacheImpl.java:173)
at
org.infinispan.client.hotrod.impl.RemoteCacheImpl$KeySet.iterator(RemoteCacheImpl.java:553)
at org.mposolda.ispn.InfinispanRemote.main(InfinispanRemote.java:34)
{code}
Indeed, When looking at this line of class RemoteCacheImpl, I see that it references the
class, which seem that it was added in HotRodServer version 9. This looks like the cause
of the error:
https://github.com/infinispan/infinispan/blob/master/client/hotrod-client...