[07/11] ignite git commit: IGNITE-7409: Exception before assert in tx.resume - Fixes #3374.

2018-02-19 Thread akuznetsov
IGNITE-7409: Exception before assert in tx.resume - Fixes #3374.

Signed-off-by: Nikolay Izhikov 


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/19360362
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/19360362
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/19360362

Branch: refs/heads/ignite-7725
Commit: 193603625d5b7434c5a5d0c2813aafec3387c871
Parents: 67922b3
Author: voipp 
Authored: Mon Feb 19 12:18:04 2018 +0300
Committer: Nikolay Izhikov 
Committed: Mon Feb 19 12:24:01 2018 +0300

--
 .../cache/transactions/IgniteTxManager.java |  7 +++--
 .../IgniteOptimisticTxSuspendResumeTest.java| 33 
 2 files changed, 37 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/19360362/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java
index e735342..dde70bc 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java
@@ -2315,15 +2315,16 @@ public class IgniteTxManager extends 
GridCacheSharedManagerAdapter {
  */
 public void resumeTx(GridNearTxLocal tx) throws IgniteCheckedException {
 assert tx != null && !tx.system() : tx;
-assert !threadMap.containsValue(tx) : tx;
-assert !transactionMap(tx).containsValue(tx) : tx;
-assert !haveSystemTxForThread(Thread.currentThread().getId());
 
 if (!tx.state(ACTIVE)) {
 throw new IgniteCheckedException("Trying to resume transaction 
with incorrect state "
 + "[expected=" + SUSPENDED + ", actual=" + tx.state() + ']');
 }
 
+assert !threadMap.containsValue(tx) : tx;
+assert !transactionMap(tx).containsValue(tx) : tx;
+assert !haveSystemTxForThread(Thread.currentThread().getId());
+
 long threadId = Thread.currentThread().getId();
 
 if (threadMap.putIfAbsent(threadId, tx) != null)

http://git-wip-us.apache.org/repos/asf/ignite/blob/19360362/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteOptimisticTxSuspendResumeTest.java
--
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteOptimisticTxSuspendResumeTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteOptimisticTxSuspendResumeTest.java
index 34bd0a0..a55f21d 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteOptimisticTxSuspendResumeTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteOptimisticTxSuspendResumeTest.java
@@ -33,6 +33,7 @@ import org.apache.ignite.internal.IgniteEx;
 import org.apache.ignite.internal.util.typedef.CI1;
 import org.apache.ignite.internal.util.typedef.CI2;
 import org.apache.ignite.internal.util.typedef.PA;
+import org.apache.ignite.internal.util.typedef.X;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.testframework.GridTestUtils;
 import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
@@ -630,6 +631,38 @@ public class IgniteOptimisticTxSuspendResumeTest extends 
GridCommonAbstractTest
 }
 
 /**
+ * Test for correct exception handling when misuse transaction API - 
resume active tx.
+ *
+ * @throws Exception If failed.
+ */
+public void testResumeActiveTx() throws Exception {
+executeTestForAllCaches(new CI2Exc>() {
+@Override public void applyx(Ignite ignite, final 
IgniteCache cache) throws Exception {
+for (TransactionIsolation isolation : 
TransactionIsolation.values()) {
+final Transaction tx = 
ignite.transactions().txStart(OPTIMISTIC, isolation);
+
+cache.put(1, 1);
+
+try {
+tx.resume();
+
+fail("Exception must be thrown");
+}
+catch (Throwable e) {
+assertTrue(X.hasCause(e, IgniteException.class));
+
+

ignite git commit: IGNITE-7409: Exception before assert in tx.resume - Fixes #3374.

2018-02-19 Thread nizhikov
Repository: ignite
Updated Branches:
  refs/heads/master 67922b326 -> 193603625


IGNITE-7409: Exception before assert in tx.resume - Fixes #3374.

Signed-off-by: Nikolay Izhikov 


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/19360362
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/19360362
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/19360362

Branch: refs/heads/master
Commit: 193603625d5b7434c5a5d0c2813aafec3387c871
Parents: 67922b3
Author: voipp 
Authored: Mon Feb 19 12:18:04 2018 +0300
Committer: Nikolay Izhikov 
Committed: Mon Feb 19 12:24:01 2018 +0300

--
 .../cache/transactions/IgniteTxManager.java |  7 +++--
 .../IgniteOptimisticTxSuspendResumeTest.java| 33 
 2 files changed, 37 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/19360362/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java
index e735342..dde70bc 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java
@@ -2315,15 +2315,16 @@ public class IgniteTxManager extends 
GridCacheSharedManagerAdapter {
  */
 public void resumeTx(GridNearTxLocal tx) throws IgniteCheckedException {
 assert tx != null && !tx.system() : tx;
-assert !threadMap.containsValue(tx) : tx;
-assert !transactionMap(tx).containsValue(tx) : tx;
-assert !haveSystemTxForThread(Thread.currentThread().getId());
 
 if (!tx.state(ACTIVE)) {
 throw new IgniteCheckedException("Trying to resume transaction 
with incorrect state "
 + "[expected=" + SUSPENDED + ", actual=" + tx.state() + ']');
 }
 
+assert !threadMap.containsValue(tx) : tx;
+assert !transactionMap(tx).containsValue(tx) : tx;
+assert !haveSystemTxForThread(Thread.currentThread().getId());
+
 long threadId = Thread.currentThread().getId();
 
 if (threadMap.putIfAbsent(threadId, tx) != null)

http://git-wip-us.apache.org/repos/asf/ignite/blob/19360362/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteOptimisticTxSuspendResumeTest.java
--
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteOptimisticTxSuspendResumeTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteOptimisticTxSuspendResumeTest.java
index 34bd0a0..a55f21d 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteOptimisticTxSuspendResumeTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteOptimisticTxSuspendResumeTest.java
@@ -33,6 +33,7 @@ import org.apache.ignite.internal.IgniteEx;
 import org.apache.ignite.internal.util.typedef.CI1;
 import org.apache.ignite.internal.util.typedef.CI2;
 import org.apache.ignite.internal.util.typedef.PA;
+import org.apache.ignite.internal.util.typedef.X;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.testframework.GridTestUtils;
 import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
@@ -630,6 +631,38 @@ public class IgniteOptimisticTxSuspendResumeTest extends 
GridCommonAbstractTest
 }
 
 /**
+ * Test for correct exception handling when misuse transaction API - 
resume active tx.
+ *
+ * @throws Exception If failed.
+ */
+public void testResumeActiveTx() throws Exception {
+executeTestForAllCaches(new CI2Exc>() {
+@Override public void applyx(Ignite ignite, final 
IgniteCache cache) throws Exception {
+for (TransactionIsolation isolation : 
TransactionIsolation.values()) {
+final Transaction tx = 
ignite.transactions().txStart(OPTIMISTIC, isolation);
+
+cache.put(1, 1);
+
+try {
+tx.resume();
+
+fail("Exception must be thrown");
+}
+catch (Throwable e) {
+