This is an automated email from the ASF dual-hosted git repository.
rpuch pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/main by this push:
new eb7e525d749 IGNITE-25349 Ignore InstanceAlreadyExistsException in
metrics in tests (#5926)
eb7e525d749 is described below
commit eb7e525d749f2946f9c7a646fb01cef7ee62d7a3
Author: Roman Puchkovskiy <[email protected]>
AuthorDate: Thu May 29 14:18:07 2025 +0400
IGNITE-25349 Ignore InstanceAlreadyExistsException in metrics in tests
(#5926)
---
.../apache/ignite/internal/lang/IgniteSystemProperties.java | 4 ++++
.../ignite/internal/testframework/BaseIgniteAbstractTest.java | 1 +
.../ignite/internal/metrics/exporters/jmx/JmxExporter.java | 11 ++++++++++-
.../ignite/internal/runner/app/PlatformTestNodeRunner.java | 3 +++
4 files changed, 18 insertions(+), 1 deletion(-)
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/lang/IgniteSystemProperties.java
b/modules/core/src/main/java/org/apache/ignite/internal/lang/IgniteSystemProperties.java
index c99a9214756..b08c7b8e06c 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/lang/IgniteSystemProperties.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/lang/IgniteSystemProperties.java
@@ -86,6 +86,10 @@ public final class IgniteSystemProperties {
/** Enables zone based replication (aka colocation) feature. */
public static final String COLOCATION_FEATURE_FLAG =
"IGNITE_ZONE_BASED_REPLICATION";
+ // TODO: https://issues.apache.org/jira/browse/IGNITE-25526 - remove this.
+ /** Name of the property controlling whether JMX MBean creation failure
due to existing bean should be ignored. */
+ public static final String IGNORE_DUPLICATE_JMX_MBEANS_ERROR =
"IGNITE_IGNORE_DUPLICATE_JMX_MBEANS_ERROR";
+
/**
* Enforces singleton.
*/
diff --git
a/modules/core/src/testFixtures/java/org/apache/ignite/internal/testframework/BaseIgniteAbstractTest.java
b/modules/core/src/testFixtures/java/org/apache/ignite/internal/testframework/BaseIgniteAbstractTest.java
index fabdcd1d26d..afbe4a56537 100644
---
a/modules/core/src/testFixtures/java/org/apache/ignite/internal/testframework/BaseIgniteAbstractTest.java
+++
b/modules/core/src/testFixtures/java/org/apache/ignite/internal/testframework/BaseIgniteAbstractTest.java
@@ -41,6 +41,7 @@ import org.mockito.Mockito;
@ExtendWith(SystemPropertiesExtension.class)
@WithSystemProperty(key = IgniteSystemProperties.THREAD_ASSERTIONS_ENABLED,
value = "true")
@WithSystemProperty(key =
IgniteSystemProperties.LONG_HANDLING_LOGGING_ENABLED, value = "true")
+@WithSystemProperty(key =
IgniteSystemProperties.IGNORE_DUPLICATE_JMX_MBEANS_ERROR, value = "true")
public abstract class BaseIgniteAbstractTest {
/** Logger. */
protected final IgniteLogger log = Loggers.forClass(getClass());
diff --git
a/modules/metrics/src/main/java/org/apache/ignite/internal/metrics/exporters/jmx/JmxExporter.java
b/modules/metrics/src/main/java/org/apache/ignite/internal/metrics/exporters/jmx/JmxExporter.java
index 5f345c5b49f..c85c77f2457 100644
---
a/modules/metrics/src/main/java/org/apache/ignite/internal/metrics/exporters/jmx/JmxExporter.java
+++
b/modules/metrics/src/main/java/org/apache/ignite/internal/metrics/exporters/jmx/JmxExporter.java
@@ -25,9 +25,11 @@ import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.function.Supplier;
+import javax.management.InstanceAlreadyExistsException;
import javax.management.JMException;
import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;
+import org.apache.ignite.internal.lang.IgniteSystemProperties;
import org.apache.ignite.internal.logger.IgniteLogger;
import org.apache.ignite.internal.logger.Loggers;
import org.apache.ignite.internal.metrics.MetricProvider;
@@ -126,10 +128,17 @@ public class JmxExporter extends
BasicMetricExporter<JmxExporterView> {
mbeans.add(mbean);
} catch (JMException e) {
- log.error("MBean for metric set " + metricSet.name() + " can't be
created.", e);
+ // TODO: https://issues.apache.org/jira/browse/IGNITE-25526 -
remove this if.
+ if (!(e instanceof InstanceAlreadyExistsException) ||
!ignoreDuplicateJmsMbeansError()) {
+ log.error("MBean for metric set " + metricSet.name() + " can't
be created.", e);
+ }
}
}
+ private static boolean ignoreDuplicateJmsMbeansError() {
+ return
IgniteSystemProperties.getBoolean(IgniteSystemProperties.IGNORE_DUPLICATE_JMX_MBEANS_ERROR,
false);
+ }
+
/**
* Unregister MBean for specific metric set.
*
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/PlatformTestNodeRunner.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/PlatformTestNodeRunner.java
index 67f15cdfc9a..2488044685c 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/PlatformTestNodeRunner.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/PlatformTestNodeRunner.java
@@ -86,6 +86,7 @@ import
org.apache.ignite.internal.catalog.commands.DefaultValue;
import org.apache.ignite.internal.client.proto.ColumnTypeConverter;
import org.apache.ignite.internal.configuration.ClusterChange;
import org.apache.ignite.internal.configuration.ClusterConfiguration;
+import org.apache.ignite.internal.lang.IgniteSystemProperties;
import org.apache.ignite.internal.runner.app.Jobs.JsonMarshaller;
import org.apache.ignite.internal.schema.Column;
import org.apache.ignite.internal.schema.SchemaDescriptor;
@@ -248,6 +249,8 @@ public class PlatformTestNodeRunner {
return;
}
+
System.setProperty(IgniteSystemProperties.IGNORE_DUPLICATE_JMX_MBEANS_ERROR,
"true");
+
List<IgniteServer> startedIgniteServers = startNodes(BASE_PATH,
nodesBootstrapCfg);
List<Ignite> startedNodes = startedIgniteServers.stream()