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/04/02 16:30:23 UTC
[1/2] incubator-ignite git commit: #ignite-gg-9966: Add node
validator.
Repository: incubator-ignite
Updated Branches:
refs/heads/ignite-gg-9966-1 [created] 4abb0e8ec
#ignite-gg-9966: Add node validator.
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/ccfe100b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/ccfe100b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/ccfe100b
Branch: refs/heads/ignite-gg-9966-1
Commit: ccfe100b4b6752f651922ac2ee2fcdeea848f52f
Parents: 07ca9fa
Author: ivasilinets <iv...@gridgain.com>
Authored: Thu Apr 2 17:25:18 2015 +0300
Committer: ivasilinets <iv...@gridgain.com>
Committed: Thu Apr 2 17:25:18 2015 +0300
----------------------------------------------------------------------
.../internal/managers/GridManagerAdapter.java | 11 +-
.../ignite/internal/spi/EntNodeValidator.java | 59 +++++++++++
.../ignite/spi/discovery/NodeValidator.java | 58 +++++++++++
.../spi/discovery/tcp/TcpDiscoverySpi.java | 104 -------------------
4 files changed, 127 insertions(+), 105 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/ccfe100b/modules/core/src/main/java/org/apache/ignite/internal/managers/GridManagerAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/GridManagerAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/GridManagerAdapter.java
index 982ca86..fb4f5d4 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/GridManagerAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/GridManagerAdapter.java
@@ -28,9 +28,11 @@ import org.apache.ignite.internal.util.tostring.*;
import org.apache.ignite.internal.util.typedef.*;
import org.apache.ignite.internal.util.typedef.internal.*;
import org.apache.ignite.lang.*;
+import org.apache.ignite.plugin.*;
import org.apache.ignite.plugin.extensions.communication.*;
import org.apache.ignite.plugin.security.*;
import org.apache.ignite.spi.*;
+import org.apache.ignite.spi.discovery.*;
import org.apache.ignite.spi.swapspace.*;
import org.jetbrains.annotations.*;
@@ -477,7 +479,14 @@ public abstract class GridManagerAdapter<T extends IgniteSpi> implements GridMan
return err;
}
- return null;
+ for (PluginProvider pl : ctx.plugins().allProviders()) {
+ NodeValidator val = (NodeValidator) pl.createComponent(ctx.plugins().pluginContextForProvider(pl), NodeValidator.class);
+
+ if (val != null)
+ return val.validateNode(ctx.discovery().localNode(), node);
+ }
+
+ return new NodeValidator().validateNode(ctx.discovery().localNode(), node);
}
@Override public Collection<GridSecuritySubject> authenticatedSubjects() {
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/ccfe100b/modules/core/src/main/java/org/apache/ignite/internal/spi/EntNodeValidator.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/spi/EntNodeValidator.java b/modules/core/src/main/java/org/apache/ignite/internal/spi/EntNodeValidator.java
new file mode 100644
index 0000000..08d445e
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/spi/EntNodeValidator.java
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.spi;
+
+import org.apache.ignite.cluster.*;
+import org.apache.ignite.internal.util.typedef.*;
+import org.apache.ignite.internal.util.typedef.internal.*;
+import org.apache.ignite.spi.*;
+import org.apache.ignite.spi.discovery.*;
+
+import java.util.*;
+
+import static org.apache.ignite.internal.IgniteNodeAttributes.*;
+
+/**
+ * Validate node's versions.
+ */
+public class EntNodeValidator extends NodeValidator {
+
+ /** {@inheritDoc} */
+ @Override public IgniteSpiNodeValidationResult validateNode(ClusterNode locNode, ClusterNode node) {
+ // Check version.
+ String locBuildVer = locNode.attribute(ATTR_BUILD_VER);
+ String rmtBuildVer = node.attribute(ATTR_BUILD_VER);
+
+ if (!F.eq(rmtBuildVer, locBuildVer)) {
+ Collection<String> locCompatibleVers = locNode.attribute(ATTR_COMPATIBLE_VERS);
+ Collection<String> rmtCompatibleVers = node.attribute(ATTR_COMPATIBLE_VERS);
+
+ if (F.contains(rmtCompatibleVers, locBuildVer) || F.contains(locCompatibleVers, rmtBuildVer)) {
+ String errMsg = "Local node's build version differs from remote node's, " +
+ "but they are compatible (will continue join process) " +
+ "[locBuildVer=" + locBuildVer + ", rmtBuildVer=" + rmtBuildVer +
+ ", locNodeAddrs=" + U.addressesAsString(locNode) +
+ ", rmtNodeAddrs=" + U.addressesAsString(node) +
+ ", locNodeId=" + locNode.id() + ", rmtNodeId=" + node.id() + ']';
+
+ return new IgniteSpiNodeValidationResult(node.id(), errMsg, errMsg);
+ }
+ }
+
+ return null;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/ccfe100b/modules/core/src/main/java/org/apache/ignite/spi/discovery/NodeValidator.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/NodeValidator.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/NodeValidator.java
new file mode 100644
index 0000000..9fea060
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/NodeValidator.java
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.spi.discovery;
+
+import org.apache.ignite.cluster.*;
+import org.apache.ignite.internal.util.typedef.*;
+import org.apache.ignite.internal.util.typedef.internal.*;
+import org.apache.ignite.spi.*;
+
+import static org.apache.ignite.internal.IgniteNodeAttributes.*;
+
+/**
+ * Validate node's versions.
+ */
+public class NodeValidator {
+ /**
+ * @param locNode Local node.
+ * @param node Remote node.
+ * @return Ignite spi node validation result.
+ */
+ public IgniteSpiNodeValidationResult validateNode(ClusterNode locNode, ClusterNode node) {
+ // Check version.
+ String locBuildVer = locNode.attribute(ATTR_BUILD_VER);
+ String rmtBuildVer = node.attribute(ATTR_BUILD_VER);
+
+ if (!F.eq(rmtBuildVer, locBuildVer)) {
+ // OS nodes don't support rolling updates.
+ if (!locBuildVer.equals(rmtBuildVer)) {
+ String errMsg = "Local node and remote node have different version numbers " +
+ "(node will not join, Ignite does not support rolling updates, " +
+ "so versions must be exactly the same) " +
+ "[locBuildVer=" + locBuildVer + ", rmtBuildVer=" + rmtBuildVer +
+ ", locNodeAddrs=" + U.addressesAsString(locNode) +
+ ", rmtNodeAddrs=" + U.addressesAsString(node) +
+ ", locNodeId=" + locNode.id() + ", rmtNodeId=" + node.id() + ']';
+
+ return new IgniteSpiNodeValidationResult(node.id(), errMsg, errMsg);
+ }
+ }
+
+ return null;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/ccfe100b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
index d5c05f7..d17f9b3 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
@@ -3254,110 +3254,6 @@ public class TcpDiscoverySpi extends TcpDiscoverySpiAdapter implements TcpDiscov
return;
}
- // Check version.
- String locBuildVer = locNode.attribute(ATTR_BUILD_VER);
- String rmtBuildVer = node.attribute(ATTR_BUILD_VER);
-
- if (!F.eq(rmtBuildVer, locBuildVer)) {
- // OS nodes don't support rolling updates.
- if (!locBuildVer.equals(rmtBuildVer)) {
- String errMsg = "Local node and remote node have different version numbers " +
- "(node will not join, Ignite does not support rolling updates, " +
- "so versions must be exactly the same) " +
- "[locBuildVer=" + locBuildVer + ", rmtBuildVer=" + rmtBuildVer +
- ", locNodeAddrs=" + U.addressesAsString(locNode) +
- ", rmtNodeAddrs=" + U.addressesAsString(node) +
- ", locNodeId=" + locNode.id() + ", rmtNodeId=" + msg.creatorNodeId() + ']';
-
- LT.warn(log, null, errMsg);
-
- // Always output in debug.
- if (log.isDebugEnabled())
- log.debug(errMsg);
-
- try {
- String sndMsg = "Local node and remote node have different version numbers " +
- "(node will not join, Ignite does not support rolling updates, " +
- "so versions must be exactly the same) " +
- "[locBuildVer=" + rmtBuildVer + ", rmtBuildVer=" + locBuildVer +
- ", locNodeAddrs=" + U.addressesAsString(node) + ", locPort=" + node.discoveryPort() +
- ", rmtNodeAddr=" + U.addressesAsString(locNode) + ", locNodeId=" + node.id() +
- ", rmtNodeId=" + locNode.id() + ']';
-
- trySendMessageDirectly(node,
- new TcpDiscoveryCheckFailedMessage(locNodeId, sndMsg));
- }
- catch (IgniteSpiException e) {
- if (log.isDebugEnabled())
- log.debug("Failed to send version check failed message to node " +
- "[node=" + node + ", err=" + e.getMessage() + ']');
-
- onException("Failed to send version check failed message to node " +
- "[node=" + node + ", err=" + e.getMessage() + ']', e);
- }
-
- // Ignore join request.
- return;
- }
-
- Collection<String> locCompatibleVers = locNode.attribute(ATTR_COMPATIBLE_VERS);
- Collection<String> rmtCompatibleVers = node.attribute(ATTR_COMPATIBLE_VERS);
-
- if (F.contains(rmtCompatibleVers, locBuildVer) || F.contains(locCompatibleVers, rmtBuildVer)) {
- String errMsg = "Local node's build version differs from remote node's, " +
- "but they are compatible (will continue join process) " +
- "[locBuildVer=" + locBuildVer + ", rmtBuildVer=" + rmtBuildVer +
- ", locNodeAddrs=" + U.addressesAsString(locNode) +
- ", rmtNodeAddrs=" + U.addressesAsString(node) +
- ", locNodeId=" + locNode.id() + ", rmtNodeId=" + msg.creatorNodeId() + ']';
-
- LT.warn(log, null, errMsg);
-
- // Always output in debug.
- if (log.isDebugEnabled())
- log.debug(errMsg);
- }
- else {
- String errMsg = "Local node's and remote node's build versions are not compatible " +
- "(topologies built with different Ignite versions " +
- "are supported in Enterprise version only) " +
- "[locBuildVer=" + locBuildVer + ", rmtBuildVer=" + rmtBuildVer +
- ", locNodeAddrs=" + U.addressesAsString(locNode) +
- ", rmtNodeAddrs=" + U.addressesAsString(node) +
- ", locNodeId=" + locNode.id() + ", rmtNodeId=" + msg.creatorNodeId() + ']';
-
- LT.warn(log, null, errMsg);
-
- // Always output in debug.
- if (log.isDebugEnabled())
- log.debug(errMsg);
-
- try {
- String sndMsg = "Local node's and remote node's build versions are not compatible " +
- "(topologies built with different Ignite versions " +
- "are supported in Enterprise version only) " +
- " [locBuildVer=" + rmtBuildVer + ", rmtBuildVer=" + locBuildVer +
- ", locNodeAddrs=" + U.addressesAsString(node) + ", locPort=" + node.discoveryPort() +
- ", rmtNodeAddr=" + U.addressesAsString(locNode) + ", locNodeId=" + node.id() +
- ", rmtNodeId=" + locNode.id() + ']';
-
- trySendMessageDirectly(node,
- new TcpDiscoveryCheckFailedMessage(locNodeId, sndMsg));
- }
- catch (IgniteSpiException e) {
- if (log.isDebugEnabled())
- log.debug("Failed to send version check failed message to node " +
- "[node=" + node + ", err=" + e.getMessage() + ']');
-
- onException("Failed to send version check failed message to node " +
- "[node=" + node + ", err=" + e.getMessage() + ']', e);
- }
-
- // Ignore join request.
- return;
- }
- }
-
String locMarsh = locNode.attribute(ATTR_MARSHALLER);
String rmtMarsh = node.attribute(ATTR_MARSHALLER);
[2/2] incubator-ignite git commit: #ignite-gg-9966: Add node
validator.
Posted by sb...@apache.org.
#ignite-gg-9966: Add node validator.
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/4abb0e8e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/4abb0e8e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/4abb0e8e
Branch: refs/heads/ignite-gg-9966-1
Commit: 4abb0e8ec8814431282963d929f2838d528f678c
Parents: ccfe100
Author: ivasilinets <iv...@gridgain.com>
Authored: Thu Apr 2 17:28:56 2015 +0300
Committer: ivasilinets <iv...@gridgain.com>
Committed: Thu Apr 2 17:28:56 2015 +0300
----------------------------------------------------------------------
.../internal/managers/GridManagerAdapter.java | 17 ++++++++++++++---
1 file changed, 14 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4abb0e8e/modules/core/src/main/java/org/apache/ignite/internal/managers/GridManagerAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/GridManagerAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/GridManagerAdapter.java
index fb4f5d4..ebd35a4 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/GridManagerAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/GridManagerAdapter.java
@@ -479,14 +479,25 @@ public abstract class GridManagerAdapter<T extends IgniteSpi> implements GridMan
return err;
}
+ boolean defValidation = true;
+
for (PluginProvider pl : ctx.plugins().allProviders()) {
NodeValidator val = (NodeValidator) pl.createComponent(ctx.plugins().pluginContextForProvider(pl), NodeValidator.class);
- if (val != null)
- return val.validateNode(ctx.discovery().localNode(), node);
+ if (val != null) {
+ defValidation = false;
+
+ IgniteSpiNodeValidationResult err = val.validateNode(ctx.discovery().localNode(), node);
+
+ if (err != null)
+ return err;
+ }
}
- return new NodeValidator().validateNode(ctx.discovery().localNode(), node);
+ if (defValidation)
+ return new NodeValidator().validateNode(ctx.discovery().localNode(), node);
+
+ return null;
}
@Override public Collection<GridSecuritySubject> authenticatedSubjects() {