You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ag...@apache.org on 2018/11/21 17:37:24 UTC
ignite git commit: IGNITE-10339 Fixed cluster connection when using
validate indexes from control.sh - Fixes #5458.
Repository: ignite
Updated Branches:
refs/heads/master ceba2145d -> 5fc9a3fc1
IGNITE-10339 Fixed cluster connection when using validate indexes from control.sh - Fixes #5458.
Signed-off-by: Alexey Goncharuk <al...@gmail.com>
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/5fc9a3fc
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/5fc9a3fc
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/5fc9a3fc
Branch: refs/heads/master
Commit: 5fc9a3fc1ef5c486e2656661e2e811b235b6543f
Parents: ceba214
Author: Ivan Daschinskiy <iv...@gmail.com>
Authored: Wed Nov 21 20:35:23 2018 +0300
Committer: Alexey Goncharuk <al...@gmail.com>
Committed: Wed Nov 21 20:35:23 2018 +0300
----------------------------------------------------------------------
.../internal/commandline/CommandHandler.java | 48 ++++++++++----------
.../verify/VisorValidateIndexesJobResult.java | 9 ++++
.../verify/VisorValidateIndexesTaskArg.java | 23 ++++++++--
.../visor/verify/VisorValidateIndexesTask.java | 29 ++++++++++++
.../util/GridCommandHandlerIndexingTest.java | 2 +-
5 files changed, 83 insertions(+), 28 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/5fc9a3fc/modules/core/src/main/java/org/apache/ignite/internal/commandline/CommandHandler.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/CommandHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/commandline/CommandHandler.java
index d2deb32..56fbfae 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/commandline/CommandHandler.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/commandline/CommandHandler.java
@@ -812,39 +812,41 @@ public class CommandHandler {
private void cacheValidateIndexes(GridClient client, CacheArguments cacheArgs) throws GridClientException {
VisorValidateIndexesTaskArg taskArg = new VisorValidateIndexesTaskArg(
cacheArgs.caches(),
+ cacheArgs.nodeId() != null ? Collections.singleton(cacheArgs.nodeId()) : null,
cacheArgs.checkFirst(),
cacheArgs.checkThrough()
);
- UUID nodeId = cacheArgs.nodeId() == null ? BROADCAST_UUID : cacheArgs.nodeId();
-
VisorValidateIndexesTaskResult taskRes = executeTaskByNameOnNode(
- client, VALIDATE_INDEXES_TASK, taskArg, nodeId);
+ client, VALIDATE_INDEXES_TASK, taskArg, null);
if (!F.isEmpty(taskRes.exceptions())) {
log("Index validation failed on nodes:");
for (Map.Entry<UUID, Exception> e : taskRes.exceptions().entrySet()) {
- log("Node ID = " + e.getKey());
+ log(i("Node ID = " + e.getKey()));
- log("Exception message:");
- log(e.getValue().getMessage());
+ log(i("Exception message:"));
+ log(i(e.getValue().getMessage(), 2));
nl();
}
}
+ boolean errors = false;
+
for (Map.Entry<UUID, VisorValidateIndexesJobResult> nodeEntry : taskRes.results().entrySet()) {
- boolean errors = false;
+ if (!nodeEntry.getValue().hasIssues())
+ continue;
- log("validate_indexes result on node " + nodeEntry.getKey() + ":");
+ errors = true;
+
+ log("Index issues found on node " + nodeEntry.getKey() + ":");
Collection<IndexIntegrityCheckIssue> integrityCheckFailures = nodeEntry.getValue().integrityCheckFailures();
if (!integrityCheckFailures.isEmpty()) {
- errors = true;
-
for (IndexIntegrityCheckIssue is : integrityCheckFailures)
- log("\t" + is.toString());
+ log(i(is.toString()));
}
Map<PartitionKey, ValidateIndexesPartitionResult> partRes = nodeEntry.getValue().partitionResult();
@@ -853,12 +855,10 @@ public class CommandHandler {
ValidateIndexesPartitionResult res = e.getValue();
if (!res.issues().isEmpty()) {
- errors = true;
-
- log("\t" + e.getKey().toString() + " " + e.getValue().toString());
+ log(i(e.getKey().toString() + " " + e.getValue().toString()));
for (IndexValidationIssue is : res.issues())
- log("\t\t" + is.toString());
+ log(i(is.toString(), 2));
}
}
@@ -868,20 +868,20 @@ public class CommandHandler {
ValidateIndexesPartitionResult res = e.getValue();
if (!res.issues().isEmpty()) {
- errors = true;
-
- log("\tSQL Index " + e.getKey() + " " + e.getValue().toString());
+ log(i("SQL Index " + e.getKey() + " " + e.getValue().toString()));
for (IndexValidationIssue is : res.issues())
- log("\t\t" + is.toString());
+ log(i(is.toString(),2));
}
}
-
- if (!errors)
- log("no issues found.\n");
- else
- log("issues found (listed above).\n");
}
+
+ if (!errors)
+ log("no issues found.");
+ else
+ log("issues found (listed above).");
+
+ nl();
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/5fc9a3fc/modules/core/src/main/java/org/apache/ignite/internal/visor/verify/VisorValidateIndexesJobResult.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/verify/VisorValidateIndexesJobResult.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/verify/VisorValidateIndexesJobResult.java
index f84fc1a..6d7f765 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/verify/VisorValidateIndexesJobResult.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/verify/VisorValidateIndexesJobResult.java
@@ -92,6 +92,15 @@ public class VisorValidateIndexesJobResult extends VisorDataTransferObject {
return integrityCheckFailures == null ? Collections.emptyList() : integrityCheckFailures;
}
+ /**
+ * @return {@code true} If any indexes issues found on node, otherwise returns {@code false}.
+ */
+ public boolean hasIssues() {
+ return (integrityCheckFailures != null && !integrityCheckFailures.isEmpty()) ||
+ (partRes != null && partRes.entrySet().stream().anyMatch(e -> !e.getValue().issues().isEmpty())) ||
+ (idxRes != null && idxRes.entrySet().stream().anyMatch(e -> !e.getValue().issues().isEmpty()));
+ }
+
/** {@inheritDoc} */
@Override protected void writeExternalData(ObjectOutput out) throws IOException {
U.writeMap(out, partRes);
http://git-wip-us.apache.org/repos/asf/ignite/blob/5fc9a3fc/modules/core/src/main/java/org/apache/ignite/internal/visor/verify/VisorValidateIndexesTaskArg.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/verify/VisorValidateIndexesTaskArg.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/verify/VisorValidateIndexesTaskArg.java
index aa49977..6dbd961 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/verify/VisorValidateIndexesTaskArg.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/verify/VisorValidateIndexesTaskArg.java
@@ -21,12 +21,14 @@ import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.util.Set;
+import java.util.UUID;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.internal.visor.VisorDataTransferObject;
+
/**
- * Arguments for task {@link VisorIdleVerifyTask}
+ *
*/
public class VisorValidateIndexesTaskArg extends VisorDataTransferObject {
/** */
@@ -41,6 +43,9 @@ public class VisorValidateIndexesTaskArg extends VisorDataTransferObject {
/** Check through K element (skip K-1, check Kth). */
private int checkThrough;
+ /** Nodes on which task will run. */
+ private Set<UUID> nodes;
+
/**
* Default constructor.
*/
@@ -51,10 +56,11 @@ public class VisorValidateIndexesTaskArg extends VisorDataTransferObject {
/**
* @param caches Caches.
*/
- public VisorValidateIndexesTaskArg(Set<String> caches, int checkFirst, int checkThrough) {
+ public VisorValidateIndexesTaskArg(Set<String> caches, Set<UUID> nodes, int checkFirst, int checkThrough) {
this.caches = caches;
this.checkFirst = checkFirst;
this.checkThrough = checkThrough;
+ this.nodes = nodes;
}
@@ -66,6 +72,13 @@ public class VisorValidateIndexesTaskArg extends VisorDataTransferObject {
}
/**
+ * @return Nodes on which task will run. If {@code null}, task will run on all server nodes.
+ */
+ public Set<UUID> getNodes() {
+ return nodes;
+ }
+
+ /**
* @return checkFirst.
*/
public int getCheckFirst() {
@@ -84,6 +97,7 @@ public class VisorValidateIndexesTaskArg extends VisorDataTransferObject {
U.writeCollection(out, caches);
out.writeInt(checkFirst);
out.writeInt(checkThrough);
+ U.writeCollection(out, nodes);
}
/** {@inheritDoc} */
@@ -98,11 +112,14 @@ public class VisorValidateIndexesTaskArg extends VisorDataTransferObject {
checkFirst = -1;
checkThrough = -1;
}
+
+ if (protoVer > V2)
+ nodes = U.readSet(in);
}
/** {@inheritDoc} */
@Override public byte getProtocolVersion() {
- return V2;
+ return V3;
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/5fc9a3fc/modules/indexing/src/main/java/org/apache/ignite/internal/visor/verify/VisorValidateIndexesTask.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/visor/verify/VisorValidateIndexesTask.java b/modules/indexing/src/main/java/org/apache/ignite/internal/visor/verify/VisorValidateIndexesTask.java
index abb7f7e..922c53e 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/visor/verify/VisorValidateIndexesTask.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/visor/verify/VisorValidateIndexesTask.java
@@ -17,16 +17,22 @@
package org.apache.ignite.internal.visor.verify;
+import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import java.util.UUID;
import org.apache.ignite.IgniteException;
+import org.apache.ignite.cluster.ClusterNode;
import org.apache.ignite.compute.ComputeJobResult;
import org.apache.ignite.internal.processors.task.GridInternal;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.visor.VisorJob;
import org.apache.ignite.internal.visor.VisorMultiNodeTask;
+import org.apache.ignite.internal.visor.VisorTaskArgument;
import org.jetbrains.annotations.Nullable;
/**
@@ -58,6 +64,29 @@ public class VisorValidateIndexesTask extends VisorMultiNodeTask<VisorValidateIn
return new VisorValidateIndexesJob(arg, debug);
}
+ /** {@inheritDoc} */
+ @Override protected Collection<UUID> jobNodes(VisorTaskArgument<VisorValidateIndexesTaskArg> arg) {
+ Collection<ClusterNode> srvNodes = ignite.cluster().forServers().nodes();
+ Collection<UUID> ret = new ArrayList<>(srvNodes.size());
+
+ VisorValidateIndexesTaskArg taskArg = arg.getArgument();
+
+ Set<UUID> nodeIds = taskArg.getNodes() != null ? new HashSet<>(taskArg.getNodes()) : null;
+
+ if (nodeIds == null) {
+ for (ClusterNode node : srvNodes)
+ ret.add(node.id());
+ }
+ else {
+ for (ClusterNode node : srvNodes) {
+ if (nodeIds.contains(node.id()))
+ ret.add(node.id());
+ }
+ }
+
+ return ret;
+ }
+
/**
*
*/
http://git-wip-us.apache.org/repos/asf/ignite/blob/5fc9a3fc/modules/indexing/src/test/java/org/apache/ignite/util/GridCommandHandlerIndexingTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/util/GridCommandHandlerIndexingTest.java b/modules/indexing/src/test/java/org/apache/ignite/util/GridCommandHandlerIndexingTest.java
index c7693d2..dc5011f 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/util/GridCommandHandlerIndexingTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/util/GridCommandHandlerIndexingTest.java
@@ -113,7 +113,7 @@ public class GridCommandHandlerIndexingTest extends GridCommandHandlerTest {
}
/**
- * Tests that missing rows in H2 indexes are detected.
+ * Tests that corrupted pages in the index partition are detected.
*/
public void testCorruptedIndexPartitionShouldFailValidation() throws Exception {
Ignite ignite = prepareGridForTest();