B. T. created IGNITE-17866:
------------------------------
Summary: ScanQuery with IgniteBiPredicate fails with Exception
Key: IGNITE-17866
URL: https://issues.apache.org/jira/browse/IGNITE-17866
Project: Ignite
Issue Type: Bug
Components: thin client
Affects Versions: 2.13
Environment: Java version 11. Ignite is configured with standard
settings with client jar supplied in \{IGNITE_HOME}/libs directory.
Reporter: B. T.
Ignite started with all the client classes made available in the
\{IGNITE_HOME}/libs directory.
The ScanQuery works fine without predicate from java thin client, but it fails
with below exception when IgniteBiPredicate is supplied.
IgniteBiPredicate is being supplied as standard out of the box as described in
the documentation, no custom implementation of IgniteBiPredicate supplied.
Java version 11.
*Documentation Reference:*
[https://ignite.apache.org/docs/2.13.0/thin-clients/java-thin-client#executing-scan-queries]
{{ClientCache<Integer, Person> personCache =
client.getOrCreateCache("personCache");Query<Cache.Entry<Integer, Person>> qry
= new ScanQuery<Integer, Person>((i, p) -> p.getName().contains("Smith"));try
(QueryCursor<Cache.Entry<Integer, Person>> cur = personCache.query(qry)) {for
(Cache.Entry<Integer, Person> entry : cur) {// Process the entry ...}}}}
*Exception on server:*
[client-connector-#88][BinaryContext] Failed to deserialize object
[typeName=java.lang.invoke.SerializedLambda]
class org.apache.ignite.binary.BinaryObjectException: Failed to execute
readResolve() method on SerializedLambda
at
org.apache.ignite.internal.binary.BinaryClassDescriptor.read(BinaryClassDescriptor.java:961)
at
org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1779)
at
org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1731)
at
org.apache.ignite.internal.binary.BinaryObjectImpl.deserializeValue(BinaryObjectImpl.java:821)
at
org.apache.ignite.internal.binary.BinaryObjectImpl.deserialize(BinaryObjectImpl.java:662)
at
org.apache.ignite.internal.processors.platform.client.cache.ClientCacheScanQueryRequest.createFilter(ClientCacheScanQueryRequest.java:117)
at
org.apache.ignite.internal.processors.platform.client.cache.ClientCacheScanQueryRequest.process(ClientCacheScanQueryRequest.java:83)
at
org.apache.ignite.internal.processors.platform.client.ClientRequestHandler.handle(ClientRequestHandler.java:101)
at
org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.onMessage(ClientListenerNioListener.java:204)
at
org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.onMessage(ClientListenerNioListener.java:55)
at
org.apache.ignite.internal.util.nio.GridNioFilterChain$TailFilter.onMessageReceived(GridNioFilterChain.java:279)
at
org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedMessageReceived(GridNioFilterAdapter.java:109)
at
org.apache.ignite.internal.util.nio.GridNioAsyncNotifyFilter$3.body(GridNioAsyncNotifyFilter.java:97)
at
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125)
at
org.apache.ignite.internal.util.worker.GridWorkerPool$1.run(GridWorkerPool.java:70)
at
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.reflect.InvocationTargetException
at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at
org.apache.ignite.internal.binary.BinaryClassDescriptor.read(BinaryClassDescriptor.java:950)
... 17 more
Caused by: java.lang.NoSuchMethodException:
*Exception on Thin Client:*
org.apache.ignite.client.ClientException: Ignite failed to process request [7]:
Failed to deserialize object [typeName=java.lang.invoke.SerializedLambda]
(server status code [1])
at
org.apache.ignite.internal.client.thin.TcpClientChannel.convertException(TcpClientChannel.java:359)
at
org.apache.ignite.internal.client.thin.TcpClientChannel.receive(TcpClientChannel.java:319)
at
org.apache.ignite.internal.client.thin.TcpClientChannel.service(TcpClientChannel.java:237)
at
org.apache.ignite.internal.client.thin.ReliableChannel.lambda$service$1(ReliableChannel.java:167)
at
org.apache.ignite.internal.client.thin.ReliableChannel.applyOnDefaultChannel(ReliableChannel.java:764)
at
org.apache.ignite.internal.client.thin.ReliableChannel.applyOnDefaultChannel(ReliableChannel.java:731)
at
org.apache.ignite.internal.client.thin.ReliableChannel.service(ReliableChannel.java:167)
at
org.apache.ignite.internal.client.thin.GenericQueryPager.next(GenericQueryPager.java:93)
at
org.apache.ignite.internal.client.thin.ClientQueryCursor$1.nextPage(ClientQueryCursor.java:93)
at
org.apache.ignite.internal.client.thin.ClientQueryCursor$1.hasNext(ClientQueryCursor.java:76)
at
com.autotrader.services.impl.IgniteClientService.query(IgniteClientService.java:212)
... 72 more
Caused by: org.apache.ignite.internal.client.thin.ClientServerError: Ignite
failed to process request [7]: Failed to deserialize object
[typeName=java.lang.invoke.SerializedLambda] (server status code [1])
at
org.apache.ignite.internal.client.thin.TcpClientChannel.processNextMessage(TcpClientChannel.java:449)
at
org.apache.ignite.internal.client.thin.TcpClientChannel.onMessage(TcpClientChannel.java:194)
at
org.apache.ignite.internal.client.thin.io.gridnioserver.GridNioClientConnection.onMessage(GridNioClientConnection.java:86)
at
org.apache.ignite.internal.client.thin.io.gridnioserver.GridNioClientListener.onMessage(GridNioClientListener.java:56)
at
org.apache.ignite.internal.client.thin.io.gridnioserver.GridNioClientListener.onMessage(GridNioClientListener.java:30)
at
org.apache.ignite.internal.util.nio.GridNioFilterChain$TailFilter.onMessageReceived(GridNioFilterChain.java:279)
at
org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedMessageReceived(GridNioFilterAdapter.java:109)
at
org.apache.ignite.internal.util.nio.GridNioCodecFilter.onMessageReceived(GridNioCodecFilter.java:116)
at
org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedMessageReceived(GridNioFilterAdapter.java:109)
at
org.apache.ignite.internal.util.nio.GridNioServer$HeadFilter.onMessageReceived(GridNioServer.java:3734)
at
org.apache.ignite.internal.util.nio.GridNioFilterChain.onMessageReceived(GridNioFilterChain.java:175)
at
org.apache.ignite.internal.util.nio.GridNioServer$ByteBufferNioClientWorker.processRead(GridNioServer.java:1211)
at
org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.processSelectedKeysOptimized(GridNioServer.java:2508)
at
org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.bodyInternal(GridNioServer.java:2273)
at
org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.body(GridNioServer.java:1910)
at
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125)
at java.base/java.lang.Thread.run(Thread.java:834)
--
This message was sent by Atlassian Jira
(v8.20.10#820010)