Hello, You can use as query filter only classes that already deployed to the server. In your case, class ConnectAndExecuteTestDataInJava only exists on the client-side and the server knows nothing about it. Unlike Ignite nodes, Ignite thin clients don't have a P2P class deployment feature.
пн, 1 мар. 2021 г. в 21:05, ChandanS <[email protected]>: > Hi, > > I am working on implementing ignite in AWS as EC2 cluster and I am > following > documentation from > " > https://www.gridgain.com/docs/latest/installation-guide/aws/manual-install-on-ec2 > " > for my POC. I am using three EC2 instances to form a cluster with > gridgain-community-8.8.1 package ("./gridgain-community-8.8.1/bin/ignite.sh > aws-static-ip-finder.xml"). I am able to start ignite as cluster, load data > in ignite cache and print the cache entries. Below is my code snippet: > > public class ConnectAndExecuteTestDataInJava { > public static void main(String args[]) throws Exception { > ConnectAndExecuteTestDataInJava igniteTestObj = new > ConnectAndExecuteTestDataInJava(); > igniteTestObj .connectToIgniteClusterAndExecuteData(); //working > fine > igniteTestObj .printIgniteCache(); //working fine > igniteTestObj .queryIgniteCache(); //not working > } > > private void connectToIgniteClusterAndExecuteData() { > try { > System.out.println("Starting the client Program"); > ClientConfiguration cfg = new > ClientConfiguration().setAddresses("XX.XXX.XX.XXX:10800"); > IgniteClient client = Ignition.startClient(cfg); > System.out.println("Connection successfull"); > > ClientCache<Integer, String> cache = > client.getOrCreateCache("myCache"); > > System.out.println("Caching data"); > for (int i = 0; i <= 100; ++i) { > cache.put(i, "String -" + i); > } > > System.out.println("Cache created with 100 sample data"); > client.close(); > } catch (Exception excp) { > excp.printStackTrace(); > } > } > > private void printIgniteCache() { > System.out.println("Creating client connection"); > ClientConfiguration cfg = new > ClientConfiguration().setAddresses("XX.XXX.XX.XXX:10800"); > System.out.println("Connection successful"); > try (IgniteClient client = Ignition.startClient(cfg)) { > System.out.println("Getting data from the cache...."); > ClientCache<Integer, String> cache = client.cache("myCache"); > System.out.println("Data retrieving...."); > > // Get data from the cache > for(int i = 0; i < cache.size(); ++i){ > System.out.println(cache.get(i)); //printing the cache > like > "String -11" > } > System.out.println("Data retrieved...."); > } catch (Exception e) { > System.out.println("Error connecting to client, program will > exit"); > e.printStackTrace(); > } > } > > private void queryIgniteCache() { > System.out.println("Creating client connection to query"); > ClientConfiguration cfg = new > ClientConfiguration().setAddresses("XX.XXX.XX.XXX:10800"); > System.out.println("Connection successful"); > try (IgniteClient client = Ignition.startClient(cfg)) { > System.out.println("Init cache...."); > ClientCache<Integer, String> cache = > client.getOrCreateCache("myCache"); > > System.out.println("Creating filter 1"); > IgniteBiPredicate<Integer, String> filter1 = (key, p) -> > key.equals(new Integer(31)); > System.out.println("Applying filter 1"); > QueryCursor<Cache.Entry<Integer, String>> qryCursor1 = > cache.query(new ScanQuery<>(filter1)); > System.out.println("Printing filter 1"); > qryCursor1.forEach( > entry -> System.out.println("Key1 = " + entry.getKey() > + > ", Value1 = " + entry.getValue())); //throwing exception here > qryCursor1.close(); > > > System.out.println("Filter data retrieved...."); > > } catch (Exception e) { > System.out.println("Error connecting to client, program will > exit"); > e.printStackTrace(); > } > } > } > > Now in the above codes, connecting to ignite cache and printing of the > cache > using for loop is working as expected, but while using Cache.Entry<Integer, > String> in queryIgniteCache() method, its throwing "Failed to deserialize > object" exception, I am running the program from another EC2 instance's > session manager terminal, below is exception stack-trace: > > Applying filter 1 > Printing filter 1 > Error connecting to client, program will exit > org.apache.ignite.client.ClientException: Ignite failed to process request > [2]: Failed to deserialize object > [typeName=java.lang.invoke.SerializedLambda] (server status code [1]) > at > > org.apache.ignite.internal.client.thin.TcpClientChannel.convertException(TcpClientChannel.java:365) > at > > org.apache.ignite.internal.client.thin.TcpClientChannel.receive(TcpClientChannel.java:326) > at > > org.apache.ignite.internal.client.thin.TcpClientChannel.service(TcpClientChannel.java:242) > at > > org.apache.ignite.internal.client.thin.ReliableChannel.lambda$service$1(ReliableChannel.java:193) > at > > org.apache.ignite.internal.client.thin.ReliableChannel.applyOnDefaultChannel(ReliableChannel.java:807) > at > > org.apache.ignite.internal.client.thin.ReliableChannel.applyOnDefaultChannel(ReliableChannel.java:775) > at > > org.apache.ignite.internal.client.thin.ReliableChannel.service(ReliableChannel.java:192) > at > > org.apache.ignite.internal.client.thin.GenericQueryPager.next(GenericQueryPager.java:72) > at > > org.apache.ignite.internal.client.thin.ClientQueryCursor$1.nextPage(ClientQueryCursor.java:92) > at > > org.apache.ignite.internal.client.thin.ClientQueryCursor$1.hasNext(ClientQueryCursor.java:75) > at java.lang.Iterable.forEach(Iterable.java:74) > at > > ConnectAndExecuteTestDataInJava.queryIgniteCache(ConnectAndExecuteTestDataInJava.java:77) > at > > ConnectAndExecuteTestDataInJava.main(ConnectAndExecuteTestDataInJava.java:19) > Caused by: org.apache.ignite.internal.client.thin.ClientServerError: Ignite > failed to process request [2]: Failed to deserialize object > [typeName=java.lang.invoke.SerializedLambda] (server status code [1]) > at > > org.apache.ignite.internal.client.thin.TcpClientChannel.processNextMessage(TcpClientChannel.java:481) > at > > org.apache.ignite.internal.client.thin.TcpClientChannel.lambda$initReceiverThread$1(TcpClientChannel.java:406) > at java.lang.Thread.run(Thread.java:748) > > > > Also, below stack-trace I am getting from one of the three EC2 ignite node > instances: > > [17:02:01] Topology snapshot [ver=3, locNode=04111d3b, servers=3, > clients=0, > state=ACTIVE, CPUs=6, offheap=2.3GB, heap=2.6GB] > [17:02:01] ^-- Baseline [id=0, size=3, online=3, offline=0] > [17:02:11] New version is available at gridgain.com: 8.8.2 > [17:03:33,207][SEVERE][client-connector-#73][BinaryContext] Failed to > deserialize object [typeName=java.lang.invoke.SerializedLambda] > class org.apache.ignite.binary.BinaryObjectException: Failed to read field > [name=capturingClass] > at > > org.apache.ignite.internal.binary.BinaryFieldAccessor.read(BinaryFieldAccessor.java:191) > at > > org.apache.ignite.internal.binary.BinaryClassDescriptor.read(BinaryClassDescriptor.java:931) > at > > org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1767) > at > > org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1719) > at > > org.apache.ignite.internal.binary.BinaryObjectImpl.deserializeValue(BinaryObjectImpl.java:895) > at > > org.apache.ignite.internal.binary.BinaryObjectImpl.deserialize(BinaryObjectImpl.java:736) > at > > org.apache.ignite.internal.processors.platform.client.cache.ClientCacheScanQueryRequest.createFilter(ClientCacheScanQueryRequest.java:116) > at > > org.apache.ignite.internal.processors.platform.client.cache.ClientCacheScanQueryRequest.process(ClientCacheScanQueryRequest.java:82) > at > > org.apache.ignite.internal.processors.platform.client.ClientRequestHandler.handle(ClientRequestHandler.java:92) > at > > org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.onMessage(ClientListenerNioListener.java:201) > at > > org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.onMessage(ClientListenerNioListener.java:57) > at > > org.apache.ignite.internal.util.nio.GridNioFilterChain$TailFilter.onMessageReceived(GridNioFilterChain.java:278) > at > > org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedMessageReceived(GridNioFilterAdapter.java:108) > at > > org.apache.ignite.internal.util.nio.GridNioAsyncNotifyFilter$3.body(GridNioAsyncNotifyFilter.java:135) > at > org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:119) > at > > org.apache.ignite.internal.util.worker.GridWorkerPool$1.run(GridWorkerPool.java:69) > at > > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) > at > > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) > at java.lang.Thread.run(Thread.java:748) > Caused by: class org.apache.ignite.binary.BinaryInvalidTypeException: > ConnectAndExecuteTestDataInJava > at > > org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:697) > at > > org.apache.ignite.internal.binary.BinaryUtils.doReadClass(BinaryUtils.java:1640) > at > > org.apache.ignite.internal.binary.BinaryUtils.doReadClass(BinaryUtils.java:1577) > at > > org.apache.ignite.internal.binary.BinaryUtils.doReadClass(BinaryUtils.java:1554) > at > > org.apache.ignite.internal.binary.BinaryReaderExImpl.readClass(BinaryReaderExImpl.java:381) > at > > org.apache.ignite.internal.binary.BinaryFieldAccessor$DefaultFinalClassAccessor.readFixedType(BinaryFieldAccessor.java:906) > at > > org.apache.ignite.internal.binary.BinaryFieldAccessor$DefaultFinalClassAccessor.read0(BinaryFieldAccessor.java:702) > at > > org.apache.ignite.internal.binary.BinaryFieldAccessor.read(BinaryFieldAccessor.java:187) > ... 18 more > Caused by: java.lang.ClassNotFoundException: > ConnectAndExecuteTestDataInJava > at java.net.URLClassLoader.findClass(URLClassLoader.java:382) > at java.lang.ClassLoader.loadClass(ClassLoader.java:418) > at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352) > at java.lang.ClassLoader.loadClass(ClassLoader.java:351) > at java.lang.Class.forName0(Native Method) > at java.lang.Class.forName(Class.java:348) > at > org.apache.ignite.internal.util.IgniteUtils.forName(IgniteUtils.java:9224) > at > org.apache.ignite.internal.util.IgniteUtils.forName(IgniteUtils.java:9167) > at > > org.apache.ignite.internal.MarshallerContextImpl.getClass(MarshallerContextImpl.java:325) > at > > org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:673) > ... 25 more > [17:03:33,210][SEVERE][client-connector-#73][ClientListenerNioListener] > Failed to process client request > > [req=o.a.i.i.processors.platform.client.cache.ClientCacheScanQueryRequest@6385a4b0 > ] > class org.apache.ignite.binary.BinaryObjectException: Failed to deserialize > object [typeName=java.lang.invoke.SerializedLambda] > at > > org.apache.ignite.internal.binary.BinaryClassDescriptor.read(BinaryClassDescriptor.java:970) > at > > org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1767) > at > > org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1719) > at > > org.apache.ignite.internal.binary.BinaryObjectImpl.deserializeValue(BinaryObjectImpl.java:895) > at > > org.apache.ignite.internal.binary.BinaryObjectImpl.deserialize(BinaryObjectImpl.java:736) > at > > org.apache.ignite.internal.processors.platform.client.cache.ClientCacheScanQueryRequest.createFilter(ClientCacheScanQueryRequest.java:116) > at > > org.apache.ignite.internal.processors.platform.client.cache.ClientCacheScanQueryRequest.process(ClientCacheScanQueryRequest.java:82) > at > > org.apache.ignite.internal.processors.platform.client.ClientRequestHandler.handle(ClientRequestHandler.java:92) > at > > org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.onMessage(ClientListenerNioListener.java:201) > at > > org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.onMessage(ClientListenerNioListener.java:57) > at > > org.apache.ignite.internal.util.nio.GridNioFilterChain$TailFilter.onMessageReceived(GridNioFilterChain.java:278) > at > > org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedMessageReceived(GridNioFilterAdapter.java:108) > at > > org.apache.ignite.internal.util.nio.GridNioAsyncNotifyFilter$3.body(GridNioAsyncNotifyFilter.java:135) > at > org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:119) > at > > org.apache.ignite.internal.util.worker.GridWorkerPool$1.run(GridWorkerPool.java:69) > at > > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) > at > > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) > at java.lang.Thread.run(Thread.java:748) > Caused by: class org.apache.ignite.binary.BinaryObjectException: Failed to > read field [name=capturingClass] > at > > org.apache.ignite.internal.binary.BinaryFieldAccessor.read(BinaryFieldAccessor.java:191) > at > > org.apache.ignite.internal.binary.BinaryClassDescriptor.read(BinaryClassDescriptor.java:931) > ... 17 more > Caused by: class org.apache.ignite.binary.BinaryInvalidTypeException: > ConnectAndExecuteTestDataInJava > at > > org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:697) > at > > org.apache.ignite.internal.binary.BinaryUtils.doReadClass(BinaryUtils.java:1640) > at > > org.apache.ignite.internal.binary.BinaryUtils.doReadClass(BinaryUtils.java:1577) > at > > org.apache.ignite.internal.binary.BinaryUtils.doReadClass(BinaryUtils.java:1554) > at > > org.apache.ignite.internal.binary.BinaryReaderExImpl.readClass(BinaryReaderExImpl.java:381) > at > > org.apache.ignite.internal.binary.BinaryFieldAccessor$DefaultFinalClassAccessor.readFixedType(BinaryFieldAccessor.java:906) > at > > org.apache.ignite.internal.binary.BinaryFieldAccessor$DefaultFinalClassAccessor.read0(BinaryFieldAccessor.java:702) > at > > org.apache.ignite.internal.binary.BinaryFieldAccessor.read(BinaryFieldAccessor.java:187) > ... 18 more > Caused by: java.lang.ClassNotFoundException: > ConnectAndExecuteTestDataInJava > at java.net.URLClassLoader.findClass(URLClassLoader.java:382) > at java.lang.ClassLoader.loadClass(ClassLoader.java:418) > at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352) > at java.lang.ClassLoader.loadClass(ClassLoader.java:351) > at java.lang.Class.forName0(Native Method) > at java.lang.Class.forName(Class.java:348) > at > org.apache.ignite.internal.util.IgniteUtils.forName(IgniteUtils.java:9224) > at > org.apache.ignite.internal.util.IgniteUtils.forName(IgniteUtils.java:9167) > at > > org.apache.ignite.internal.MarshallerContextImpl.getClass(MarshallerContextImpl.java:325) > at > > org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:673) > ... 25 more > [17:07:01] Topology snapshot [ver=4, locNode=04111d3b, servers=2, > clients=0, > state=ACTIVE, CPUs=4, offheap=1.5GB, heap=1.7GB] > [17:07:01] ^-- Baseline [id=0, size=2, online=2, offline=0] > > > Any suggestion/help in resolving this issue is greatly appreciated. Thank > you. > > Chandan > > > > > -- > Sent from: http://apache-ignite-users.70518.x6.nabble.com/ >
