You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by av...@apache.org on 2018/07/17 21:46:01 UTC
[10/28] ignite git commit: IGNITE-8745 Add ability to monitor TCP
discovery ring information - Fixes #4256.
IGNITE-8745 Add ability to monitor TCP discovery ring information - Fixes #4256.
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/10770909
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/10770909
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/10770909
Branch: refs/heads/ignite-8783
Commit: 107709098d7634bcdd263067dcfcf5b09b8d3adb
Parents: a393e69
Author: ezagumennov <ez...@gridgain.com>
Authored: Mon Jul 16 17:15:05 2018 +0300
Committer: Ivan Rakov <ir...@apache.org>
Committed: Mon Jul 16 17:15:05 2018 +0300
----------------------------------------------------------------------
.../ignite/spi/discovery/tcp/ClientImpl.java | 17 +++++
.../ignite/spi/discovery/tcp/ServerImpl.java | 15 ++++
.../spi/discovery/tcp/TcpDiscoveryImpl.java | 14 ++++
.../spi/discovery/tcp/TcpDiscoverySpi.java | 11 +++
.../spi/discovery/tcp/TcpDiscoverySpiMBean.java | 14 ++++
.../discovery/tcp/TcpDiscoverySpiMBeanTest.java | 77 ++++++++++++++++++++
.../IgniteSpiDiscoverySelfTestSuite.java | 2 +
7 files changed, 150 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/10770909/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ClientImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ClientImpl.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ClientImpl.java
index edb2ce8..afdffaf 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ClientImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ClientImpl.java
@@ -27,8 +27,10 @@ import java.net.Socket;
import java.net.SocketTimeoutException;
import java.util.ArrayDeque;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
+import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -233,6 +235,21 @@ class ClientImpl extends TcpDiscoveryImpl {
}
/** {@inheritDoc} */
+ @Override public void dumpRingStructure(IgniteLogger log) {
+ ClusterNode[] serverNodes = getRemoteNodes().stream()
+ .filter(node -> !node.isClient())
+ .sorted(Comparator.comparingLong(ClusterNode::order))
+ .toArray(ClusterNode[]::new);
+
+ U.quietAndInfo(log, Arrays.toString(serverNodes));
+ }
+
+ /** {@inheritDoc} */
+ @Override public long getCurrentTopologyVersion() {
+ return topVer;
+ }
+
+ /** {@inheritDoc} */
@Override public String getSpiState() {
if (sockWriter.isOnline())
http://git-wip-us.apache.org/repos/asf/ignite/blob/10770909/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java
index 8c8f857..18a87ec 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java
@@ -1859,6 +1859,16 @@ class ServerImpl extends TcpDiscoveryImpl {
U.quietAndInfo(log, b.toString());
}
+ /** {@inheritDoc} */
+ @Override public void dumpRingStructure(IgniteLogger log) {
+ U.quietAndInfo(log, ring.toString());
+ }
+
+ /** {@inheritDoc} */
+ @Override public long getCurrentTopologyVersion() {
+ return ring.topologyVersion();
+ }
+
/**
* @param msg Message.
* @return {@code True} if recordable in debug mode.
@@ -5704,6 +5714,11 @@ class ServerImpl extends TcpDiscoveryImpl {
lastTimeConnCheckMsgSent = U.currentTimeMillis();
}
}
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return String.format("%s, nextNode=[%s]", super.toString(), next);
+ }
}
/** Thread that executes {@link TcpServer}'s code. */
http://git-wip-us.apache.org/repos/asf/ignite/blob/10770909/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryImpl.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryImpl.java
index 64cc2b9..7d51e36 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryImpl.java
@@ -232,6 +232,20 @@ abstract class TcpDiscoveryImpl {
public abstract void failNode(UUID nodeId, @Nullable String warning);
/**
+ * Dumps ring structure to logger.
+ *
+ * @param log Logger.
+ */
+ public abstract void dumpRingStructure(IgniteLogger log);
+
+ /**
+ * Get current topology version.
+ *
+ * @return Current topology version.
+ */
+ public abstract long getCurrentTopologyVersion();
+
+ /**
* @param igniteInstanceName Ignite instance name.
* @throws IgniteSpiException If failed.
*/
http://git-wip-us.apache.org/repos/asf/ignite/blob/10770909/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 0c7a56f..c81c482 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
@@ -2562,8 +2562,19 @@ public class TcpDiscoverySpi extends IgniteSpiAdapter implements IgniteDiscovery
return TcpDiscoverySpi.this.getCoordinatorSinceTimestamp();
}
+ /** {@inheritDoc} */
@Override public void checkRingLatency(int maxHops) {
TcpDiscoverySpi.this.impl.checkRingLatency(maxHops);
}
+
+ /** {@inheritDoc} */
+ @Override public long getCurrentTopologyVersion() {
+ return impl.getCurrentTopologyVersion();
+ }
+
+ /** {@inheritDoc} */
+ @Override public void dumpRingStructure() {
+ impl.dumpRingStructure(log);
+ }
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/10770909/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpiMBean.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpiMBean.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpiMBean.java
index 176cc07..cf64926 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpiMBean.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpiMBean.java
@@ -289,4 +289,18 @@ public interface TcpDiscoverySpiMBean extends IgniteSpiManagementMBean, Discover
}
)
public void checkRingLatency(int maxHops);
+
+ /**
+ * Current topology version.
+ *
+ * @return current topVer.
+ */
+ @MXBeanDescription("Get current topology version.")
+ public long getCurrentTopologyVersion();
+
+ /**
+ * Dumps ring structure to log.
+ */
+ @MXBeanDescription("Dumps ring structure to log.")
+ public void dumpRingStructure();
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/10770909/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpiMBeanTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpiMBeanTest.java b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpiMBeanTest.java
new file mode 100644
index 0000000..350b05c
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpiMBeanTest.java
@@ -0,0 +1,77 @@
+/*
+ * 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.tcp;
+
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.IgniteEx;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.testframework.GridStringLogger;
+import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+import javax.management.JMX;
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+import java.lang.management.ManagementFactory;
+
+/**
+ * Tests TcpDiscoverySpiMBean.
+ */
+public class TcpDiscoverySpiMBeanTest extends GridCommonAbstractTest {
+ /** */
+ private GridStringLogger strLog = new GridStringLogger();
+
+ /** {@inheritDoc} */
+ @Override protected IgniteConfiguration getConfiguration(final String igniteInstanceName) throws Exception {
+ IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
+ TcpDiscoverySpi tcpSpi = new TcpDiscoverySpi();
+ cfg.setDiscoverySpi(tcpSpi);
+ cfg.setGridLogger(strLog);
+
+ return cfg;
+ }
+
+ /**
+ * Tests TcpDiscoverySpiMBean#getCurrentTopologyVersion() and TcpDiscoverySpiMBean#dumpRingStructure().
+ *
+ * @throws Exception if fails.
+ */
+ public void testMBean() throws Exception {
+ startGrids(3);
+
+ MBeanServer srv = ManagementFactory.getPlatformMBeanServer();
+
+ try {
+ for (int i = 0; i < 3; i++) {
+ IgniteEx grid = grid(i);
+
+ ObjectName spiName = U.makeMBeanName(grid.context().igniteInstanceName(), "SPIs",
+ TcpDiscoverySpi.class.getSimpleName());
+
+ TcpDiscoverySpiMBean bean = JMX.newMBeanProxy(srv, spiName, TcpDiscoverySpiMBean.class);
+
+ assertNotNull(bean);
+ assertEquals(grid.cluster().topologyVersion(), bean.getCurrentTopologyVersion());
+
+ bean.dumpRingStructure();
+ assertTrue(strLog.toString().contains("TcpDiscoveryNodesRing"));
+ }
+ }
+ finally {
+ stopAllGrids();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/10770909/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSpiDiscoverySelfTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSpiDiscoverySelfTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSpiDiscoverySelfTestSuite.java
index 1d10b4e..e34200a 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSpiDiscoverySelfTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSpiDiscoverySelfTestSuite.java
@@ -41,6 +41,7 @@ import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySelfTest;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySnapshotHistoryTest;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpiConfigSelfTest;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpiFailureTimeoutSelfTest;
+import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpiMBeanTest;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpiReconnectDelayTest;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpiSelfTest;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpiStartStopSelfTest;
@@ -80,6 +81,7 @@ public class IgniteSpiDiscoverySelfTestSuite extends TestSuite {
suite.addTest(new TestSuite(TcpDiscoverySelfTest.class));
suite.addTest(new TestSuite(TcpDiscoverySpiSelfTest.class));
suite.addTest(new TestSuite(TcpDiscoverySpiFailureTimeoutSelfTest.class));
+ suite.addTest(new TestSuite(TcpDiscoverySpiMBeanTest.class));
suite.addTest(new TestSuite(TcpDiscoverySpiStartStopSelfTest.class));
suite.addTest(new TestSuite(TcpDiscoverySpiConfigSelfTest.class));
suite.addTest(new TestSuite(TcpDiscoveryMarshallerCheckSelfTest.class));