Repository: ignite
Updated Branches:
  refs/heads/ignite-1537 6447fa96d -> 111e44743


ignite-1.5 Fixed hang on metadata update inside put in atomic cache when 
topology read lock is held.


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

Branch: refs/heads/ignite-1537
Commit: 111e44743c1f5ebef5a75d92c030b68ed22bea1b
Parents: 6447fa9
Author: sboikov <[email protected]>
Authored: Mon Dec 21 14:27:20 2015 +0300
Committer: sboikov <[email protected]>
Committed: Mon Dec 21 14:27:20 2015 +0300

----------------------------------------------------------------------
 ...NearOptimisticSerializableTxPrepareFuture.java |  8 +++-----
 .../near/GridNearOptimisticTxPrepareFuture.java   |  8 +++-----
 .../GridNearOptimisticTxPrepareFutureAdapter.java | 18 ++++++------------
 .../near/GridNearPessimisticTxPrepareFuture.java  |  4 +++-
 .../cache/distributed/near/GridNearTxLocal.java   |  6 +++---
 .../near/GridNearTxPrepareFutureAdapter.java      |  4 +++-
 6 files changed, 21 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/111e4474/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticSerializableTxPrepareFuture.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticSerializableTxPrepareFuture.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticSerializableTxPrepareFuture.java
index 7a1789d..afc2d6d 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticSerializableTxPrepareFuture.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticSerializableTxPrepareFuture.java
@@ -83,12 +83,10 @@ public class GridNearOptimisticSerializableTxPrepareFuture 
extends GridNearOptim
     /**
      * @param cctx Context.
      * @param tx Transaction.
-     * @param waitTopFut If {@code false} does not wait for affinity change 
future.
      */
     public 
GridNearOptimisticSerializableTxPrepareFuture(GridCacheSharedContext cctx,
-        GridNearTxLocal tx,
-        boolean waitTopFut) {
-        super(cctx, tx, waitTopFut);
+        GridNearTxLocal tx) {
+        super(cctx, tx);
 
         assert tx.optimistic() && tx.serializable() : tx;
 
@@ -859,7 +857,7 @@ public class GridNearOptimisticSerializableTxPrepareFuture 
extends GridNearOptim
          * @param res Response.
          */
         private void remap(final GridNearTxPrepareResponse res) {
-            prepareOnTopology(true, new Runnable() {
+            prepareOnTopology(true, true, new Runnable() {
                 @Override public void run() {
                     onDone(res);
                 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/111e4474/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticTxPrepareFuture.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticTxPrepareFuture.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticTxPrepareFuture.java
index 706f82c..773259e 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticTxPrepareFuture.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticTxPrepareFuture.java
@@ -71,12 +71,10 @@ public class GridNearOptimisticTxPrepareFuture extends 
GridNearOptimisticTxPrepa
     /**
      * @param cctx Context.
      * @param tx Transaction.
-     * @param waitTopFut If {@code false} does not wait for affinity change 
future.
      */
     public GridNearOptimisticTxPrepareFuture(GridCacheSharedContext cctx,
-        GridNearTxLocal tx,
-        boolean waitTopFut) {
-        super(cctx, tx, waitTopFut);
+        GridNearTxLocal tx) {
+        super(cctx, tx);
 
         assert tx.optimistic() && !tx.serializable() : tx;
     }
@@ -751,7 +749,7 @@ public class GridNearOptimisticTxPrepareFuture extends 
GridNearOptimisticTxPrepa
          *
          */
         private void remap() {
-            prepareOnTopology(true, new Runnable() {
+            prepareOnTopology(true, true, new Runnable() {
                 @Override public void run() {
                     onDone((GridNearTxPrepareResponse)null);
                 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/111e4474/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 f836166..b6d4342 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
@@ -38,26 +38,19 @@ import org.jetbrains.annotations.Nullable;
  *
  */
 public abstract class GridNearOptimisticTxPrepareFutureAdapter extends 
GridNearTxPrepareFutureAdapter {
-    /** */
-    private final boolean waitTopFut;
-
     /**
      * @param cctx Context.
      * @param tx Transaction.
-     * @param waitTopFut If {@code false} does not wait for affinity change 
future.
      */
     public GridNearOptimisticTxPrepareFutureAdapter(GridCacheSharedContext 
cctx,
-        GridNearTxLocal tx,
-        boolean waitTopFut) {
+        GridNearTxLocal tx) {
         super(cctx, tx);
 
         assert tx.optimistic() : tx;
-
-        this.waitTopFut = waitTopFut;
     }
 
     /** {@inheritDoc} */
-    @Override public final void prepare() {
+    @Override public final void prepare(boolean waitTopFut) {
         // Obtain the topology version to use.
         long threadId = Thread.currentThread().getId();
 
@@ -81,7 +74,7 @@ public abstract class 
GridNearOptimisticTxPrepareFutureAdapter extends GridNearT
             return;
         }
 
-        prepareOnTopology(false, null);
+        prepareOnTopology(waitTopFut, false, null);
     }
 
     /**
@@ -101,10 +94,11 @@ public abstract class 
GridNearOptimisticTxPrepareFutureAdapter extends GridNearT
     }
 
     /**
+     * @param waitTopFut If {@code false} does not wait for affinity change 
future.
      * @param remap Remap flag.
      * @param c Optional closure to run after map.
      */
-    protected final void prepareOnTopology(final boolean remap, @Nullable 
final Runnable c) {
+    protected final void prepareOnTopology(boolean waitTopFut, final boolean 
remap, @Nullable final Runnable c) {
         GridDhtTopologyFuture topFut = topologyReadLock();
 
         AffinityTopologyVersion topVer = null;
@@ -165,7 +159,7 @@ public abstract class 
GridNearOptimisticTxPrepareFutureAdapter extends GridNearT
                             try {
                                 fut.get();
 
-                                prepareOnTopology(remap, c);
+                                prepareOnTopology(true, remap, c);
                             }
                             catch (IgniteCheckedException e) {
                                 onDone(e);

http://git-wip-us.apache.org/repos/asf/ignite/blob/111e4474/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearPessimisticTxPrepareFuture.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearPessimisticTxPrepareFuture.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearPessimisticTxPrepareFuture.java
index ffe5373..691a2a8 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearPessimisticTxPrepareFuture.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearPessimisticTxPrepareFuture.java
@@ -135,7 +135,9 @@ public class GridNearPessimisticTxPrepareFuture extends 
GridNearTxPrepareFutureA
     }
 
     /** {@inheritDoc} */
-    @Override public void prepare() {
+    @Override public void prepare(boolean waitTopFut) {
+        assert waitTopFut;
+
         if (!tx.state(PREPARING)) {
             if (tx.setRollbackOnly()) {
                 if (tx.timedOut())

http://git-wip-us.apache.org/repos/asf/ignite/blob/111e4474/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
index e5ccad1..3ee2981 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
@@ -798,8 +798,8 @@ public class GridNearTxLocal extends GridDhtTxLocalAdapter {
             // Future must be created before any exception can be thrown.
             if (optimistic()) {
                 fut = serializable() ?
-                    new GridNearOptimisticSerializableTxPrepareFuture(cctx, 
this, waitTopFut) :
-                    new GridNearOptimisticTxPrepareFuture(cctx, this, 
waitTopFut);
+                    new GridNearOptimisticSerializableTxPrepareFuture(cctx, 
this) :
+                    new GridNearOptimisticTxPrepareFuture(cctx, this);
             }
             else
                 fut = new GridNearPessimisticTxPrepareFuture(cctx, this);
@@ -813,7 +813,7 @@ public class GridNearTxLocal extends GridDhtTxLocalAdapter {
 
         mapExplicitLocks();
 
-        fut.prepare();
+        fut.prepare(waitTopFut);
 
         return fut;
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/111e4474/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareFutureAdapter.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareFutureAdapter.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareFutureAdapter.java
index 52cad91..a587687 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareFutureAdapter.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareFutureAdapter.java
@@ -130,8 +130,10 @@ public abstract class GridNearTxPrepareFutureAdapter 
extends
 
     /**
      * Prepares transaction.
+     *
+     * @param waitTopFut If {@code false} does not wait for affinity change 
future.
      */
-    public abstract void prepare();
+    public abstract void prepare(boolean waitTopFut);
 
     /**
      * @param nodeId Sender.

Reply via email to