PeerDeploymentClassLoading should help to work around this issue, shouldn't it?

10.12.2021 20:56, Pavel Tupitsyn пишет:
Yes, the problem is that the predicate class "ThinClient$1" is not deployed on the server.

On Fri, Dec 10, 2021 at 1:24 PM 18624049226 <18624049...@163.com <mailto:18624049...@163.com>> wrote:

    [16:44:49,031][SEVERE][client-connector-#72][ClientListenerNioListener]
    Failed to process client request
    [req=o.a.i.i.processors.platform.client.cache.ClientCach
    eScanQueryRequest@1c37c4d2]
    class org.apache.ignite.binary.BinaryInvalidTypeException:
    ThinClient$1
           at
    
org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:717)
           at
    
org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1762)
           at
    
org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1721)
           at
    
org.apache.ignite.internal.binary.BinaryObjectImpl.deserializeValue(BinaryObjectImpl.java:820)
           at
    
org.apache.ignite.internal.binary.BinaryObjectImpl.deserialize(BinaryObjectImpl.java:661)
           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:94)
           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:120)
           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:829)
    Caused by: java.lang.ClassNotFoundException: ThinClient$1
           at
    
java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
           at
    
java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
           at
    java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
           at java.base/java.lang.Class.forName0(Native Method)
           at java.base/java.lang.Class.forName(Class.java:398)
           at
    org.apache.ignite.internal.util.IgniteUtils.forName(IgniteUtils.java:9064)
           at
    org.apache.ignite.internal.util.IgniteUtils.forName(IgniteUtils.java:9002)
           at
    
org.apache.ignite.internal.MarshallerContextImpl.getClass(MarshallerContextImpl.java:376)
           at
    
org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:693)
           ... 17 more



    在 2021/12/10 17:39, Pavel Tupitsyn 写道:
    Thin client scan query supports any predicates.
    However, make sure that predicate is deployed on all server nodes
    so it can be executed.

    Please share the exception details.

    On Fri, Dec 10, 2021 at 11:53 AM 38797715 <38797...@qq.com
    <mailto:38797...@qq.com>> wrote:

        An exception will be throw when the following code is executed:

        The ScanQuery in the thin client does not support
        IgniteBiPredicate?


        publicclassThinClient{
        publicstaticvoidmain(String[] args) throwsClientException,
        Exception{
        ClientConfigurationcfg=
        newClientConfiguration().setAddresses("localhost:10800");
        try(IgniteClientclient= Ignition.startClient(cfg)) {
        ClientCache<Integer, Person> cache2=
        client.getOrCreateCache("cache2");
        for(inti= 1; i<= 10; i++) {
        cache2.put(i, newPerson((long)i, "a", "b"));
        }
        ClientCache<BinaryObject, BinaryObject> cache3=
        client.getOrCreateCache("cache2").withKeepBinary();
        IgniteBiPredicate<BinaryObject, BinaryObject> filter=
        newIgniteBiPredicate<BinaryObject, BinaryObject>() {
        @Overridepublicbooleanapply(BinaryObjectkey,
        BinaryObjectperson) {
        returnperson.<Long>field("id") > 6;
        }
        };
        try(QueryCursor<Entry<BinaryObject, BinaryObject>> cur3=
        cache3.query(newScanQuery<>(filter))) {
        for(Cache.Entry<BinaryObject, BinaryObject> entry:cur3) {
        System.out.println(entry.getValue());
        }
        }
        }
        }
        }

Reply via email to