Hey Guys,
I have a strange problem with the Transform part of a ScanQuery that I get a
deserialize object exception for the SerializedLambda.
> javax.cache.CacheException: class org.apache.ignite.IgniteCheckedException:
> Failed to deserialize object [typeName=java.lang.invoke.SerializedLambda]
Strange is that it works very well in other cases like:
try (Ignite ignite = Ignition.start("ignite.xml")) {
IgniteCache<Integer,String> cache = ignite.createCache("ScanTransformTest");
cache.put(1, "Hello");
// 1 Just a broadcast with a IgniteClosure works!
compute.broadcast((a) -> 123L, "Hello").forEach(System.out::println);
// 2 Running the ScanQuery on the remote server. Works too!
compute.broadcast(() -> {
try(QueryCursor<Long> cursor = cache.query(new
ScanQuery<>().setLocal(true), (a) -> 234L)){
for( Long row : cursor) {
return row;
}
}
return 0;
}).forEach(System.out::println);
// 3 But running it from the client side it fails!
try(QueryCursor<Long> cursor = cache.query(new ScanQuery<>(), (a) -> 345L)){
for( Long row : cursor) {
System.out.println(row);
break;
}
}
}
Also changing the Lambda to a actually class implementing IgniteClosure results
in the same problem.
Any idea what I'm doing wrong?
We are running ignite ver. 2.8.0#20200226-sha1:341b01df
With java openjdk 11.0.7 2020-04-14
Thank you!
Best,
Rafael
Error Log:
Exception in thread "main" javax.cache.CacheException: class
org.apache.ignite.IgniteCheckedException: Failed to deserialize object
[typeName=java.lang.invoke.SerializedLambda]
at
org.apache.ignite.internal.processors.cache.GridCacheUtils.convertToCacheException(GridCacheUtils.java:1317)
at
org.apache.ignite.internal.processors.cache.query.GridCacheQueryFutureAdapter.next(GridCacheQueryFutureAdapter.java:173)
at
org.apache.ignite.internal.processors.cache.query.GridCacheDistributedQueryManager$5.onHasNext(GridCacheDistributedQueryManager.java:645)
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.cache.AutoClosableCursorIterator.hasNext(AutoClosableCursorIterator.java:49)
at ScanQueryTest.main(ScanQueryTest.java:49)
Caused by: class org.apache.ignite.IgniteCheckedException: Failed to
deserialize object [typeName=java.lang.invoke.SerializedLambda]
at
org.apache.ignite.internal.util.IgniteUtils.unmarshal(IgniteUtils.java:10310)
at
org.apache.ignite.internal.processors.cache.query.GridCacheQueryRequest.finishUnmarshal(GridCacheQueryRequest.java:389)
at
org.apache.ignite.internal.processors.cache.GridCacheIoManager.unmarshall(GridCacheIoManager.java:1625)
at
org.apache.ignite.internal.processors.cache.GridCacheIoManager.onMessage0(GridCacheIoManager.java:586)
at
org.apache.ignite.internal.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:392)
at
org.apache.ignite.internal.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:318)
at
org.apache.ignite.internal.processors.cache.GridCacheIoManager.access$100(GridCacheIoManager.java:109)
at
org.apache.ignite.internal.processors.cache.GridCacheIoManager$1.onMessage(GridCacheIoManager.java:308)
at
org.apache.ignite.internal.managers.communication.GridIoManager.invokeListener(GridIoManager.java:1843)
at
org.apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:1468)
at
org.apache.ignite.internal.managers.communication.GridIoManager.access$5200(GridIoManager.java:229)
at
org.apache.ignite.internal.managers.communication.GridIoManager$9.run(GridIoManager.java:1365)
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: 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:913)
at
org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1764)
at
org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1716)
at
org.apache.ignite.internal.binary.GridBinaryMarshaller.deserialize(GridBinaryMarshaller.java:307)
at
org.apache.ignite.internal.binary.BinaryMarshaller.unmarshal0(BinaryMarshaller.java:101)
at
org.apache.ignite.marshaller.AbstractNodeNameAwareMarshaller.unmarshal(AbstractNodeNameAwareMarshaller.java:81)
at
org.apache.ignite.internal.util.IgniteUtils.unmarshal(IgniteUtils.java:10304)
... 14 more
Caused by: class org.apache.ignite.binary.BinaryObjectException: Failed to read
field [name=capturingClass]
at
org.apache.ignite.internal.binary.BinaryFieldAccessor.read(BinaryFieldAccessor.java:192)
at
org.apache.ignite.internal.binary.BinaryClassDescriptor.read(BinaryClassDescriptor.java:874)
... 20 more
Caused by: class org.apache.ignite.binary.BinaryInvalidTypeException:
ScanQueryTest
at
org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:724)
at
org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:721)
at
org.apache.ignite.internal.binary.BinaryUtils.doReadClass(BinaryUtils.java:1638)
at
org.apache.ignite.internal.binary.BinaryUtils.doReadClass(BinaryUtils.java:1575)
at
org.apache.ignite.internal.binary.BinaryUtils.doReadClass(BinaryUtils.java:1552)
at
org.apache.ignite.internal.binary.BinaryReaderExImpl.readClass(BinaryReaderExImpl.java:383)
at
org.apache.ignite.internal.binary.BinaryFieldAccessor$DefaultFinalClassAccessor.readFixedType(BinaryFieldAccessor.java:907)
at
org.apache.ignite.internal.binary.BinaryFieldAccessor$DefaultFinalClassAccessor.read0(BinaryFieldAccessor.java:703)
at
org.apache.ignite.internal.binary.BinaryFieldAccessor.read(BinaryFieldAccessor.java:188)
... 21 more
Caused by: java.lang.ClassNotFoundException: ScanQueryTest
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:8828)
at
org.apache.ignite.internal.MarshallerContextImpl.getClass(MarshallerContextImpl.java:374)
at
org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:715)
... 29 more
--
Rafael Troilo
HeiGIT gGmbH
Heidelberg Institute for Geoinformation Technology at Heidelberg University
https://heigit.org | [email protected] | phone +49-6221-533 484
Postal address: Schloss-Wolfsbrunnenweg 33 | 69118 Heidelberg | Germany
Offices: Berliner Str. 45 | 69120 Heidelberg | Germany
Amtsgericht Mannheim | HRB 733765
Managing Directors: Prof. Dr. Alexander Zipf | Dr. Gesa Schönberger