You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2015/07/21 11:42:21 UTC
incubator-ignite git commit: # ignite-1090 finishTxs() should wait
for rolling back transactions
Repository: incubator-ignite
Updated Branches:
refs/heads/ignite-1090 [created] 8446d0fb5
# ignite-1090 finishTxs() should wait for rolling back transactions
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/8446d0fb
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/8446d0fb
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/8446d0fb
Branch: refs/heads/ignite-1090
Commit: 8446d0fb55a92b218715e6ffacf2237a6e5eb6a8
Parents: f62744e
Author: sboikov <sb...@gridgain.com>
Authored: Tue Jul 21 10:32:40 2015 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Tue Jul 21 12:41:44 2015 +0300
----------------------------------------------------------------------
.../processors/cache/GridCacheMvccManager.java | 14 ++++++++++++++
.../distributed/dht/GridDhtTxFinishFuture.java | 13 ++++++++++++-
.../preloader/GridDhtPartitionsExchangeFuture.java | 10 ++++++++--
.../near/GridNearOptimisticTxPrepareFuture.java | 4 +++-
.../near/GridNearPessimisticTxPrepareFuture.java | 2 +-
.../distributed/near/GridNearTxFinishFuture.java | 17 ++++++++++++++++-
.../cache/transactions/IgniteTxManager.java | 5 ++---
.../GridCacheAbstractNodeRestartSelfTest.java | 6 ++++++
8 files changed, 62 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8446d0fb/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvccManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvccManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvccManager.java
index bfb23e8..a0d9051 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvccManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvccManager.java
@@ -603,6 +603,20 @@ public class GridCacheMvccManager extends GridCacheSharedManagerAdapter {
}
/**
+ * @return Locked keys.
+ */
+ public Collection<IgniteTxKey> lockedKeys() {
+ return locked.keySet();
+ }
+
+ /**
+ * @return Locked near keys.
+ */
+ public Collection<IgniteTxKey> nearLockedKeys() {
+ return nearLocked.keySet();
+ }
+
+ /**
* This method has poor performance, so use with care. It is currently only used by {@code DGC}.
*
* @return Remote candidates.
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8446d0fb/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishFuture.java
index 7fd79e5..9aa9c17 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishFuture.java
@@ -466,7 +466,18 @@ public final class GridDhtTxFinishFuture<K, V> extends GridCompoundIdentityFutur
/** {@inheritDoc} */
@Override public String toString() {
- return S.toString(GridDhtTxFinishFuture.class, this, super.toString());
+ Collection<String> futs = F.viewReadOnly(futures(), new C1<IgniteInternalFuture<?>, String>() {
+ @SuppressWarnings("unchecked")
+ @Override public String apply(IgniteInternalFuture<?> f) {
+ return "[node=" + ((MiniFuture)f).node().id() +
+ ", loc=" + ((MiniFuture)f).node().isLocal() +
+ ", done=" + f.isDone() + "]";
+ }
+ });
+
+ return S.toString(GridDhtTxFinishFuture.class, this,
+ "innerFuts", futs,
+ "super", super.toString());
}
/**
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8446d0fb/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java
index b3f19f6..3664220 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java
@@ -741,13 +741,19 @@ public class GridDhtPartitionsExchangeFuture extends GridFutureAdapter<AffinityT
U.warn(log, "Failed to wait for locks release future. " +
"Dumping pending objects that might be the cause: " + cctx.localNodeId());
- U.warn(log, "Locked entries:");
+ U.warn(log, "Locked keys:");
+
+ for (IgniteTxKey key : cctx.mvcc().lockedKeys())
+ U.warn(log, "Locked key: " + key);
+
+ for (IgniteTxKey key : cctx.mvcc().nearLockedKeys())
+ U.warn(log, "Locked near key: " + key);
Map<IgniteTxKey, Collection<GridCacheMvccCandidate>> locks =
cctx.mvcc().unfinishedLocks(exchId.topologyVersion());
for (Map.Entry<IgniteTxKey, Collection<GridCacheMvccCandidate>> e : locks.entrySet())
- U.warn(log, "Locked entry [key=" + e.getKey() + ", mvcc=" + e.getValue() + ']');
+ U.warn(log, "Awaited locked entry [key=" + e.getKey() + ", mvcc=" + e.getValue() + ']');
}
}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8446d0fb/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 44b7997..234121b 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
@@ -50,6 +50,7 @@ import static org.apache.ignite.transactions.TransactionState.*;
public class GridNearOptimisticTxPrepareFuture extends GridNearTxPrepareFutureAdapter
implements GridCacheMvccFuture<IgniteInternalTx> {
/** */
+ @GridToStringInclude
private Collection<IgniteTxKey> lockKeys = new GridConcurrentHashSet<>();
/**
@@ -662,7 +663,8 @@ public class GridNearOptimisticTxPrepareFuture extends GridNearTxPrepareFutureAd
});
return S.toString(GridNearOptimisticTxPrepareFuture.class, this,
- "futs", futs,
+ "innerFuts", futs,
+ "tx", tx,
"super", super.toString());
}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8446d0fb/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 7006114..f51b4b8 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
@@ -265,7 +265,7 @@ public class GridNearPessimisticTxPrepareFuture extends GridNearTxPrepareFutureA
});
return S.toString(GridNearPessimisticTxPrepareFuture.class, this,
- "futs", futs,
+ "innerFuts", futs,
"super", super.toString());
}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8446d0fb/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java
index 3052810..6e1195f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java
@@ -403,7 +403,22 @@ public final class GridNearTxFinishFuture<K, V> extends GridCompoundIdentityFutu
/** {@inheritDoc} */
@Override public String toString() {
- return S.toString(GridNearTxFinishFuture.class, this, super.toString());
+ Collection<String> futs = F.viewReadOnly(futures(), new C1<IgniteInternalFuture<?>, String>() {
+ @SuppressWarnings("unchecked")
+ @Override public String apply(IgniteInternalFuture<?> f) {
+ if (isMini(f)) {
+ return "[node=" + ((MiniFuture) f).node().id() +
+ ", loc=" + ((MiniFuture) f).node().isLocal() +
+ ", done=" + f.isDone() + "]";
+ }
+ else
+ return "[loc=true, done=" + f.isDone() + "]";
+ }
+ });
+
+ return S.toString(GridNearTxFinishFuture.class, this,
+ "innerFuts", futs,
+ "super", super.toString());
}
/**
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8446d0fb/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 ee634ab..630330e 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
@@ -538,10 +538,9 @@ public class IgniteTxManager extends GridCacheSharedManagerAdapter {
TransactionState state = tx.state();
AffinityTopologyVersion txTopVer = tx.topologyVersion();
- if ((state == PREPARING || state == PREPARED || state == COMMITTING)
- && txTopVer.compareTo(AffinityTopologyVersion.ZERO) > 0 && txTopVer.compareTo(topVer) < 0) {
+ if ((state != ACTIVE && state != COMMITTED && state != ROLLED_BACK && state != UNKNOWN)
+ && txTopVer.compareTo(AffinityTopologyVersion.ZERO) > 0 && txTopVer.compareTo(topVer) < 0)
res.add(tx.finishFuture());
- }
}
}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8446d0fb/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheAbstractNodeRestartSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheAbstractNodeRestartSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheAbstractNodeRestartSelfTest.java
index ec1a12c..311a3e9 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheAbstractNodeRestartSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheAbstractNodeRestartSelfTest.java
@@ -507,6 +507,8 @@ public abstract class GridCacheAbstractNodeRestartSelfTest extends GridCommonAbs
info("Starting put thread: " + gridIdx);
+ Thread.currentThread().setName("put-worker-" + grid(gridIdx).name());
+
IgniteCache<Integer, String> cache = grid(gridIdx).cache(CACHE_NAME);
while (System.currentTimeMillis() < endTime && err.get() == null) {
@@ -628,6 +630,8 @@ public abstract class GridCacheAbstractNodeRestartSelfTest extends GridCommonAbs
Ignite ignite = grid(gridIdx);
+ Thread.currentThread().setName("put-worker-" + ignite.name());
+
UUID locNodeId = ignite.cluster().localNode().id();
IgniteCache<Integer, String> cache = ignite.cache(CACHE_NAME);
@@ -784,6 +788,8 @@ public abstract class GridCacheAbstractNodeRestartSelfTest extends GridCommonAbs
Ignite ignite = grid(gridIdx);
+ Thread.currentThread().setName("put-worker-" + ignite.name());
+
UUID locNodeId = ignite.cluster().localNode().id();
IgniteCache<Integer, String> cache = ignite.cache(CACHE_NAME);