Mikhail Cherkasov created IGNITE-9844:
-----------------------------------------
Summary: Replace action in pessimistic transaction makes value
unwrap and causes ClassNotFoundException
Key: IGNITE-9844
URL: https://issues.apache.org/jira/browse/IGNITE-9844
Project: Ignite
Issue Type: Bug
Components: cache
Affects Versions: 2.6
Reporter: Mikhail Cherkasov
Attachments: SimpleTest.java
The problem can be reproduced only if you replace the existing value in a cache
inside pessimistic transaction and server node doesn't have the class for the
value which the node already has in the cache.
The reproducer is attached, please make sure that you run server node without
model class in class path.
Stack trace:
{code:java}
[2018-10-10 10:16:31,828][ERROR][pub-#52%grid_0%][GridJobWorker] Failed to
execute job [jobId=07acafe5661-c681a6d3-e7ab-4516-9931-e817e77cac5b,
ses=GridJobSessionImpl [ses=GridTaskSessionImpl
[taskName=class_not_found.SimpleTest$Task, dep=GridDeployment
[ts=1539191791633, depMode=SHARED, clsLdr=GridDeploymentClassLoader
[id=db2aafe5661-f793ea41-94c4-4ae0-8276-8cc771e48fa9, singleNode=false,
nodeLdrMap=HashMap
{c681a6d3-e7ab-4516-9931-e817e77cac5b=96acafe5661-c681a6d3-e7ab-4516-9931-e817e77cac5b},
p2pTimeout=5000, usrVer=0, depMode=SHARED, quiet=false],
clsLdrId=db2aafe5661-f793ea41-94c4-4ae0-8276-8cc771e48fa9, userVer=0,
loc=false, sampleClsName=class_not_found.SimpleTest$Task,
pendingUndeploy=false, undeployed=false, usage=1]SharedDeployment [rmv=false,
super=], taskClsName=class_not_found.SimpleTest$Task,
sesId=f6acafe5661-c681a6d3-e7ab-4516-9931-e817e77cac5b,
startTime=1539191791465, endTime=9223372036854775807,
taskNodeId=c681a6d3-e7ab-4516-9931-e817e77cac5b,
clsLdr=GridDeploymentClassLoader
[id=db2aafe5661-f793ea41-94c4-4ae0-8276-8cc771e48fa9, singleNode=false,
nodeLdrMap=HashMap
{c681a6d3-e7ab-4516-9931-e817e77cac5b=96acafe5661-c681a6d3-e7ab-4516-9931-e817e77cac5b},
p2pTimeout=5000, usrVer=0, depMode=SHARED, quiet=false], closed=false,
cpSpi=null, failSpi=null, loadSpi=null, usage=1, fullSup=false, internal=false,
topPred=null, subjId=c681a6d3-e7ab-4516-9931-e817e77cac5b,
mapFut=GridFutureAdapter [ignoreInterrupts=false, state=INIT, res=null,
hash=550280323]IgniteFuture [orig=], execName=null],
jobId=07acafe5661-c681a6d3-e7ab-4516-9931-e817e77cac5b]]
class org.apache.ignite.IgniteException:
class_not_found.SimpleTest$MyDomainObject
at
org.apache.ignite.internal.processors.closure.GridClosureProcessor$C2.execute(GridClosureProcessor.java:1858)
at
org.apache.ignite.internal.processors.job.GridJobWorker$2.call(GridJobWorker.java:568)
at
org.apache.ignite.internal.util.IgniteUtils.wrapThreadLoader(IgniteUtils.java:6797)
at
org.apache.ignite.internal.processors.job.GridJobWorker.execute0(GridJobWorker.java:562)
at
org.apache.ignite.internal.processors.job.GridJobWorker.body(GridJobWorker.java:491)
at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:120)
at
org.apache.ignite.internal.processors.job.GridJobProcessor.processJobExecuteRequest(GridJobProcessor.java:1191)
at
org.apache.ignite.internal.processors.job.GridJobProcessor$JobExecutionListener.onMessage(GridJobProcessor.java:1923)
at
org.apache.ignite.internal.managers.communication.GridIoManager.invokeListener(GridIoManager.java:1569)
at
org.apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:1197)
at
org.apache.ignite.internal.managers.communication.GridIoManager.access$4200(GridIoManager.java:127)
at
org.apache.ignite.internal.managers.communication.GridIoManager$9.run(GridIoManager.java:1093)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: class org.apache.ignite.binary.BinaryInvalidTypeException:
class_not_found.SimpleTest$MyDomainObject
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:67)
at
org.apache.ignite.internal.processors.cache.CacheObjectContext.unwrapBinaryIfNeeded(CacheObjectContext.java:125)
at
org.apache.ignite.internal.processors.cache.GridCacheReturn.initValue(GridCacheReturn.java:197)
at
org.apache.ignite.internal.processors.cache.GridCacheReturn.value(GridCacheReturn.java:157)
at
org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter.postLockWrite(IgniteTxLocalAdapter.java:1294)
at
org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.access$200(GridNearTxLocal.java:133)
at
org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$2.postLock(GridNearTxLocal.java:655)
at
org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$2.postLock(GridNearTxLocal.java:648)
at
org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter$PostLockClosure1.apply(IgniteTxLocalAdapter.java:1860)
at
org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.putAsync0(GridNearTxLocal.java:671)
at
org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.putAsync(GridNearTxLocal.java:447)
at
org.apache.ignite.internal.processors.cache.GridCacheAdapter$22.op(GridCacheAdapter.java:2470)
at
org.apache.ignite.internal.processors.cache.GridCacheAdapter$22.op(GridCacheAdapter.java:2468)
at
org.apache.ignite.internal.processors.cache.GridCacheAdapter.syncOp(GridCacheAdapter.java:4287)
at
org.apache.ignite.internal.processors.cache.GridCacheAdapter.put0(GridCacheAdapter.java:2468)
at
org.apache.ignite.internal.processors.cache.GridCacheAdapter.put(GridCacheAdapter.java:2449)
at
org.apache.ignite.internal.processors.cache.GridCacheAdapter.replace(GridCacheAdapter.java:2896)
at
org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.replace(IgniteCacheProxyImpl.java:1278)
at
org.apache.ignite.internal.processors.cache.GatewayProtectedCacheProxy.replace(GatewayProtectedCacheProxy.java:1012)
at class_not_found.SimpleTest$Task.call(SimpleTest.java:140)
at class_not_found.SimpleTest$Task.call(SimpleTest.java:121)
at
org.apache.ignite.internal.processors.closure.GridClosureProcessor$C2.execute(GridClosureProcessor.java:1855)
... 14 more
Caused by: java.lang.ClassNotFoundException:
class_not_found.SimpleTest$MyDomainObject
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at org.apache.ignite.internal.util.IgniteUtils.forName(IgniteUtils.java:8741)
at
org.apache.ignite.internal.MarshallerContextImpl.getClass(MarshallerContextImpl.java:349)
at
org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:698)
... 41 more{code}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)