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> 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> wrote:
>
>> An exception will be throw when the following code is executed:
>>
>> The ScanQuery in the thin client does not support IgniteBiPredicate?
>>
>>
>> public class ThinClient {
>> public static void main(String[] args) throws ClientException, Exception
>> {
>> ClientConfiguration cfg = new ClientConfiguration().setAddresses(
>> "localhost:10800");
>> try (IgniteClient client = Ignition.startClient(cfg)) {
>> ClientCache<Integer, Person> cache2 = client.getOrCreateCache("cache2");
>> for (int i = 1; i <= 10; i++) {
>> cache2.put(i, new Person((long)i, "a", "b"));
>> }
>> ClientCache<BinaryObject, BinaryObject> cache3 = client.getOrCreateCache(
>> "cache2").withKeepBinary();
>> IgniteBiPredicate<BinaryObject, BinaryObject> filter = new
>> IgniteBiPredicate<BinaryObject, BinaryObject>() {
>> @Override public boolean apply(BinaryObject key, BinaryObject person) {
>> return person.<Long>field("id") > 6;
>> }
>> };
>> try (QueryCursor<Entry<BinaryObject, BinaryObject>> cur3 = cache3.query(
>> new ScanQuery<>(filter))) {
>> for (Cache.Entry<BinaryObject, BinaryObject> entry : cur3) {
>> System.out.println(entry.getValue());
>> }
>> }
>> }
>> }
>> }
>>
>

Reply via email to