Uploaded image for project: 'Ignite'
  1. Ignite
  2. IGNITE-9844

Replace action in pessimistic transaction makes value unwrap and causes ClassNotFoundException

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 2.6
    • None
    • cache

    Description

      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:

      [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

       

      Attachments

        1. SimpleTest.java
          5 kB
          Mikhail Cherkasov

        Issue Links

          Activity

            People

              astelmak Alexey Stelmak
              mcherkasov Mikhail Cherkasov
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated: