Ivan Artukhov created IGNITE-10247: -------------------------------------- Summary: TX benchmarks with TRANSACTIONAL_SNAPSHOT caches do not handle write conflicts Key: IGNITE-10247 URL: https://issues.apache.org/jira/browse/IGNITE-10247 Project: Ignite Issue Type: Bug Components: yardstick Affects Versions: 2.7 Reporter: Ivan Artukhov
When I run e.g. IgnitePutGetTxBenchmark on a cache with TRANSACTIONAL_SNAPSHOT atomicity mode, I get the following exception and then benchmark driver stops: {noformat} Finishing main test [ts=1542181024722, date=Wed Nov 14 10:37:04 MSK 2018] ERROR: Shutting down benchmark driver to unexpected exception. Type '--help' for usage. javax.cache.CacheException: class org.apache.ignite.IgniteCheckedException: Cannot serialize transaction due to write conflict (transaction is marked for rollback) at org.apache.ignite.internal.processors.cache.GridCacheUtils.convertToCacheException(GridCacheUtils.java:1337) at org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.cacheException(IgniteCacheProxyImpl.java:1756) at org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.put(IgniteCacheProxyImpl.java:1108) at org.apache.ignite.internal.processors.cache.GatewayProtectedCacheProxy.put(GatewayProtectedCacheProxy.java:820) at org.apache.ignite.yardstick.cache.IgnitePutGetTxBenchmark$1.call(IgnitePutGetTxBenchmark.java:56) at org.apache.ignite.yardstick.cache.IgnitePutGetTxBenchmark$1.call(IgnitePutGetTxBenchmark.java:45) at org.apache.ignite.yardstick.IgniteBenchmarkUtils.doInTransaction(IgniteBenchmarkUtils.java:80) at org.apache.ignite.yardstick.cache.IgnitePutGetTxBenchmark.test(IgnitePutGetTxBenchmark.java:65) at org.yardstickframework.impl.BenchmarkRunner$2.run(BenchmarkRunner.java:178) at java.lang.Thread.run(Thread.java:748) Caused by: class org.apache.ignite.IgniteCheckedException: Cannot serialize transaction due to write conflict (transaction is marked for rollback) at org.apache.ignite.internal.util.IgniteUtils.cast(IgniteUtils.java:7427) at org.apache.ignite.internal.util.future.GridFutureAdapter.resolve(GridFutureAdapter.java:261) at org.apache.ignite.internal.util.future.GridFutureAdapter.get0(GridFutureAdapter.java:172) at org.apache.ignite.internal.util.future.GridFutureAdapter.get(GridFutureAdapter.java:141) at org.apache.ignite.internal.processors.cache.distributed.dht.NearTxResultHandler.createResponse(NearTxResultHandler.java:80) at org.apache.ignite.internal.processors.cache.distributed.dht.NearTxResultHandler.createResponse(NearTxResultHandler.java:67) at org.apache.ignite.internal.processors.cache.distributed.dht.NearTxResultHandler.apply(NearTxResultHandler.java:107) at org.apache.ignite.internal.processors.cache.distributed.dht.NearTxResultHandler.apply(NearTxResultHandler.java:36) at org.apache.ignite.internal.util.future.GridFutureAdapter.notifyListener(GridFutureAdapter.java:395) at org.apache.ignite.internal.util.future.GridFutureAdapter.unblock(GridFutureAdapter.java:349) at org.apache.ignite.internal.util.future.GridFutureAdapter.unblockAll(GridFutureAdapter.java:337) at org.apache.ignite.internal.util.future.GridFutureAdapter.onDone(GridFutureAdapter.java:507) at org.apache.ignite.internal.processors.cache.GridCacheFutureAdapter.onDone(GridCacheFutureAdapter.java:55) at org.apache.ignite.internal.util.future.GridFutureAdapter.onDone(GridFutureAdapter.java:486) at org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxAbstractEnlistFuture.onDone(GridDhtTxAbstractEnlistFuture.java:1054) at org.apache.ignite.internal.util.future.GridFutureAdapter.onDone(GridFutureAdapter.java:474) at org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxAbstractEnlistFuture.continueLoop(GridDhtTxAbstractEnlistFuture.java:564) at org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxAbstractEnlistFuture.init(GridDhtTxAbstractEnlistFuture.java:364) at org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTransactionalCacheAdapter.processNearTxEnlistRequest(GridDhtTransactionalCacheAdapter.java:2061) at org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTransactionalCacheAdapter.access$900(GridDhtTransactionalCacheAdapter.java:112) at org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTransactionalCacheAdapter$14.apply(GridDhtTransactionalCacheAdapter.java:229) at org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTransactionalCacheAdapter$14.apply(GridDhtTransactionalCacheAdapter.java:227) at org.apache.ignite.internal.processors.cache.GridCacheIoManager.processMessage(GridCacheIoManager.java:1054) at org.apache.ignite.internal.processors.cache.GridCacheIoManager.onMessage0(GridCacheIoManager.java:579) at org.apache.ignite.internal.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:378) at org.apache.ignite.internal.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:304) at org.apache.ignite.internal.processors.cache.GridCacheIoManager.access$100(GridCacheIoManager.java:100) at org.apache.ignite.internal.processors.cache.GridCacheIoManager$1.onMessage(GridCacheIoManager.java:294) at org.apache.ignite.internal.managers.communication.GridIoManager.invokeListener(GridIoManager.java:1568) at org.apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:1196) 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:1092) at org.apache.ignite.internal.util.StripedExecutor$Stripe.body(StripedExecutor.java:505) at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:120) ... 1 more {noformat} We should rollback and retry a transaction upon such write conflict. -- This message was sent by Atlassian JIRA (v7.6.3#76005)