You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ir...@apache.org on 2018/05/18 14:00:22 UTC
ignite git commit: IGNITE-8491 Add JMX flag: Is the node in baseline
or not - Fixes #4010.
Repository: ignite
Updated Branches:
refs/heads/master 722bb1d24 -> f8ae30d5d
IGNITE-8491 Add JMX flag: Is the node in baseline or not - Fixes #4010.
Signed-off-by: Ivan Rakov <ir...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/f8ae30d5
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/f8ae30d5
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/f8ae30d5
Branch: refs/heads/master
Commit: f8ae30d5dd426d995d7bae98674712055895bcb5
Parents: 722bb1d
Author: vd-pyatkov <vp...@gridgain.com>
Authored: Fri May 18 16:59:14 2018 +0300
Committer: Ivan Rakov <ir...@apache.org>
Committed: Fri May 18 16:59:14 2018 +0300
----------------------------------------------------------------------
.../apache/ignite/internal/IgniteKernal.java | 13 +++
.../org/apache/ignite/mxbean/IgniteMXBean.java | 8 ++
.../util/mbeans/GridMBeanBaselineTest.java | 96 ++++++++++++++++++++
3 files changed, 117 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/f8ae30d5/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 6a40e38..c16af70 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
@@ -106,6 +106,7 @@ import org.apache.ignite.internal.binary.BinaryUtils;
import org.apache.ignite.internal.cluster.ClusterGroupAdapter;
import org.apache.ignite.internal.cluster.IgniteClusterEx;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
+import org.apache.ignite.internal.processors.cluster.DiscoveryDataClusterState;
import org.apache.ignite.internal.processors.failure.FailureProcessor;
import org.apache.ignite.internal.managers.GridManager;
import org.apache.ignite.internal.managers.checkpoint.GridCheckpointManager;
@@ -525,6 +526,18 @@ public class IgniteKernal implements IgniteEx, IgniteMXBean, Externalizable {
}
/** {@inheritDoc} */
+ @Override public boolean isNodeInBaseline() {
+ ClusterNode locNode = localNode();
+
+ if (locNode.isClient() || locNode.isDaemon())
+ return false;
+
+ DiscoveryDataClusterState clusterState = ctx.state().clusterState();
+
+ return clusterState.hasBaselineTopology() && CU.baselineNode(locNode, clusterState);
+ }
+
+ /** {@inheritDoc} */
@Override public String getCommunicationSpiFormatted() {
assert cfg != null;
http://git-wip-us.apache.org/repos/asf/ignite/blob/f8ae30d5/modules/core/src/main/java/org/apache/ignite/mxbean/IgniteMXBean.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/mxbean/IgniteMXBean.java b/modules/core/src/main/java/org/apache/ignite/mxbean/IgniteMXBean.java
index cc4bc5b..e0a5fb5 100644
--- a/modules/core/src/main/java/org/apache/ignite/mxbean/IgniteMXBean.java
+++ b/modules/core/src/main/java/org/apache/ignite/mxbean/IgniteMXBean.java
@@ -439,6 +439,14 @@ public interface IgniteMXBean {
public String getCurrentCoordinatorFormatted();
/**
+ * Gets a flag whether local node is in baseline. Returns false if baseline topology is not established.
+ *
+ * @return Return a baseline flag.
+ */
+ @MXBeanDescription("Baseline node flag.")
+ public boolean isNodeInBaseline();
+
+ /**
* Runs IO latency test against all remote server nodes in cluster.
*
* @param warmup Warmup duration in milliseconds.
http://git-wip-us.apache.org/repos/asf/ignite/blob/f8ae30d5/modules/core/src/test/java/org/apache/ignite/util/mbeans/GridMBeanBaselineTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/util/mbeans/GridMBeanBaselineTest.java b/modules/core/src/test/java/org/apache/ignite/util/mbeans/GridMBeanBaselineTest.java
new file mode 100644
index 0000000..00dce83
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/util/mbeans/GridMBeanBaselineTest.java
@@ -0,0 +1,96 @@
+package org.apache.ignite.util.mbeans;
+
+import org.apache.ignite.Ignite;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.cluster.BaselineNode;
+import org.apache.ignite.configuration.DataRegionConfiguration;
+import org.apache.ignite.configuration.DataStorageConfiguration;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.IgniteEx;
+import org.apache.ignite.mxbean.IgniteMXBean;
+import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ *
+ */
+public class GridMBeanBaselineTest extends GridCommonAbstractTest {
+ /** Client index. */
+ private static final int CLIENT_IDX = 33;
+
+ /** Nodes. */
+ public static final int NODES = 2;
+
+ /** {@inheritDoc} */
+ @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
+ return super.getConfiguration(igniteInstanceName)
+ .setClientMode(igniteInstanceName.equals(getTestIgniteInstanceName(CLIENT_IDX)))
+ .setDataStorageConfiguration(new DataStorageConfiguration()
+ .setCheckpointFrequency(2_000)
+ .setDefaultDataRegionConfiguration(
+ new DataRegionConfiguration()
+ .setPersistenceEnabled(true)))
+ .setDataStorageConfiguration(
+ new DataStorageConfiguration()
+ .setDefaultDataRegionConfiguration(
+ new DataRegionConfiguration()
+ .setMaxSize(200L * 1024 * 1024)
+ .setPersistenceEnabled(true)));
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void beforeTestsStarted() throws Exception {
+ cleanPersistenceDir();
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void afterTestsStopped() throws Exception {
+ cleanPersistenceDir();
+ }
+
+ /**
+ * Test ignite kernal node in baseline test.
+ *
+ * @throws Exception Thrown if test fails.
+ */
+ public void testIgniteKernalNodeInBaselineTest() throws Exception {
+ try {
+ IgniteEx ignite0 = (IgniteEx)startGrids(NODES);
+
+ startGrid(CLIENT_IDX);
+
+ ignite0.cluster().active(true);
+
+ checkBaselineInFromMBean(ignite0);
+
+ startGrid(NODES);
+
+ checkBaselineInFromMBean(ignite0);
+
+ ignite0.cluster().setBaselineTopology(ignite0.cluster().topologyVersion());
+
+ checkBaselineInFromMBean(ignite0);
+ }
+ finally {
+ stopAllGrids();
+ }
+ }
+
+ /**
+ * @param ignite Ignite.
+ */
+ private void checkBaselineInFromMBean(IgniteEx ignite) {
+ Set<Object> cIds = ignite.cluster().currentBaselineTopology().stream()
+ .map(BaselineNode::consistentId)
+ .collect(Collectors.toSet());
+
+ for (Ignite ign : Ignition.allGrids()) {
+ IgniteMXBean igniteMXBean = (IgniteMXBean)ign;
+
+ assertEquals(cIds.contains(ign.cluster().localNode().consistentId()),
+ igniteMXBean.isNodeInBaseline());
+ }
+ }
+
+}