[ 
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)

Reply via email to