You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by dg...@apache.org on 2019/07/02 11:32:48 UTC
[ignite] branch master updated: IGNITE-11874 Fix mismatch between
idle_verify results with and without -dump option
This is an automated email from the ASF dual-hosted git repository.
dgovorukhin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git
The following commit(s) were added to refs/heads/master by this push:
new 062cce1 IGNITE-11874 Fix mismatch between idle_verify results with and without -dump option
062cce1 is described below
commit 062cce1dae9687988630d2b1aedac508933643e8
Author: denis-chudov <dc...@gridgain.com>
AuthorDate: Tue Jul 2 14:32:28 2019 +0300
IGNITE-11874 Fix mismatch between idle_verify results with and without -dump option
Signed-off-by: Dmitriy Govorukhin <dm...@gmail.com>
---
.../cache/verify/VerifyBackupPartitionsTaskV2.java | 4 +-
.../util/GridCommandHandlerAbstractTest.java | 53 ++++++++++++++++++++++
.../apache/ignite/util/GridCommandHandlerTest.java | 39 ++++++++++------
3 files changed, 80 insertions(+), 16 deletions(-)
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/verify/VerifyBackupPartitionsTaskV2.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/verify/VerifyBackupPartitionsTaskV2.java
index 165b0ea..a4fd83d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/verify/VerifyBackupPartitionsTaskV2.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/verify/VerifyBackupPartitionsTaskV2.java
@@ -524,14 +524,14 @@ public class VerifyBackupPartitionsTaskV2 extends ComputeTaskAdapter<VisorIdleVe
return desc.cacheType().userCache() && GridCacheUtils.isPersistentCache(cc, dsCfg);
case ALL:
- break;
+ return true;
default:
assert false : "Illegal cache filter: " + vdta.getCacheFilterEnum();
}
}
- return true;
+ return desc.cacheType().userCache() || !F.isEmpty(arg.getCaches());
}
/**
diff --git a/modules/core/src/test/java/org/apache/ignite/util/GridCommandHandlerAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/util/GridCommandHandlerAbstractTest.java
index 69bc64c..60fd77a 100644
--- a/modules/core/src/test/java/org/apache/ignite/util/GridCommandHandlerAbstractTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/util/GridCommandHandlerAbstractTest.java
@@ -23,16 +23,25 @@ import java.nio.file.DirectoryStream;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
+import java.util.stream.Collectors;
+import org.apache.ignite.Ignite;
import org.apache.ignite.configuration.AtomicConfiguration;
import org.apache.ignite.configuration.ConnectorConfiguration;
import org.apache.ignite.configuration.DataRegionConfiguration;
import org.apache.ignite.configuration.DataStorageConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.configuration.WALMode;
+import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.TestRecordingCommunicationSpi;
import org.apache.ignite.internal.commandline.CommandHandler;
+import org.apache.ignite.internal.processors.cache.GridCacheFuture;
+import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxPrepareFuture;
+import org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxPrepareFutureAdapter;
+import org.apache.ignite.internal.processors.cache.transactions.IgniteInternalTx;
import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.internal.util.typedef.G;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.testframework.GridTestUtils;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
@@ -200,4 +209,48 @@ public class GridCommandHandlerAbstractTest extends GridCommonAbstractTest {
protected void injectTestSystemOut() {
System.setOut(new PrintStream(testOut));
}
+
+ /**
+ * Checks if all non-system txs and non-system mvcc futures are finished.
+ */
+ protected void checkUserFutures() {
+ for (Ignite ignite : G.allGrids()) {
+ IgniteEx ig = (IgniteEx)ignite;
+
+ final Collection<GridCacheFuture<?>> activeFuts = ig.context().cache().context().mvcc().activeFutures();
+
+ boolean hasFutures = false;
+
+ for (GridCacheFuture<?> fut : activeFuts) {
+ if (!fut.isDone()) {
+ //skipping system tx futures if possible
+ if (fut instanceof GridNearTxPrepareFutureAdapter
+ && ((GridNearTxPrepareFutureAdapter) fut).tx().system())
+ continue;
+
+ if (fut instanceof GridDhtTxPrepareFuture
+ && ((GridDhtTxPrepareFuture) fut).tx().system())
+ continue;
+
+ log.error("Expecting no active future [node=" + ig.localNode().id() + ", fut=" + fut + ']');
+
+ hasFutures = true;
+ }
+ }
+
+ if (hasFutures)
+ fail("Some mvcc futures are not finished");
+
+ Collection<IgniteInternalTx> txs = ig.context().cache().context().tm().activeTransactions()
+ .stream()
+ .filter(tx -> !tx.system())
+ .collect(Collectors.toSet());
+
+ for (IgniteInternalTx tx : txs)
+ log.error("Expecting no active transaction [node=" + ig.localNode().id() + ", tx=" + tx + ']');
+
+ if (!txs.isEmpty())
+ fail("Some transaction are not finished");
+ }
+ }
}
diff --git a/modules/core/src/test/java/org/apache/ignite/util/GridCommandHandlerTest.java b/modules/core/src/test/java/org/apache/ignite/util/GridCommandHandlerTest.java
index 7b26636..3dc0a9c 100644
--- a/modules/core/src/test/java/org/apache/ignite/util/GridCommandHandlerTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/util/GridCommandHandlerTest.java
@@ -63,6 +63,7 @@ import org.apache.ignite.internal.GridJobExecuteResponse;
import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.IgniteInternalFuture;
import org.apache.ignite.internal.TestRecordingCommunicationSpi;
+import org.apache.ignite.internal.client.util.GridConcurrentHashSet;
import org.apache.ignite.internal.commandline.CommandHandler;
import org.apache.ignite.internal.commandline.CommandList;
import org.apache.ignite.internal.commandline.argument.CommandArg;
@@ -100,6 +101,7 @@ import org.apache.ignite.internal.visor.tx.VisorTxTaskResult;
import org.apache.ignite.lang.IgniteBiPredicate;
import org.apache.ignite.lang.IgniteInClosure;
import org.apache.ignite.lang.IgnitePredicate;
+import org.apache.ignite.lang.IgniteUuid;
import org.apache.ignite.plugin.extensions.communication.Message;
import org.apache.ignite.testframework.GridTestUtils;
import org.apache.ignite.transactions.Transaction;
@@ -779,7 +781,7 @@ public class GridCommandHandlerTest extends GridCommandHandlerAbstractTest {
awaitPartitionMapExchange();
- checkFutures();
+ checkUserFutures();
}
/**
@@ -967,7 +969,7 @@ public class GridCommandHandlerTest extends GridCommandHandlerAbstractTest {
assertEquals(tx0.xid(), info.getXid());
assertEquals(1, map.size());
- }, "--tx", "--kill");
+ }, "--tx", "--xid", tx0.xid().toString(), "--kill");
tx0.finishFuture().get();
@@ -979,7 +981,7 @@ public class GridCommandHandlerTest extends GridCommandHandlerAbstractTest {
nearFinFut.get();
- checkFutures();
+ checkUserFutures();
}
/**
@@ -1029,6 +1031,8 @@ public class GridCommandHandlerTest extends GridCommandHandlerAbstractTest {
}
});
+ Set<IgniteUuid> xidSet = new GridConcurrentHashSet<>();
+
IgniteInternalFuture<?> fut = multithreadedAsync(new Runnable() {
@Override public void run() {
int id = idx.getAndIncrement();
@@ -1036,6 +1040,8 @@ public class GridCommandHandlerTest extends GridCommandHandlerAbstractTest {
Ignite client = clients[id];
try (Transaction tx = client.transactions().txStart(PESSIMISTIC, READ_COMMITTED, 0, 1)) {
+ xidSet.add(tx.xid());
+
IgniteCache<Long, Long> cache = client.cache(DEFAULT_CACHE_NAME);
if (id != 0)
@@ -1124,8 +1130,13 @@ public class GridCommandHandlerTest extends GridCommandHandlerAbstractTest {
VisorTxTaskResult res = map.get(grid.localNode());
+ List<VisorTxInfo> infos = res.getInfos()
+ .stream()
+ .filter(info -> xidSet.contains(info.getNearXid()))
+ .collect(Collectors.toList());
+
// Validate queue length on backups.
- assertEquals(clients.length, res.getInfos().size());
+ assertEquals(clients.length, infos.size());
}
}, "--tx");
@@ -1155,7 +1166,7 @@ public class GridCommandHandlerTest extends GridCommandHandlerAbstractTest {
assertEquals(tc - 1, cur.longValue());
- checkFutures();
+ checkUserFutures();
}
/**
@@ -1485,21 +1496,21 @@ public class GridCommandHandlerTest extends GridCommandHandlerAbstractTest {
);
testCacheIdleVerifyMultipleCacheFilterOptionsCommon(
true,
- "idle_verify check has finished, found 196 partitions",
+ "idle_verify check has finished, found",
null,
- "--cache", "idle_verify", "--dump", ".*", "--exclude-caches", "wrong.*"
+ "--cache", "idle_verify", "--dump", "--exclude-caches", "wrong.*"
);
testCacheIdleVerifyMultipleCacheFilterOptionsCommon(
true,
"idle_verify check has finished, found 32 partitions",
null,
- "--cache", "idle_verify", "--dump", "shared.*", "--cache-filter", "ALL"
+ "--cache", "idle_verify", "--dump", "shared.*"
);
testCacheIdleVerifyMultipleCacheFilterOptionsCommon(
true,
"idle_verify check has finished, found 160 partitions",
null,
- "--cache", "idle_verify", "--dump", "shared.*,wrong.*", "--cache-filter", "ALL"
+ "--cache", "idle_verify", "--dump", "shared.*,wrong.*"
);
testCacheIdleVerifyMultipleCacheFilterOptionsCommon(
true,
@@ -1509,9 +1520,9 @@ public class GridCommandHandlerTest extends GridCommandHandlerAbstractTest {
);
testCacheIdleVerifyMultipleCacheFilterOptionsCommon(
true,
- "There are no caches matching given filter options.",
+ "idle_verify check has finished, found 160 partitions",
null,
- "--cache", "idle_verify", "--dump", "shared.*,wrong.*", "--cache-filter", "SYSTEM"
+ "--cache", "idle_verify", "--dump", "shared.*,wrong.*"
);
testCacheIdleVerifyMultipleCacheFilterOptionsCommon(
true,
@@ -1529,13 +1540,13 @@ public class GridCommandHandlerTest extends GridCommandHandlerAbstractTest {
true,
"idle_verify check has finished, no conflicts have been found.",
null,
- "--cache", "idle_verify", ".*", "--exclude-caches", "wrong-.*", "--cache-filter", "DEFAULT"
+ "--cache", "idle_verify", "--exclude-caches", "wrong.*"
);
testCacheIdleVerifyMultipleCacheFilterOptionsCommon(
true,
"idle_verify check has finished, no conflicts have been found.",
null,
- "--cache", "idle_verify", "--dump", ".*", "--cache-filter", "PERSISTENT"
+ "--cache", "idle_verify", "--dump", "--cache-filter", "PERSISTENT"
);
}
@@ -1681,7 +1692,7 @@ public class GridCommandHandlerTest extends GridCommandHandlerAbstractTest {
injectTestSystemOut();
- corruptingAndCheckDefaultCache(ignite, "ALL");
+ corruptingAndCheckDefaultCache(ignite, "USER");
}
/**