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)

Reply via email to