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 {
/** */