You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by na...@apache.org on 2021/08/05 06:26:32 UTC

[ignite] branch master updated: IGNITE-15252 Fix the AssertionError when the JmxMetricExporterSpi unregister a filtered metric registry (#9300)

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

namelchev 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 c6c1e8a  IGNITE-15252 Fix the AssertionError when the JmxMetricExporterSpi unregister a filtered metric registry (#9300)
c6c1e8a is described below

commit c6c1e8a655b264a80792034e08bd7a74ac992ed0
Author: Nikita Amelchev <ns...@gmail.com>
AuthorDate: Thu Aug 5 09:26:15 2021 +0300

    IGNITE-15252 Fix the AssertionError when the JmxMetricExporterSpi unregister a filtered metric registry (#9300)
---
 .../spi/metric/jmx/JmxMetricExporterSpi.java       |  3 +++
 .../ignite/internal/metric/JmxExporterSpiTest.java | 23 ++++++++++++++++++++++
 2 files changed, 26 insertions(+)

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 d0a48da..687aad7 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
@@ -154,6 +154,9 @@ public class JmxMetricExporterSpi extends IgniteSpiAdapter implements MetricExpo
      * @param mreg Metric registry.
      */
     private void unregister(ReadOnlyMetricRegistry mreg) {
+        if (filter != null && !filter.test(mreg))
+            return;
+
         MetricName n = parse(mreg.name());
 
         try {
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 a8744b4..a464ac6 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
@@ -43,6 +43,7 @@ import javax.management.MBeanOperationInfo;
 import javax.management.MBeanParameterInfo;
 import javax.management.openmbean.CompositeData;
 import javax.management.openmbean.TabularDataSupport;
+import com.google.common.collect.Iterators;
 import org.apache.ignite.IgniteCache;
 import org.apache.ignite.IgniteException;
 import org.apache.ignite.IgniteJdbcThinDriver;
@@ -70,8 +71,10 @@ import org.apache.ignite.internal.metric.SystemViewSelfTest.TestRunnable;
 import org.apache.ignite.internal.metric.SystemViewSelfTest.TestTransformer;
 import org.apache.ignite.internal.processors.cache.persistence.IgniteCacheDatabaseSharedManager;
 import org.apache.ignite.internal.processors.metastorage.DistributedMetaStorage;
+import org.apache.ignite.internal.processors.metric.GridMetricManager;
 import org.apache.ignite.internal.processors.metric.MetricRegistry;
 import org.apache.ignite.internal.processors.metric.impl.HistogramMetricImpl;
+import org.apache.ignite.internal.processors.metric.impl.MetricUtils;
 import org.apache.ignite.internal.processors.odbc.jdbc.JdbcConnectionContext;
 import org.apache.ignite.internal.processors.service.DummyService;
 import org.apache.ignite.internal.util.StripedExecutor;
@@ -265,6 +268,26 @@ public class JmxExporterSpiTest extends AbstractExporterSpiTest {
 
     /** */
     @Test
+    public void testRemoveFilteredRegistry() {
+        String regName = MetricUtils.metricName(FILTERED_PREFIX, "registry-for-remove");
+
+        GridMetricManager mmgr = ignite.context().metric();
+
+        mmgr.registry(regName);
+
+        assertTrue(Iterators.tryFind(mmgr.iterator(), mreg -> regName.equals(mreg.name())).isPresent());
+
+        assertThrowsWithCause(() -> metricRegistry(ignite.name(), null, regName), IgniteException.class);
+
+        mmgr.remove(regName);
+
+        assertFalse(Iterators.tryFind(mmgr.iterator(), mreg -> regName.equals(mreg.name())).isPresent());
+
+        assertThrowsWithCause(() -> metricRegistry(ignite.name(), null, regName), IgniteException.class);
+    }
+
+    /** */
+    @Test
     public void testCachesView() throws Exception {
         Set<String> cacheNames = new HashSet<>(Arrays.asList("cache-1", "cache-2"));