IGNITE-6181 wip.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/a6faebdc Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/a6faebdc Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/a6faebdc Branch: refs/heads/ignite-6181-1 Commit: a6faebdc36bd163e59733ba0764c3059f8286afc Parents: b017713 Author: Aleksei Scherbakov <alexey.scherbak...@gmail.com> Authored: Wed Sep 13 17:55:23 2017 +0300 Committer: Aleksei Scherbakov <alexey.scherbak...@gmail.com> Committed: Wed Sep 13 17:55:23 2017 +0300 ---------------------------------------------------------------------- .../transactions/TxRollbackOnTimeoutTest.java | 44 ++++++++++++++++++++ 1 file changed, 44 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/a6faebdc/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxRollbackOnTimeoutTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxRollbackOnTimeoutTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxRollbackOnTimeoutTest.java index 20f6695..847f2b0 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxRollbackOnTimeoutTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxRollbackOnTimeoutTest.java @@ -318,6 +318,50 @@ public class TxRollbackOnTimeoutTest extends GridCommonAbstractTest { } /** + * Tests tx timeout on deadlock. + * + * @throws Exception + */ + public void testTimeoutOnDeadlock() throws Exception { + final CountDownLatch l = new CountDownLatch(2); + + IgniteInternalFuture<?> fut1 = multithreadedAsync(new Runnable() { + @Override public void run() { + try(Transaction tx = grid(0).transactions().txStart(PESSIMISTIC, REPEATABLE_READ, TX_TIMEOUT, 1)) { + grid(0).cache(CACHE_NAME).put(1, 1); + + l.countDown(); + U.awaitQuiet(l); + + grid(0).cache(CACHE_NAME).put(2, 2); + } + + } + }, 1, "First"); + + IgniteInternalFuture<?> fut2 = multithreadedAsync(new Runnable() { + @Override public void run() { + try(Transaction tx = grid(1).transactions().txStart(PESSIMISTIC, REPEATABLE_READ, 0, 1)) { + grid(1).cache(CACHE_NAME).put(2, 2); + + l.countDown(); + U.awaitQuiet(l); + + grid(1).cache(CACHE_NAME).put(1, 1); + } + } + + }, 1, "Second"); + + fut1.get(); + + fut2.get(); + + assertTrue(grid(0).cache(CACHE_NAME).containsKey(1)); + assertTrue(grid(0).cache(CACHE_NAME).containsKey(2)); + } + + /** * @param concurrency Concurrency. * @param isolation Isolation. *