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 <nsamelc...@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"));