[ https://issues.apache.org/jira/browse/IGNITE-2971?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15235061#comment-15235061 ]
Artem Shutak commented on IGNITE-2971: -------------------------------------- Reproducible test can be found at InterceptorWithKeepBinaryCacheTestSuite (looking for "TODO IGNITE-2971" at InterceptorWithKeepBinaryCacheTest). > Assertion error inside OPTIMISTIC SERIALIZABLE tx on 'get' > ---------------------------------------------------------- > > Key: IGNITE-2971 > URL: https://issues.apache.org/jira/browse/IGNITE-2971 > Project: Ignite > Issue Type: Bug > Affects Versions: 1.5.0.final > Reporter: Artem Shutak > Fix For: 1.6 > > > The following code leads to assertion below: > {code} > final IgniteCache cache = jcache().withKeepBinary(); > Set keys = new LinkedHashSet() {{ > for (int i = 0; i < CNT; i++) > add(key(i)); > }}; > try (Transaction tx = > testedGrid().transactions().txStart(conc, isolation)) { > for (final Object key : keys) { > Object res = cache.invoke(key, NOOP_ENTRY_PROC); > assertNull(res); > assertNull(cache.get(key)); > } > tx.commit(); > } > {code} > Assertion: > {noformat} > java.lang.AssertionError: Wrong version [serReadVer=GridCacheVersion > [topVer=71859233, time=1460379235380, order=1460379231642, nodeOrder=5], > ver=GridCacheVersion [topVer=71859233, time=1460379235380, > order=1460379231642, nodeOrder=5]] > at > org.apache.ignite.internal.processors.cache.transactions.IgniteTxEntry.entryReadVersion(IgniteTxEntry.java:936) > at > org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter$3.apply(IgniteTxLocalAdapter.java:1750) > at > org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter$3.apply(IgniteTxLocalAdapter.java:1698) > at > org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.processLoaded(GridNearTxLocal.java:485) > at > org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.access$100(GridNearTxLocal.java:84) > at > org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$2.apply(GridNearTxLocal.java:380) > at > org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$2.apply(GridNearTxLocal.java:375) > at > org.apache.ignite.internal.util.future.GridFutureChainListener.apply(GridFutureChainListener.java:54) > at > org.apache.ignite.internal.util.future.GridFutureChainListener.apply(GridFutureChainListener.java:28) > at > org.apache.ignite.internal.util.future.GridFutureAdapter.notifyListener(GridFutureAdapter.java:263) > at > org.apache.ignite.internal.util.future.GridFutureAdapter.notifyListeners(GridFutureAdapter.java:251) > at > org.apache.ignite.internal.util.future.GridFutureAdapter.onDone(GridFutureAdapter.java:381) > at > org.apache.ignite.internal.util.future.GridFutureAdapter.onDone(GridFutureAdapter.java:347) > at > org.apache.ignite.internal.processors.cache.distributed.dht.GridPartitionedSingleGetFuture.onDone(GridPartitionedSingleGetFuture.java:727) > at > org.apache.ignite.internal.util.future.GridFutureAdapter.onDone(GridFutureAdapter.java:324) > at > org.apache.ignite.internal.processors.cache.distributed.dht.GridPartitionedSingleGetFuture.setResult(GridPartitionedSingleGetFuture.java:634) > at > org.apache.ignite.internal.processors.cache.distributed.dht.GridPartitionedSingleGetFuture.onResult(GridPartitionedSingleGetFuture.java:478) > at > org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtCacheAdapter.processNearSingleGetResponse(GridDhtCacheAdapter.java:154) > at > org.apache.ignite.internal.processors.cache.distributed.dht.colocated.GridDhtColocatedCache.access$100(GridDhtColocatedCache.java:85) > at > org.apache.ignite.internal.processors.cache.distributed.dht.colocated.GridDhtColocatedCache$3.apply(GridDhtColocatedCache.java:149) > at > org.apache.ignite.internal.processors.cache.distributed.dht.colocated.GridDhtColocatedCache$3.apply(GridDhtColocatedCache.java:147) > at > org.apache.ignite.internal.processors.cache.GridCacheIoManager.processMessage(GridCacheIoManager.java:622) > at > org.apache.ignite.internal.processors.cache.GridCacheIoManager.onMessage0(GridCacheIoManager.java:320) > at > org.apache.ignite.internal.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:244) > at > org.apache.ignite.internal.processors.cache.GridCacheIoManager.access$000(GridCacheIoManager.java:81) > at > org.apache.ignite.internal.processors.cache.GridCacheIoManager$1.onMessage(GridCacheIoManager.java:203) > at > org.apache.ignite.internal.managers.communication.GridIoManager.invokeListener(GridIoManager.java:1219) > at > org.apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:847) > at > org.apache.ignite.internal.managers.communication.GridIoManager.access$1700(GridIoManager.java:105) > at > org.apache.ignite.internal.managers.communication.GridIoManager$5.run(GridIoManager.java:810) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) > at java.lang.Thread.run(Thread.java:745) > {noformat} > After successful 'invoke' Ignite already has entry inside transaction context > and should finish look up for key there and should not continue a look up. -- This message was sent by Atlassian JIRA (v6.3.4#6332)