Hello!

Have you tried to do cache.withKeepBinary().query(yourScanQuery)? This will
avoid demarshalling of binary objects in predicate.

Regards,
-- 
Ilya Kasnacheev


вт, 18 сент. 2018 г. в 13:29, Saby <[email protected]>:

> Hi Ilya,
> I tested it with nightly build of 17/09/2018(ver.
> 2.7.0.20180917#19700101-sha1:DEV), but getting the same exception. Getting
> the following exception  while trying to fetch the data from cache using
> ScanQuery from Java Thin client,  but SqlQuery giving the correct result.
> ScanQuery excepting cached class's description in the server class path.
>
> The definition of the cached class is-
>
> public class IgniteValueClass implements Binarylizable, Serializable {
>         private static final long serialVersionUID = 502832443677779719L;
>         @QuerySqlField(index = true)
>         String id;
>         @QuerySqlField(index = true)
>         String val1;
>
>         @QuerySqlField
>         String val2;
>
>         public String getId() {
>                 return id;
>         }
>
>         public void setId(String id) {
>                 this.id = id;
>         }
>
>         public String getVal1() {
>                 return val1;
>         }
>
>         public void setVal1(String val1) {
>                 this.val1 = val1;
>         }
>
>         public String getVal2() {
>                 return val2;
>         }
>
>         public void setVal2(String val2) {
>                 this.val2 = val2;
>         }
>
>         @Override
>         public boolean equals(Object obj) {
>                 if (obj == null)
>                         return false;
>                 IgniteValueClass newObj = (IgniteValueClass) obj;
>                 if (newObj == this)
>                         return true;
>                 return check(id, newObj.id) && check(val1, newObj.val1) &&
> check(val2,
> newObj.val2);
>         }
>
>         private boolean check(String v1, String v2) {
>                 if (v1 == v2 || (v1 != null && v1.equals(v2)))
>                         return true;
>                 return false;
>         }
>
>         @Override
>         public void writeBinary(BinaryWriter writer) throws
> BinaryObjectException {
>                 writer.writeString("id", id);
>                 writer.writeString("val1", val1);
>                 writer.writeString("val2", val2);
>
>         }
>
>         @Override
>         public void readBinary(BinaryReader reader) throws
> BinaryObjectException {
>                 id = reader.readString("id");
>                 val1 = reader.readString("val1");
>                 val2 = reader.readString("val2");
>
>         }
>
>         @Override
>         public String toString() {
>                 return "ID:" + id + " Val1:" + val1 + " Val2:" + val2;
>         }
> }
>
> The server is throwing this exception:
>
> [13:05:12,104][SEVERE][client-connector-#75][ClientListenerNioListener]
> Failed to process client request
>
> [req=o.a.i.i.processors.platform.client.cache.ClientCacheScanQueryRequest@490c852e
> ]
> class org.apache.ignite.binary.BinaryInvalidTypeException:
> xxx.imdg.ignite.test.IgniteValueClass
>         at
>
> org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:707)
>         at
>
> org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1757)
>         at
>
> org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1716)
>         at
>
> org.apache.ignite.internal.binary.BinaryObjectImpl.deserializeValue(BinaryObjectImpl.java:798)
>         at
>
> org.apache.ignite.internal.binary.BinaryObjectImpl.value(BinaryObjectImpl.java:143)
>         at
>
> org.apache.ignite.internal.processors.cache.CacheObjectUtils.unwrapBinary(CacheObjectUtils.java:177)
>         at
>
> org.apache.ignite.internal.processors.cache.CacheObjectUtils.unwrapBinaryIfNeeded(CacheObjectUtils.java:39)
>         at
>
> org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$ScanQueryIterator.advance(GridCacheQueryManager.java:3082)
>         at
>
> org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$ScanQueryIterator.onHasNext(GridCacheQueryManager.java:2984)
>         at
>
> org.apache.ignite.internal.util.GridCloseableIteratorAdapter.hasNextX(GridCloseableIteratorAdapter.java:53)
>         at
>
> org.apache.ignite.internal.util.lang.GridIteratorAdapter.hasNext(GridIteratorAdapter.java:45)
>         at
>
> org.apache.ignite.internal.processors.platform.client.cache.ClientCacheQueryCursor.writePage(ClientCacheQueryCursor.java:77)
>         at
>
> org.apache.ignite.internal.processors.platform.client.cache.ClientCacheQueryResponse.encode(ClientCacheQueryResponse.java:50)
>         at
>
> org.apache.ignite.internal.processors.platform.client.ClientMessageParser.encode(ClientMessageParser.java:387)
>         at
>
> org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.onMessage(ClientListenerNioListener.java:172)
>         at
>
> org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.onMessage(ClientListenerNioListener.java:45)
>         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:110)
>         at
>
> org.apache.ignite.internal.util.worker.GridWorkerPool$1.run(GridWorkerPool.java:70)
>         at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown
> Source)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown
> Source)
>         at java.lang.Thread.run(Unknown Source)
> Caused by: java.lang.ClassNotFoundException:
> xxx.imdg.ignite.test.IgniteValueClass
>         at java.net.URLClassLoader.findClass(Unknown Source)
>         at java.lang.ClassLoader.loadClass(Unknown Source)
>         at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
>         at java.lang.ClassLoader.loadClass(Unknown Source)
>         at java.lang.Class.forName0(Native Method)
>         at java.lang.Class.forName(Unknown Source)
>         at
> org.apache.ignite.internal.util.IgniteUtils.forName(IgniteUtils.java:8681)
>         at
>
> org.apache.ignite.internal.MarshallerContextImpl.getClass(MarshallerContextImpl.java:349)
>         at
>
> org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:698)
>         ... 23 more
>
>
>
> --
> Sent from: http://apache-ignite-users.70518.x6.nabble.com/
>

Reply via email to