This is an automated email from the ASF dual-hosted git repository.

nizhikov 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 ad7151b30e2 IGNITE-18217 Enable JMX metrics exporter by default 
(#10511)
ad7151b30e2 is described below

commit ad7151b30e2ed4f947e44dba602b2f021132271c
Author: Vladimir Steshin <[email protected]>
AuthorDate: Wed Feb 8 18:31:34 2023 +0300

    IGNITE-18217 Enable JMX metrics exporter by default (#10511)
---
 .../apache/ignite/snippets/ConfiguringMetrics.java | 20 ++++-
 .../monitoring-metrics/new-metrics-system.adoc     | 19 ++++-
 .../org/apache/ignite/cdc/CdcConfiguration.java    |  7 +-
 .../ignite/configuration/IgniteConfiguration.java  |  7 +-
 .../org/apache/ignite/internal/IgnitionEx.java     | 15 ++--
 .../org/apache/ignite/internal/cdc/CdcMain.java    |  7 ++
 .../spi/metric/jmx/JmxMetricExporterSpi.java       |  9 +-
 .../org/apache/ignite/cdc/AbstractCdcTest.java     |  2 -
 .../org/apache/ignite/internal/GridMBeansTest.java |  3 -
 .../ignite/internal/metric/JmxExporterSpiTest.java | 99 +++++++++++++++++++++-
 .../GridTransactionsSystemUserTimeMetricsTest.java |  3 -
 .../snapshot/IgniteSnapshotMXBeanTest.java         |  4 +-
 .../processors/service/GridServiceMetricsTest.java | 12 ---
 .../snapshot/IgniteClusterSnapshotMetricsTest.java |  4 +-
 14 files changed, 167 insertions(+), 44 deletions(-)

diff --git 
a/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/ConfiguringMetrics.java
 
b/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/ConfiguringMetrics.java
index 058815a827d..cf00ec552d1 100644
--- 
a/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/ConfiguringMetrics.java
+++ 
b/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/ConfiguringMetrics.java
@@ -22,8 +22,10 @@ import org.apache.ignite.configuration.CacheConfiguration;
 import org.apache.ignite.configuration.DataRegionConfiguration;
 import org.apache.ignite.configuration.DataStorageConfiguration;
 import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.spi.metric.MetricExporterSpi;
 import org.apache.ignite.spi.metric.jmx.JmxMetricExporterSpi;
 import org.apache.ignite.spi.metric.log.LogExporterSpi;
+import org.apache.ignite.spi.metric.noop.NoopMetricExporterSpi;
 import org.junit.jupiter.api.Test;
 
 public class ConfiguringMetrics {
@@ -105,7 +107,8 @@ public class ConfiguringMetrics {
         //tag::new-metric-framework[]
         IgniteConfiguration cfg = new IgniteConfiguration();
 
-        cfg.setMetricExporterSpi(new JmxMetricExporterSpi());
+        // Change metric exporter.
+        cfg.setMetricExporterSpi(new LogExporterSpi());
 
         Ignite ignite = Ignition.start(cfg);
         //end::new-metric-framework[]
@@ -119,6 +122,7 @@ public class ConfiguringMetrics {
         //tag::metrics-filter[]
         IgniteConfiguration cfg = new IgniteConfiguration();
 
+        // Create configured JMX metrics exporter.
         JmxMetricExporterSpi jmxExporter = new JmxMetricExporterSpi();
 
         //export cache metrics only
@@ -130,6 +134,20 @@ public class ConfiguringMetrics {
         Ignition.start(cfg).close();
     }
 
+    @Test
+    void disableDefaultJmxExporter() {
+
+        //tag::disable-default-jmx-exporter[]
+        IgniteConfiguration cfg = new IgniteConfiguration();
+
+        // Disable default JMX metrics exporter. Also could be disabled with 
the system property
+        // '-DIGNITE_MBEANS_DISABLED=true' or by setting other metrics 
exporter.
+        cfg.setMetricExporterSpi(new NoopMetricExporterSpi());
+        //end::disable-default-jmx-exporter[]
+
+        Ignition.start(cfg).close();
+    }
+
     @Test
     void logExporter() {
 
diff --git a/docs/_docs/monitoring-metrics/new-metrics-system.adoc 
b/docs/_docs/monitoring-metrics/new-metrics-system.adoc
index de4a83b158d..e300ebbe3e1 100644
--- a/docs/_docs/monitoring-metrics/new-metrics-system.adoc
+++ b/docs/_docs/monitoring-metrics/new-metrics-system.adoc
@@ -34,7 +34,7 @@ Each exporter always gives access to all available metrics.
 
 Ignite includes the following exporters:
 
-* JMX
+* JMX (default)
 * SQL Views
 * Log files
 * OpenCensus
@@ -97,6 +97,23 @@ tab:C#/.NET[]
 tab:C++[unsupported]
 --
 
+[NOTE]
+====
+This exporter is enabled by default if nothing is set with 
`IgniteConfiguration.setMetricExporterSpi(...)`.
+====
+
+[tabs]
+--
+tab:Java[]
+[source, java]
+----
+include::{javaFile}[tags=disable-default-jmx-exporter, indent=0]
+----
+
+tab:C#/.NET[]
+
+tab:C++[unsupported]
+--
 
 === SQL View
 
diff --git 
a/modules/core/src/main/java/org/apache/ignite/cdc/CdcConfiguration.java 
b/modules/core/src/main/java/org/apache/ignite/cdc/CdcConfiguration.java
index f2f1873562e..e6f676e68d8 100644
--- a/modules/core/src/main/java/org/apache/ignite/cdc/CdcConfiguration.java
+++ b/modules/core/src/main/java/org/apache/ignite/cdc/CdcConfiguration.java
@@ -21,6 +21,7 @@ import 
org.apache.ignite.configuration.DataStorageConfiguration;
 import org.apache.ignite.internal.cdc.CdcMain;
 import org.apache.ignite.lang.IgniteExperimental;
 import org.apache.ignite.spi.metric.MetricExporterSpi;
+import org.apache.ignite.spi.metric.jmx.JmxMetricExporterSpi;
 
 /**
  * This class defines {@link CdcMain} runtime configuration.
@@ -71,19 +72,21 @@ public class CdcConfiguration {
     }
 
     /**
-     * Sets fully configured instances of {@link MetricExporterSpi}.
+     * Sets fully configured instances of {@link MetricExporterSpi}. {@link 
JmxMetricExporterSpi} is used by default.
      *
      * @param metricExporterSpi Fully configured instances of {@link 
MetricExporterSpi}.
      * @see CdcConfiguration#getMetricExporterSpi()
+     * @see JmxMetricExporterSpi
      */
     public void setMetricExporterSpi(MetricExporterSpi... metricExporterSpi) {
         this.metricExporterSpi = metricExporterSpi;
     }
 
     /**
-     * Gets fully configured metric SPI implementations.
+     * Gets fully configured metric SPI implementations. {@link 
JmxMetricExporterSpi} is used by default.
      *
      * @return Metric exporter SPI implementations.
+     * @see JmxMetricExporterSpi
      */
     public MetricExporterSpi[] getMetricExporterSpi() {
         return metricExporterSpi;
diff --git 
a/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java
 
b/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java
index 3372a79cd34..5316883163d 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java
@@ -84,6 +84,7 @@ import org.apache.ignite.spi.indexing.IndexingSpi;
 import org.apache.ignite.spi.loadbalancing.LoadBalancingSpi;
 import 
org.apache.ignite.spi.loadbalancing.roundrobin.RoundRobinLoadBalancingSpi;
 import org.apache.ignite.spi.metric.MetricExporterSpi;
+import org.apache.ignite.spi.metric.jmx.JmxMetricExporterSpi;
 import org.apache.ignite.spi.systemview.SystemViewExporterSpi;
 import org.apache.ignite.spi.tracing.TracingSpi;
 import org.apache.ignite.ssl.SslContextFactory;
@@ -2437,11 +2438,12 @@ public class IgniteConfiguration {
     }
 
     /**
-     * Sets fully configured instances of {@link MetricExporterSpi}.
+     * Sets fully configured instances of {@link MetricExporterSpi}. {@link 
JmxMetricExporterSpi} is used by default.
      *
      * @param metricExporterSpi Fully configured instances of {@link 
MetricExporterSpi}.
      * @return {@code this} for chaining.
      * @see IgniteConfiguration#getMetricExporterSpi()
+     * @see JmxMetricExporterSpi
      */
     public IgniteConfiguration setMetricExporterSpi(MetricExporterSpi... 
metricExporterSpi) {
         this.metricExporterSpi = metricExporterSpi;
@@ -2463,9 +2465,10 @@ public class IgniteConfiguration {
     }
 
     /**
-     * Gets fully configured metric SPI implementations.
+     * Gets fully configured metric SPI implementations. {@link 
JmxMetricExporterSpi} is used by default.
      *
      * @return Metric exporter SPI implementations.
+     * @see JmxMetricExporterSpi
      */
     public MetricExporterSpi[] getMetricExporterSpi() {
         return metricExporterSpi;
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java 
b/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java
index cb47fe8ce42..147ac29a201 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java
@@ -124,6 +124,7 @@ import 
org.apache.ignite.spi.failover.always.AlwaysFailoverSpi;
 import org.apache.ignite.spi.indexing.noop.NoopIndexingSpi;
 import org.apache.ignite.spi.loadbalancing.LoadBalancingSpi;
 import 
org.apache.ignite.spi.loadbalancing.roundrobin.RoundRobinLoadBalancingSpi;
+import org.apache.ignite.spi.metric.jmx.JmxMetricExporterSpi;
 import org.apache.ignite.spi.metric.noop.NoopMetricExporterSpi;
 import org.apache.ignite.spi.tracing.NoopTracingSpi;
 import org.apache.ignite.thread.IgniteThread;
@@ -151,6 +152,7 @@ import static 
org.apache.ignite.configuration.MemoryConfiguration.DFLT_MEMORY_PO
 import static 
org.apache.ignite.configuration.MemoryConfiguration.DFLT_MEM_PLC_DEFAULT_NAME;
 import static org.apache.ignite.internal.IgniteComponentType.SPRING;
 import static org.apache.ignite.internal.util.IgniteUtils.EMPTY_STRS;
+import static 
org.apache.ignite.internal.util.IgniteUtils.IGNITE_MBEANS_DISABLED;
 import static 
org.apache.ignite.plugin.segmentation.SegmentationPolicy.RESTART_JVM;
 
 /**
@@ -2073,8 +2075,11 @@ public class IgnitionEx {
             if (cfg.getEncryptionSpi() == null)
                 cfg.setEncryptionSpi(new NoopEncryptionSpi());
 
-            if (F.isEmpty(cfg.getMetricExporterSpi()))
-                cfg.setMetricExporterSpi(new NoopMetricExporterSpi());
+            if (F.isEmpty(cfg.getMetricExporterSpi())) {
+                cfg.setMetricExporterSpi(IGNITE_MBEANS_DISABLED
+                    ? new NoopMetricExporterSpi()
+                    : new JmxMetricExporterSpi());
+            }
 
             if (cfg.getTracingSpi() == null)
                 cfg.setTracingSpi(new NoopTracingSpi());
@@ -2412,7 +2417,7 @@ public class IgnitionEx {
          * @throws IgniteCheckedException If registration failed.
          */
         private void registerFactoryMbean(MBeanServer srv) throws 
IgniteCheckedException {
-            if (U.IGNITE_MBEANS_DISABLED)
+            if (IGNITE_MBEANS_DISABLED)
                 return;
 
             assert srv != null;
@@ -2467,7 +2472,7 @@ public class IgnitionEx {
          * Unregister delegate Mbean instance for {@link Ignition}.
          */
         private void unregisterFactoryMBean() {
-            if (U.IGNITE_MBEANS_DISABLED)
+            if (IGNITE_MBEANS_DISABLED)
                 return;
 
             synchronized (mbeans) {
@@ -2597,7 +2602,7 @@ public class IgnitionEx {
 
     /** Initialize default mbean server. */
     public static void initializeDefaultMBeanServer(IgniteConfiguration myCfg) 
{
-        if (myCfg.getMBeanServer() == null && !U.IGNITE_MBEANS_DISABLED)
+        if (myCfg.getMBeanServer() == null && !IGNITE_MBEANS_DISABLED)
             myCfg.setMBeanServer(ManagementFactory.getPlatformMBeanServer());
     }
 
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/cdc/CdcMain.java 
b/modules/core/src/main/java/org/apache/ignite/internal/cdc/CdcMain.java
index b8a1bd76790..fb82e310a50 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/cdc/CdcMain.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/cdc/CdcMain.java
@@ -67,6 +67,8 @@ import org.apache.ignite.internal.util.typedef.internal.CU;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.marshaller.MarshallerUtils;
 import org.apache.ignite.platform.PlatformType;
+import org.apache.ignite.spi.metric.jmx.JmxMetricExporterSpi;
+import org.apache.ignite.spi.metric.noop.NoopMetricExporterSpi;
 import org.apache.ignite.startup.cmdline.CdcCommandLineStartup;
 
 import static org.apache.ignite.internal.IgniteKernal.NL;
@@ -355,6 +357,11 @@ public class CdcMain implements Runnable {
 
                 if (!F.isEmpty(cdcCfg.getMetricExporterSpi()))
                     cfg.setMetricExporterSpi(cdcCfg.getMetricExporterSpi());
+                else {
+                    cfg.setMetricExporterSpi(U.IGNITE_MBEANS_DISABLED
+                        ? new NoopMetricExporterSpi()
+                        : new JmxMetricExporterSpi());
+                }
 
                 initializeDefaultMBeanServer(cfg);
 
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/metric/jmx/JmxMetricExporterSpi.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/metric/jmx/JmxMetricExporterSpi.java
index 687aad722e6..3a21d1b057d 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/spi/metric/jmx/JmxMetricExporterSpi.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/metric/jmx/JmxMetricExporterSpi.java
@@ -26,6 +26,7 @@ import javax.management.MBeanServer;
 import javax.management.MalformedObjectNameException;
 import javax.management.ObjectName;
 import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteSystemProperties;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.spi.IgniteSpiAdapter;
 import org.apache.ignite.spi.IgniteSpiException;
@@ -39,8 +40,8 @@ import static 
org.apache.ignite.internal.util.IgniteUtils.makeMBeanName;
 /**
  * <h2>Overview</h2>
  *
- * Ignite provides this built-in implementation of {@link MetricExporterSpi} 
it exports metrics as JMX beans. This
- * implementation works by `pull` architecture which means that after the 
Ignite node start it should respond to
+ * Ignite provides this default built-in implementation of {@link 
MetricExporterSpi} it exports metrics as JMX beans.
+ * This implementation works by `pull` architecture which means that after the 
Ignite node start it should respond to
  * incoming user request.
  *
  * <h2>Java Example</h2>
@@ -54,8 +55,7 @@ import static 
org.apache.ignite.internal.util.IgniteUtils.makeMBeanName;
  *          .setDefaultDataRegionConfiguration(
  *              new DataRegionConfiguration()
  *                  .setMaxSize(12_000_000)))
- *      .setIgniteInstanceName("jmxExampleInstanceName")
- *      .setMetricExporterSpi(new JmxMetricExporterSpi()));
+ *      .setIgniteInstanceName("jmxExampleInstanceName"));
  *
  *  String igniteInstanceName = ignite.name();
  *  String metricGroup = "io";
@@ -91,6 +91,7 @@ import static 
org.apache.ignite.internal.util.IgniteUtils.makeMBeanName;
  *
  * @see ReadOnlyMetricManager
  * @see ReadOnlyMetricRegistry
+ * @see IgniteSystemProperties#IGNITE_MBEANS_DISABLED
  */
 public class JmxMetricExporterSpi extends IgniteSpiAdapter implements 
MetricExporterSpi {
     /** Metric registry. */
diff --git 
a/modules/core/src/test/java/org/apache/ignite/cdc/AbstractCdcTest.java 
b/modules/core/src/test/java/org/apache/ignite/cdc/AbstractCdcTest.java
index c37d1aa40cd..6222fb2a68f 100644
--- a/modules/core/src/test/java/org/apache/ignite/cdc/AbstractCdcTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/cdc/AbstractCdcTest.java
@@ -50,7 +50,6 @@ import org.apache.ignite.lang.IgniteBiTuple;
 import org.apache.ignite.spi.metric.LongMetric;
 import org.apache.ignite.spi.metric.MetricExporterSpi;
 import org.apache.ignite.spi.metric.ObjectMetric;
-import org.apache.ignite.spi.metric.jmx.JmxMetricExporterSpi;
 import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
 
 import static java.util.concurrent.TimeUnit.MILLISECONDS;
@@ -116,7 +115,6 @@ public abstract class AbstractCdcTest extends 
GridCommonAbstractTest {
 
         cdcCfg.setConsumer(cnsmr);
         cdcCfg.setKeepBinary(keepBinary());
-        cdcCfg.setMetricExporterSpi(new JmxMetricExporterSpi());
 
         return new CdcMain(cfg, null, cdcCfg) {
             @Override protected CdcConsumerState createState(Path stateDir) {
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/GridMBeansTest.java 
b/modules/core/src/test/java/org/apache/ignite/internal/GridMBeansTest.java
index 68ab5bf67fa..c35c130f2a4 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/GridMBeansTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/GridMBeansTest.java
@@ -22,7 +22,6 @@ import org.apache.ignite.configuration.ExecutorConfiguration;
 import org.apache.ignite.configuration.IgniteConfiguration;
 import org.apache.ignite.internal.util.IgniteUtils;
 import org.apache.ignite.internal.util.typedef.G;
-import org.apache.ignite.spi.metric.jmx.JmxMetricExporterSpi;
 import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
 import org.junit.Test;
 
@@ -54,8 +53,6 @@ public class GridMBeansTest extends GridCommonAbstractTest {
         cfg.setExecutorConfiguration(new 
ExecutorConfiguration(CUSTOM_EXECUTOR_0),
             new ExecutorConfiguration(CUSTOM_EXECUTOR_1));
 
-        cfg.setMetricExporterSpi(new JmxMetricExporterSpi());
-
         return cfg;
     }
 
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/metric/JmxExporterSpiTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/metric/JmxExporterSpiTest.java
index 4d447b16870..7bd0b0b421d 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/metric/JmxExporterSpiTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/metric/JmxExporterSpiTest.java
@@ -44,6 +44,7 @@ import javax.management.MBeanParameterInfo;
 import javax.management.openmbean.CompositeData;
 import javax.management.openmbean.TabularDataSupport;
 import com.google.common.collect.Iterators;
+import org.apache.ignite.Ignite;
 import org.apache.ignite.IgniteCache;
 import org.apache.ignite.IgniteException;
 import org.apache.ignite.IgniteJdbcThinDriver;
@@ -79,11 +80,17 @@ import 
org.apache.ignite.internal.processors.odbc.jdbc.JdbcConnectionContext;
 import org.apache.ignite.internal.processors.service.DummyService;
 import org.apache.ignite.internal.util.StripedExecutor;
 import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.internal.util.typedef.G;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.services.ServiceConfiguration;
+import org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi;
+import 
org.apache.ignite.spi.communication.tcp.internal.TcpCommunicationConfigInitializer;
+import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
 import org.apache.ignite.spi.metric.jmx.JmxMetricExporterSpi;
+import org.apache.ignite.spi.metric.noop.NoopMetricExporterSpi;
 import org.apache.ignite.testframework.GridTestUtils;
 import org.apache.ignite.transactions.Transaction;
+import org.jetbrains.annotations.Nullable;
 import org.junit.Test;
 
 import static java.util.Arrays.stream;
@@ -134,6 +141,9 @@ public class JmxExporterSpiTest extends 
AbstractExporterSpiTest {
     /** */
     private static final String REGISTRY_NAME = "test_registry";
 
+    /** */
+    private boolean presetJmxMetricExporter = true;
+
     /** {@inheritDoc} */
     @Override protected IgniteConfiguration getConfiguration(String 
igniteInstanceName) throws Exception {
         IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
@@ -143,11 +153,13 @@ public class JmxExporterSpiTest extends 
AbstractExporterSpiTest {
                 new DataRegionConfiguration()
                     .setPersistenceEnabled(true)));
 
-        JmxMetricExporterSpi jmxSpi = new JmxMetricExporterSpi();
+        if (presetJmxMetricExporter) {
+            JmxMetricExporterSpi jmxSpi = new JmxMetricExporterSpi();
 
-        jmxSpi.setExportFilter(mgrp -> 
!mgrp.name().startsWith(FILTERED_PREFIX));
+            jmxSpi.setExportFilter(mgrp -> 
!mgrp.name().startsWith(FILTERED_PREFIX));
 
-        cfg.setMetricExporterSpi(jmxSpi);
+            cfg.setMetricExporterSpi(jmxSpi);
+        }
 
         return cfg;
     }
@@ -176,6 +188,62 @@ public class JmxExporterSpiTest extends 
AbstractExporterSpiTest {
         cleanPersistenceDir();
     }
 
+    /** */
+    @Test
+    public void testJmxMetricsExporterIsEnabledByDefault() throws Exception {
+        presetJmxMetricExporter = false;
+
+        IgniteConfiguration cfg = startDedicatedNode(null);
+
+        try {
+            assertTrue(!F.isEmpty(cfg.getMetricExporterSpi()));
+            assertTrue(cfg.getMetricExporterSpi().length == 1);
+            assertTrue(cfg.getMetricExporterSpi()[0] instanceof 
JmxMetricExporterSpi);
+        }
+        finally {
+            stopGrid(cfg.getIgniteInstanceName());
+        }
+    }
+
+    /** */
+    @Test
+    public void testJmxMetricsExporterIsNotEnabledByDefault() throws Exception 
{
+        boolean beansDisabled = U.IGNITE_MBEANS_DISABLED;
+
+        try {
+            U.IGNITE_MBEANS_DISABLED = true;
+
+            presetJmxMetricExporter = false;
+
+            IgniteConfiguration cfg = startDedicatedNode(null);
+
+            try {
+                assertTrue(stream(cfg.getMetricExporterSpi()).noneMatch(spi -> 
spi instanceof JmxMetricExporterSpi));
+            }
+            finally {
+                stopGrid(cfg.getIgniteInstanceName());
+            }
+        }
+        finally {
+            U.IGNITE_MBEANS_DISABLED = beansDisabled;
+        }
+    }
+
+    /** */
+    @Test
+    public void testJmxMetricsExporterIsDisabled() throws Exception {
+        IgniteConfiguration cfg = 
startDedicatedNode(getConfiguration(getTestIgniteInstanceName(G.allGrids().size()))
+            .setMetricExporterSpi(new NoopMetricExporterSpi()));
+
+        try {
+            assertTrue(F.isEmpty(cfg.getMetricExporterSpi()) ||
+                stream(cfg.getMetricExporterSpi()).noneMatch(spi -> spi 
instanceof JmxMetricExporterSpi));
+        }
+        finally {
+            stopGrid(cfg.getIgniteInstanceName());
+        }
+    }
+
     /** */
     @Test
     public void testSysJmxMetrics() throws Exception {
@@ -985,6 +1053,31 @@ public class JmxExporterSpiTest extends 
AbstractExporterSpiTest {
             "data-streamer");
     }
 
+    /**
+     * Starts dedicated node.
+     *
+     * @param cfg Ignite Configuration.
+     * @return Actual configuration of the node started.
+     */
+    private IgniteConfiguration startDedicatedNode(@Nullable 
IgniteConfiguration cfg) throws Exception {
+        if (cfg == null)
+            cfg = 
getConfiguration(getTestIgniteInstanceName(G.allGrids().size()));
+
+        cfg.setDiscoverySpi(new TcpDiscoverySpi());
+
+        
((TcpCommunicationConfigInitializer)cfg.getCommunicationSpi()).setLocalPort(TcpCommunicationSpi.DFLT_PORT
 +
+            TcpCommunicationSpi.DFLT_PORT_RANGE + 1);
+
+        int clusterSize = ignite.cluster().nodes().size();
+
+        Ignite ig = startGrid(cfg);
+
+        assertEquals(1, ig.cluster().nodes().size());
+        assertEquals(clusterSize, ignite.cluster().nodes().size());
+
+        return ig.configuration();
+    }
+
     /**
      * Checks striped executor system view.
      *
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridTransactionsSystemUserTimeMetricsTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridTransactionsSystemUserTimeMetricsTest.java
index 14beac0adfc..0b9994d449e 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridTransactionsSystemUserTimeMetricsTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridTransactionsSystemUserTimeMetricsTest.java
@@ -49,7 +49,6 @@ import org.apache.ignite.mxbean.TransactionsMXBean;
 import org.apache.ignite.plugin.extensions.communication.Message;
 import org.apache.ignite.spi.IgniteSpiException;
 import org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi;
-import org.apache.ignite.spi.metric.jmx.JmxMetricExporterSpi;
 import org.apache.ignite.testframework.GridTestUtils;
 import org.apache.ignite.testframework.ListeningTestLogger;
 import org.apache.ignite.testframework.LogListener;
@@ -171,8 +170,6 @@ public class GridTransactionsSystemUserTimeMetricsTest 
extends GridCommonAbstrac
             cfg.setCacheConfiguration(ccfg);
         }
 
-        cfg.setMetricExporterSpi(new JmxMetricExporterSpi());
-
         cfg.setCommunicationSpi(new TestCommunicationSpi());
 
         return cfg;
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteSnapshotMXBeanTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteSnapshotMXBeanTest.java
index 837038b31c8..01e25c398b2 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteSnapshotMXBeanTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteSnapshotMXBeanTest.java
@@ -33,7 +33,6 @@ import org.apache.ignite.internal.util.typedef.F;
 import org.apache.ignite.internal.util.typedef.G;
 import org.apache.ignite.lang.IgniteFuture;
 import org.apache.ignite.mxbean.SnapshotMXBean;
-import org.apache.ignite.spi.metric.jmx.JmxMetricExporterSpi;
 import org.apache.ignite.testframework.GridTestUtils;
 import org.junit.Test;
 
@@ -54,8 +53,7 @@ public class IgniteSnapshotMXBeanTest extends 
AbstractSnapshotSelfTest {
     /** {@inheritDoc} */
     @Override protected IgniteConfiguration getConfiguration(String 
igniteInstanceName) throws Exception {
         return super.getConfiguration(igniteInstanceName)
-            .setCommunicationSpi(new TestRecordingCommunicationSpi())
-            .setMetricExporterSpi(new JmxMetricExporterSpi());
+            .setCommunicationSpi(new TestRecordingCommunicationSpi());
     }
 
     /** @throws Exception If fails. */
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/service/GridServiceMetricsTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/service/GridServiceMetricsTest.java
index ddbbc497dae..5816ceeb292 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/service/GridServiceMetricsTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/service/GridServiceMetricsTest.java
@@ -23,7 +23,6 @@ import java.util.Arrays;
 import java.util.List;
 import java.util.stream.Collectors;
 import com.google.common.collect.Iterables;
-import org.apache.ignite.configuration.IgniteConfiguration;
 import org.apache.ignite.internal.IgniteEx;
 import org.apache.ignite.internal.processors.metric.GridMetricManager;
 import org.apache.ignite.internal.processors.service.inner.MyService;
@@ -34,7 +33,6 @@ import org.apache.ignite.services.ServiceConfiguration;
 import org.apache.ignite.spi.metric.HistogramMetric;
 import org.apache.ignite.spi.metric.Metric;
 import org.apache.ignite.spi.metric.ReadOnlyMetricRegistry;
-import org.apache.ignite.spi.metric.jmx.JmxMetricExporterSpi;
 import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
 import org.junit.Test;
 
@@ -63,16 +61,6 @@ public class GridServiceMetricsTest extends 
GridCommonAbstractTest {
         super.afterTest();
     }
 
-    /** {@inheritDoc} */
-    @Override protected IgniteConfiguration getConfiguration(String 
igniteInstanceName) throws Exception {
-        IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
-
-        // JMX metrics exposition to see actual namings and placement of the 
metrics.
-        cfg.setMetricExporterSpi(new JmxMetricExporterSpi());
-
-        return cfg;
-    }
-
     /** Checks service metrics are enabled / disabled properly. */
     @Test
     public void testServiceMetricsEnabledDisabled() throws Exception {
diff --git 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteClusterSnapshotMetricsTest.java
 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteClusterSnapshotMetricsTest.java
index b2bad4e8b3b..20fee765358 100644
--- 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteClusterSnapshotMetricsTest.java
+++ 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteClusterSnapshotMetricsTest.java
@@ -54,7 +54,6 @@ import org.apache.ignite.internal.util.typedef.G;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.lang.IgniteFuture;
 import org.apache.ignite.spi.metric.LongMetric;
-import org.apache.ignite.spi.metric.jmx.JmxMetricExporterSpi;
 import org.apache.ignite.testframework.GridTestUtils;
 import org.junit.After;
 import org.junit.Before;
@@ -78,8 +77,7 @@ public class IgniteClusterSnapshotMetricsTest extends 
IgniteClusterSnapshotResto
 
     /** {@inheritDoc} */
     @Override protected IgniteConfiguration getConfiguration(String 
igniteInstanceName) throws Exception {
-        IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName)
-            .setMetricExporterSpi(new JmxMetricExporterSpi());
+        IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
 
         if (getTestIgniteInstanceIndex(igniteInstanceName) < DEDICATED_CNT) {
             cfg.setWorkDirectory(Paths.get(U.defaultWorkDirectory(),

Reply via email to