Details
-
Bug
-
Status: Open
-
Minor
-
Resolution: Unresolved
-
2.7.5
-
None
-
None
-
None
-
Docs Required
Description
When running DeploymentMode CONTINUOUS or SHARED and connecting a client node with a different userVersion from the server nodes - IgniteAtomicLongs and IgniteAtomicReferences cannot be fetched directly from Ignite.
IgniteAtomicLong atomicLong = ignite.atomicLong("long", 0, false); IgniteAtomicReference<String> atomicReference = ignite.atomicReference("reference", "", false);
It throws an Exception
SEVERE: Error deserializing job response: GridJobExecuteResponse [nodeId=b52607ba-b6d1-47bc-983c-380af8a679bd, sesId=f13d9c48c61-0fabe984-ecf1-4acf-84ac-3bdd478405f7, jobId=023d9c48c61-0fabe984-ecf1-4acf-84ac-3bdd478405f7, gridEx=null, isCancelled=false, retry=null] class org.apache.ignite.IgniteCheckedException: Failed to unmarshal object with optimized marshaller at org.apache.ignite.internal.util.IgniteUtils.unmarshal(IgniteUtils.java:10147) ... Caused by: class org.apache.ignite.internal.IgniteDeploymentCheckedException: Failed to obtain deployment for class: org.apache.ignite.configuration.CacheConfiguration$IgniteAllNodesPredicate ...
It works if you use a compute job to fetch it.
long remoteLong = ignite.compute().call(() -> { return ignite.atomicLong("long", 0, false).get(); }); ignite.compute().call(() -> { return ignite.atomicLong("long", 0, false).incrementAndGet(); }); String remoteReference = ignite.compute().call(() -> { return ignite.atomicReference("reference", "", false).get(); });
I've attached a small reproducer project.