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

jgallimore pushed a commit to branch tomee-9.x
in repository https://gitbox.apache.org/repos/asf/tomee.git

commit f0b8eecd6b2bbaab61088cd20ecc50d37422b514
Author: Jean-Louis Monteiro <jlmonte...@tomitribe.com>
AuthorDate: Mon Oct 30 14:59:21 2023 +0100

    feat(#TOMEE-4267): MicroProfile Metrics JMX Registrar must be initialized 
once
---
 .../microprofile/metrics/MPMetricsCDIExtension.java    | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git 
a/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/metrics/MPMetricsCDIExtension.java
 
b/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/metrics/MPMetricsCDIExtension.java
index a058238c91..f406c9614e 100644
--- 
a/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/metrics/MPMetricsCDIExtension.java
+++ 
b/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/metrics/MPMetricsCDIExtension.java
@@ -24,15 +24,23 @@ import jakarta.enterprise.inject.spi.Extension;
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.Logger;
 
+import java.io.IOException;
+import java.util.concurrent.atomic.AtomicBoolean;
+
 public class MPMetricsCDIExtension implements Extension {
 
+    private static final AtomicBoolean INIT = new AtomicBoolean(false);
+
     private void afterDeploymentValidation(@Observes final 
AfterDeploymentValidation avd, BeanManager bm) {
-        try {
-            final JmxRegistrar registrar = new JmxRegistrar();
-            registrar.init();
 
-        } catch (final Exception e) {
-            Logger.getInstance(LogCategory.OPENEJB, 
MPMetricsCDIExtension.class).error("Can't initialize Metrics Registrar: " + 
e.getMessage());
+        if (INIT.compareAndSet(false, true)) {
+            try {
+                final JmxRegistrar registrar = new JmxRegistrar();
+                registrar.init();
+
+            } catch (final IOException e) {
+                Logger.getInstance(LogCategory.OPENEJB, 
MPMetricsCDIExtension.class).error("Can't initialize Metrics Registrar: " + 
e.getMessage());
+            }
         }
     }
 

Reply via email to