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/01/30 10:18:25 UTC

[ignite] branch master updated: IGNITE-11111 Fix DistributedMetaStorage doesn't work on Zookeeper SPI - Fixes #5948.

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 1cee2f8  IGNITE-11111 Fix DistributedMetaStorage doesn't work on Zookeeper SPI - Fixes #5948.
1cee2f8 is described below

commit 1cee2f82f068587670657ee3e941d29557bda1ea
Author: ibessonov <be...@gmail.com>
AuthorDate: Wed Jan 30 13:17:51 2019 +0300

    IGNITE-11111 Fix DistributedMetaStorage doesn't work on Zookeeper SPI - Fixes #5948.
    
    Signed-off-by: Dmitriy Govorukhin <dm...@gmail.com>
---
 .../persistence/DistributedMetaStorageImpl.java    | 47 ++++++++++++++--------
 .../DistributedMetaStoragePersistentTest.java      |  4 +-
 .../zk/ZookeeperDiscoverySpiTestSuite4.java        |  6 ++-
 3 files changed, 38 insertions(+), 19 deletions(-)

diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/metastorage/persistence/DistributedMetaStorageImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/metastorage/persistence/DistributedMetaStorageImpl.java
index d96c73d..1bfb1ec 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/metastorage/persistence/DistributedMetaStorageImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/metastorage/persistence/DistributedMetaStorageImpl.java
@@ -555,25 +555,19 @@ public class DistributedMetaStorageImpl extends GridProcessorAdapter
     }
 
     /** {@inheritDoc} */
-    @Override public void collectGridNodeData(DiscoveryDataBag dataBag) {
+    @Override public void onJoiningNodeDataReceived(DiscoveryDataBag.JoiningNodeDiscoveryData discoData) {
         if (ctx.clientNode())
             return;
 
-        DiscoveryDataBag.JoiningNodeDiscoveryData discoData = dataBag.newJoinerDiscoveryData(COMPONENT_ID);
-
         if (!discoData.hasJoiningNodeData())
             return;
 
         DistributedMetaStorageJoiningNodeData joiningData =
             (DistributedMetaStorageJoiningNodeData)discoData.joiningNodeData();
 
-        if (joiningData == null)
-            return;
-
         DistributedMetaStorageVersion remoteVer = joiningData.ver;
 
         synchronized (innerStateLock) {
-            //TODO Store it precalculated? Maybe later.
             DistributedMetaStorageVersion actualVer = getActualVersion();
 
             if (remoteVer.id > actualVer.id) {
@@ -587,21 +581,42 @@ public class DistributedMetaStorageImpl extends GridProcessorAdapter
 
                     for (long v = actualVer.id + 1; v <= remoteVer.id; v++)
                         updateLater(hist[(int)(v - remoteVer.id + hist.length - 1)]);
-
-                    Serializable nodeData = new DistributedMetaStorageClusterNodeData(remoteVer, null, null, null);
-
-                    dataBag.addGridCommonData(COMPONENT_ID, nodeData);
                 }
                 else
                     assert false : "Joining node is too far ahead [remoteVer=" + remoteVer + "]";
             }
-            else {
-                if (dataBag.commonDataCollectedFor(COMPONENT_ID))
-                    return;
+        }
+    }
 
-                if (remoteVer.id == actualVer.id) {
-                    assert remoteVer.equals(actualVer) : actualVer + " " + remoteVer;
+    /** {@inheritDoc} */
+    @Override public void collectGridNodeData(DiscoveryDataBag dataBag) {
+        if (ctx.clientNode())
+            return;
+
+        if (dataBag.commonDataCollectedFor(COMPONENT_ID))
+            return;
 
+        DiscoveryDataBag.JoiningNodeDiscoveryData discoData = dataBag.newJoinerDiscoveryData(COMPONENT_ID);
+
+        if (!discoData.hasJoiningNodeData())
+            return;
+
+        DistributedMetaStorageJoiningNodeData joiningData =
+            (DistributedMetaStorageJoiningNodeData)discoData.joiningNodeData();
+
+        DistributedMetaStorageVersion remoteVer = joiningData.ver;
+
+        synchronized (innerStateLock) {
+            //TODO Store it precalculated? Maybe later.
+            DistributedMetaStorageVersion actualVer = getActualVersion();
+
+            if (remoteVer.id > actualVer.id) {
+                Serializable nodeData = new DistributedMetaStorageClusterNodeData(remoteVer, null, null, null);
+
+                dataBag.addGridCommonData(COMPONENT_ID, nodeData);
+            }
+            else {
+                if (remoteVer.id == actualVer.id) {
                     Serializable nodeData = new DistributedMetaStorageClusterNodeData(ver, null, null, null);
 
                     dataBag.addGridCommonData(COMPONENT_ID, nodeData);
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/metastorage/DistributedMetaStoragePersistentTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/metastorage/DistributedMetaStoragePersistentTest.java
index d3c6cc3..2444a80 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/metastorage/DistributedMetaStoragePersistentTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/metastorage/DistributedMetaStoragePersistentTest.java
@@ -283,11 +283,11 @@ public class DistributedMetaStoragePersistentTest extends DistributedMetaStorage
                 while (!stop.get()) {
                     stopGrid(gridIdx, true);
 
-                    Thread.sleep(10L);
+                    Thread.sleep(100L);
 
                     startGrid(gridIdx);
 
-                    Thread.sleep(10L);
+                    Thread.sleep(100L);
                 }
             }
             catch (Exception e) {
diff --git a/modules/zookeeper/src/test/java/org/apache/ignite/spi/discovery/zk/ZookeeperDiscoverySpiTestSuite4.java b/modules/zookeeper/src/test/java/org/apache/ignite/spi/discovery/zk/ZookeeperDiscoverySpiTestSuite4.java
index 2f108a3..a9146cc 100644
--- a/modules/zookeeper/src/test/java/org/apache/ignite/spi/discovery/zk/ZookeeperDiscoverySpiTestSuite4.java
+++ b/modules/zookeeper/src/test/java/org/apache/ignite/spi/discovery/zk/ZookeeperDiscoverySpiTestSuite4.java
@@ -23,6 +23,8 @@ import org.apache.ignite.internal.processors.cache.distributed.dht.IgniteCachePu
 import org.apache.ignite.internal.processors.cache.distributed.near.GridCacheAtomicMultiNodeFullApiSelfTest;
 import org.apache.ignite.internal.processors.cache.distributed.replicated.GridCacheReplicatedAtomicMultiNodeFullApiSelfTest;
 import org.apache.ignite.internal.processors.cache.distributed.replicated.IgniteCacheReplicatedQuerySelfTest;
+import org.apache.ignite.internal.processors.metastorage.DistributedMetaStoragePersistentTest;
+import org.apache.ignite.internal.processors.metastorage.DistributedMetaStorageTest;
 import org.junit.BeforeClass;
 import org.junit.runner.RunWith;
 import org.junit.runners.Suite;
@@ -38,7 +40,9 @@ import org.junit.runners.Suite;
     ClusterNodeMetricsUpdateTest.class,
     GridCacheAtomicMultiNodeFullApiSelfTest.class,
     GridCacheReplicatedAtomicMultiNodeFullApiSelfTest.class,
-    IgniteCacheReplicatedQuerySelfTest.class
+    IgniteCacheReplicatedQuerySelfTest.class,
+    DistributedMetaStorageTest.class,
+    DistributedMetaStoragePersistentTest.class
 })
 public class ZookeeperDiscoverySpiTestSuite4 {
     /** */