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 2017/11/13 09:52:22 UTC
[28/28] ignite git commit: zk
zk
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/740c3b24
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/740c3b24
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/740c3b24
Branch: refs/heads/ignite-zk
Commit: 740c3b24f5d5d9fec166f9258d7bb0e31b1117fd
Parents: 2b75ecf
Author: sboikov <sb...@gridgain.com>
Authored: Mon Nov 13 12:41:35 2017 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Mon Nov 13 12:51:45 2017 +0300
----------------------------------------------------------------------
.../apache/ignite/internal/IgniteKernal.java | 2 +-
.../discovery/GridDiscoveryManager.java | 5 ++-
.../spi/discovery/zk/ZookeeperDiscoverySpi.java | 47 +++++++++++++++-----
.../java/org/apache/ZookeeperNodeStart.java | 46 +++++++++++++++++++
.../zk/ZookeeperDiscoverySpiBasicTest.java | 21 +++++++++
5 files changed, 107 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/740c3b24/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
index bde7be2..3e25b50 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
@@ -1315,7 +1315,7 @@ public class IgniteKernal implements IgniteEx, IgniteMXBean, Externalizable {
ackStart(rtBean);
if (!isDaemon())
- ctx.discovery().ackTopology(localNode().order());
+ ctx.discovery().ackTopology(ctx.discovery().localJoin().joinTopologyVersion().topologyVersion());
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/740c3b24/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
index a6737dc..022dc97 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
@@ -2522,8 +2522,9 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
switch (type) {
case EVT_NODE_JOINED: {
- assert !discoOrdered || topVer.topologyVersion() == node.order() : "Invalid topology version [topVer=" + topVer +
- ", node=" + node + ']';
+// TODO ZK
+// assert !discoOrdered || topVer.topologyVersion() == node.order() : "Invalid topology version [topVer=" + topVer +
+// ", node=" + node + ']';
try {
checkAttributes(F.asList(node));
http://git-wip-us.apache.org/repos/asf/ignite/blob/740c3b24/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/ZookeeperDiscoverySpi.java
----------------------------------------------------------------------
diff --git a/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/ZookeeperDiscoverySpi.java b/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/ZookeeperDiscoverySpi.java
index 41debd7..04dc947 100644
--- a/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/ZookeeperDiscoverySpi.java
+++ b/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/ZookeeperDiscoverySpi.java
@@ -292,10 +292,18 @@ public class ZookeeperDiscoverySpi extends IgniteSpiAdapter implements Discovery
private void initLocalNode() {
assert ignite != null;
- locNode = new ZookeeperClusterNode(ignite.configuration().getNodeId(),
+ Serializable consistentId = consistentId();
+
+ UUID nodeId = ignite.configuration().getNodeId();
+
+ // TODO ZK
+ if (consistentId == null)
+ consistentId = nodeId;
+
+ locNode = new ZookeeperClusterNode(nodeId,
locNodeVer,
locNodeAttrs,
- consistentId(),
+ consistentId,
ignite.configuration().isClientMode());
locNode.local(true);
@@ -652,19 +660,35 @@ public class ZookeeperDiscoverySpi extends IgniteSpiAdapter implements Discovery
if (oldNodes.ver == newNodes.ver)
return;
- long nextJoinOrder = oldNodes.nodesByOrder.isEmpty() ? 1 : oldNodes.nodesByOrder.lastKey() + 1;
-
TreeMap<Integer, ZKDiscoveryEvent> evts = new TreeMap<>();
- Set<Long> failed = new HashSet<>();
+ Set<Long> failedNodes = new HashSet<>();
+ Set<Long> joinedNodes = new HashSet<>();
synchronized (curTop) {
for (int v = oldNodes.ver + 1; v <= newNodes.ver; v++) {
- ZKNodeData data = joinHist.get(nextJoinOrder);
+ ZKNodeData joined = null;
+
+ for (ZKNodeData newData : newNodes.nodesByOrder.values()) {
+ if (!curTop.containsKey(newData.order) && !joinedNodes.contains(newData.order)) {
+ joined = newData;
+
+ break;
+ }
+ }
+
+ // TODO ZK: process joinHist
+
+ if (joined != null) {
+ joinedNodes.add(joined.order);
+
+ ZKNodeData data = joinHist.get(joined.order);
- if (data != null) {
ZKJoiningNodeData joinData = data.joinData;
+ if (joinData == null)
+ System.out.println();
+
assert joinData != null : data;
curTop.put(joinData.node.order(), joinData.node);
@@ -702,13 +726,11 @@ public class ZookeeperDiscoverySpi extends IgniteSpiAdapter implements Discovery
failedNode,
new ArrayList<>(curTop.values())));
}
-
- nextJoinOrder++;
}
else {
for (ZKNodeData oldData : oldNodes.nodesByOrder.values()) {
- if (!failed.contains(oldData.order) && !newNodes.nodesByOrder.containsKey(oldData.order)) {
- failed.add(oldData.order);
+ if (!failedNodes.contains(oldData.order) && !newNodes.nodesByOrder.containsKey(oldData.order)) {
+ failedNodes.add(oldData.order);
ZookeeperClusterNode failedNode = curTop.remove(oldData.order);
@@ -1026,6 +1048,9 @@ public class ZookeeperDiscoverySpi extends IgniteSpiAdapter implements Discovery
* @param joiningNodeData Discovery data.
*/
ZKJoiningNodeData(ZookeeperClusterNode node, Map<Integer, Serializable> joiningNodeData) {
+ assert node != null && node.id() != null : node;
+ assert joiningNodeData != null;
+
this.node = node;
this.joiningNodeData = joiningNodeData;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/740c3b24/modules/zookeeper/src/test/java/org/apache/ZookeeperNodeStart.java
----------------------------------------------------------------------
diff --git a/modules/zookeeper/src/test/java/org/apache/ZookeeperNodeStart.java b/modules/zookeeper/src/test/java/org/apache/ZookeeperNodeStart.java
new file mode 100644
index 0000000..89d6604
--- /dev/null
+++ b/modules/zookeeper/src/test/java/org/apache/ZookeeperNodeStart.java
@@ -0,0 +1,46 @@
+/*
+ * 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;
+
+import org.apache.ignite.Ignition;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.spi.discovery.zk.ZookeeperDiscoverySpi;
+
+/**
+ *
+ */
+public class ZookeeperNodeStart {
+ public static void main(String[] args) throws Exception {
+ try {
+ IgniteConfiguration cfg = new IgniteConfiguration();
+
+ ZookeeperDiscoverySpi spi = new ZookeeperDiscoverySpi();
+
+ spi.setConnectString("localhost:2181");
+
+ cfg.setDiscoverySpi(spi);
+
+ Ignition.start(cfg);
+ }
+ catch (Throwable e) {
+ e.printStackTrace(System.out);
+
+ System.exit(1);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/740c3b24/modules/zookeeper/src/test/java/org/apache/ignite/spi/discovery/zk/ZookeeperDiscoverySpiBasicTest.java
----------------------------------------------------------------------
diff --git a/modules/zookeeper/src/test/java/org/apache/ignite/spi/discovery/zk/ZookeeperDiscoverySpiBasicTest.java b/modules/zookeeper/src/test/java/org/apache/ignite/spi/discovery/zk/ZookeeperDiscoverySpiBasicTest.java
index e8d13a1..6e6c528 100644
--- a/modules/zookeeper/src/test/java/org/apache/ignite/spi/discovery/zk/ZookeeperDiscoverySpiBasicTest.java
+++ b/modules/zookeeper/src/test/java/org/apache/ignite/spi/discovery/zk/ZookeeperDiscoverySpiBasicTest.java
@@ -107,6 +107,23 @@ public class ZookeeperDiscoverySpiBasicTest extends GridCommonAbstractTest {
/**
* @throws Exception If failed.
*/
+ public void testRestarts_2_Nodes() throws Exception {
+ startGrid(0);
+
+ for (int i = 0; i < 10; i++) {
+ info("Iteration: " + i);
+
+ startGrid(1);
+
+ waitForTopology(2);
+
+ stopGrid(1);
+ }
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
public void testStartStop_2_Nodes_WithCache() throws Exception {
startGrids(2);
@@ -170,6 +187,10 @@ public class ZookeeperDiscoverySpiBasicTest extends GridCommonAbstractTest {
}, 3, "stop-node-thread");
waitForTopology(7);
+
+ startGridsMultiThreaded(0, 3);
+
+ waitForTopology(10);
}
/**