Repository: ignite
Updated Branches:
  refs/heads/ignite-1537 4b69eab2d -> 7403cfcdb


ignite-1.5


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

Branch: refs/heads/ignite-1537
Commit: 7403cfcdb8867d184654c86ad455d18d4b94feb1
Parents: 4b69eab
Author: sboikov <sboi...@gridgain.com>
Authored: Thu Dec 24 09:27:22 2015 +0300
Committer: sboikov <sboi...@gridgain.com>
Committed: Thu Dec 24 09:27:22 2015 +0300

----------------------------------------------------------------------
 .../GridNearOptimisticTxPrepareFutureAdapter.java     | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/7403cfcd/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticTxPrepareFutureAdapter.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticTxPrepareFutureAdapter.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticTxPrepareFutureAdapter.java
index 553f8cb..fe6180a 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticTxPrepareFutureAdapter.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticTxPrepareFutureAdapter.java
@@ -52,16 +52,18 @@ public abstract class 
GridNearOptimisticTxPrepareFutureAdapter extends GridNearT
         // Obtain the topology version to use.
         long threadId = Thread.currentThread().getId();
 
-        AffinityTopologyVersion topVer;
+        AffinityTopologyVersion topVer = null;
 
-        if (tx != null && tx.system()) {
-            topVer = cctx.exchange().readyAffinityVersion();
+        if (tx.system())
+            topVer = tx.topologyVersionSnapshot();
 
-            assert topVer != null && topVer.topologyVersion() > 0 : topVer;
-        }
-        else
+        if (topVer == null)
             topVer = cctx.mvcc().lastExplicitLockTopologyVersion(threadId);
 
+        // If there is another system transaction in progress, use it's 
topology version to prevent deadlock.
+        if (topVer == null && tx.system())
+            topVer = cctx.tm().lockedTopologyVersion(threadId, tx);
+
         if (topVer != null) {
             tx.topologyVersion(topVer);
 

Reply via email to