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

apolovtsev 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 eebbc79d76e IGNITE-25735 Add node name to metric exporter's thread 
pool (#6096)
eebbc79d76e is described below

commit eebbc79d76e33e55c8c7e7e260d2bb3456543c53
Author: Alexander Polovtcev <[email protected]>
AuthorDate: Mon Jun 23 17:42:50 2025 +0300

    IGNITE-25735 Add node name to metric exporter's thread pool (#6096)
---
 .../org/apache/ignite/internal/metrics/MetricManager.java   |  5 +++--
 .../apache/ignite/internal/metrics/MetricManagerImpl.java   | 10 ++++------
 .../org/apache/ignite/internal/metrics/MetricRegistry.java  |  3 ++-
 .../internal/metrics/exporters/BasicMetricExporter.java     | 13 +++++--------
 .../internal/metrics/exporters/PushMetricExporter.java      | 13 +++++++------
 5 files changed, 21 insertions(+), 23 deletions(-)

diff --git 
a/modules/metrics/src/main/java/org/apache/ignite/internal/metrics/MetricManager.java
 
b/modules/metrics/src/main/java/org/apache/ignite/internal/metrics/MetricManager.java
index 337114a1ac4..4ae0c06fe82 100644
--- 
a/modules/metrics/src/main/java/org/apache/ignite/internal/metrics/MetricManager.java
+++ 
b/modules/metrics/src/main/java/org/apache/ignite/internal/metrics/MetricManager.java
@@ -25,6 +25,7 @@ import org.apache.ignite.internal.lang.IgniteBiTuple;
 import org.apache.ignite.internal.manager.IgniteComponent;
 import org.apache.ignite.internal.metrics.configuration.MetricConfiguration;
 import org.apache.ignite.internal.metrics.exporters.MetricExporter;
+import org.jetbrains.annotations.Nullable;
 import org.jetbrains.annotations.VisibleForTesting;
 
 /**
@@ -84,7 +85,7 @@ public interface MetricManager extends IgniteComponent {
      * @param src Metric source.
      * @return Metric set, or {@code null} if already enabled.
      */
-    MetricSet enable(MetricSource src);
+    @Nullable MetricSet enable(MetricSource src);
 
     /**
      * Enable metric source by name. See {@link MetricRegistry#enable(String)}.
@@ -92,7 +93,7 @@ public interface MetricManager extends IgniteComponent {
      * @param srcName Source name.
      * @return Metric set, or {@code null} if already enabled.
      */
-    MetricSet enable(String srcName);
+    @Nullable MetricSet enable(String srcName);
 
     /**
      * Disable metric source. See {@link MetricRegistry#disable(MetricSource)}.
diff --git 
a/modules/metrics/src/main/java/org/apache/ignite/internal/metrics/MetricManagerImpl.java
 
b/modules/metrics/src/main/java/org/apache/ignite/internal/metrics/MetricManagerImpl.java
index 282462ec0c1..c25d7e2c0db 100644
--- 
a/modules/metrics/src/main/java/org/apache/ignite/internal/metrics/MetricManagerImpl.java
+++ 
b/modules/metrics/src/main/java/org/apache/ignite/internal/metrics/MetricManagerImpl.java
@@ -165,7 +165,7 @@ public class MetricManagerImpl implements MetricManager {
     }
 
     @Override
-    public MetricSet enable(final String srcName) {
+    public MetricSet enable(String srcName) {
         MetricSet enabled = registry.enable(srcName);
 
         if (enabled != null) {
@@ -183,7 +183,7 @@ public class MetricManagerImpl implements MetricManager {
     }
 
     @Override
-    public void disable(final String srcName) {
+    public void disable(String srcName) {
         registry.disable(srcName);
 
         enabledMetricExporters.values().forEach(e -> 
e.removeMetricSet(srcName));
@@ -223,17 +223,15 @@ public class MetricManagerImpl implements MetricManager {
 
     /**
      * Load exporters by {@link ServiceLoader} mechanism.
-     *
-     * @return list of loaded exporters.
      */
-    public static Map<String, MetricExporter> loadExporters() {
+    private static Map<String, MetricExporter> loadExporters() {
         var clsLdr = Thread.currentThread().getContextClassLoader();
 
         return ServiceLoader
                 .load(MetricExporter.class, clsLdr)
                 .stream()
                 .map(Provider::get)
-                .collect(Collectors.toMap(e -> e.name(), Function.identity()));
+                .collect(Collectors.toMap(MetricExporter::name, 
Function.identity()));
     }
 
     private class ExporterConfigurationListener implements 
ConfigurationNamedListListener<ExporterView> {
diff --git 
a/modules/metrics/src/main/java/org/apache/ignite/internal/metrics/MetricRegistry.java
 
b/modules/metrics/src/main/java/org/apache/ignite/internal/metrics/MetricRegistry.java
index 39ff94f9e40..a67a94542f5 100644
--- 
a/modules/metrics/src/main/java/org/apache/ignite/internal/metrics/MetricRegistry.java
+++ 
b/modules/metrics/src/main/java/org/apache/ignite/internal/metrics/MetricRegistry.java
@@ -28,6 +28,7 @@ import java.util.Map;
 import java.util.TreeMap;
 import java.util.concurrent.locks.ReentrantLock;
 import org.apache.ignite.internal.lang.IgniteBiTuple;
+import org.jetbrains.annotations.Nullable;
 
 /**
  * Metric registry. Metrics source (see {@link MetricSource} must be 
registered in this metrics registry after initialization
@@ -109,7 +110,7 @@ public class MetricRegistry {
      * @throws IllegalStateException If metric source isn't registered.
      * @throws IllegalArgumentException If metric source isn't the same as 
registered.
      */
-    public MetricSet enable(MetricSource src) {
+    public @Nullable MetricSet enable(MetricSource src) {
         lock.lock();
 
         try {
diff --git 
a/modules/metrics/src/main/java/org/apache/ignite/internal/metrics/exporters/BasicMetricExporter.java
 
b/modules/metrics/src/main/java/org/apache/ignite/internal/metrics/exporters/BasicMetricExporter.java
index a5cdb40fd87..51884c54d87 100644
--- 
a/modules/metrics/src/main/java/org/apache/ignite/internal/metrics/exporters/BasicMetricExporter.java
+++ 
b/modules/metrics/src/main/java/org/apache/ignite/internal/metrics/exporters/BasicMetricExporter.java
@@ -24,7 +24,6 @@ import org.apache.ignite.internal.lang.IgniteBiTuple;
 import org.apache.ignite.internal.metrics.MetricProvider;
 import org.apache.ignite.internal.metrics.MetricSet;
 import org.apache.ignite.internal.metrics.exporters.configuration.ExporterView;
-import org.jetbrains.annotations.Nullable;
 
 /**
  * Base class for new metrics exporters implementations.
@@ -40,18 +39,16 @@ public abstract class BasicMetricExporter<CfgT extends 
ExporterView> implements
     /** Exporter's configuration view. */
     private CfgT configuration;
 
-    /** {@inheritDoc} */
     @Override
-    public void start(MetricProvider metricsProvider, CfgT configuration, 
Supplier<UUID> clusterIdSupplier, String nodeName) {
+    public synchronized void start(MetricProvider metricsProvider, CfgT 
configuration, Supplier<UUID> clusterIdSupplier, String nodeName) {
         this.metricsProvider = metricsProvider;
         this.configuration = configuration;
         this.clusterIdSupplier = clusterIdSupplier;
         this.nodeName = nodeName;
     }
 
-    /** {@inheritDoc} */
     @Override
-    public synchronized void reconfigure(@Nullable CfgT newVal) {
+    public synchronized void reconfigure(CfgT newVal) {
         configuration = newVal;
     }
 
@@ -69,21 +66,21 @@ public abstract class BasicMetricExporter<CfgT extends 
ExporterView> implements
      *
      * @return map of metrics
      */
-    protected final IgniteBiTuple<Map<String, MetricSet>, Long> metrics() {
+    protected final synchronized IgniteBiTuple<Map<String, MetricSet>, Long> 
metrics() {
         return metricsProvider.metrics();
     }
 
     /**
      * Returns current cluster ID.
      */
-    protected final UUID clusterId() {
+    protected final synchronized UUID clusterId() {
         return clusterIdSupplier.get();
     }
 
     /**
      * Returns the network alias of the node.
      */
-    protected final String nodeName() {
+    protected final synchronized String nodeName() {
         return nodeName;
     }
 }
diff --git 
a/modules/metrics/src/main/java/org/apache/ignite/internal/metrics/exporters/PushMetricExporter.java
 
b/modules/metrics/src/main/java/org/apache/ignite/internal/metrics/exporters/PushMetricExporter.java
index a220be37a03..359d6193a1f 100644
--- 
a/modules/metrics/src/main/java/org/apache/ignite/internal/metrics/exporters/PushMetricExporter.java
+++ 
b/modules/metrics/src/main/java/org/apache/ignite/internal/metrics/exporters/PushMetricExporter.java
@@ -17,8 +17,9 @@
 
 package org.apache.ignite.internal.metrics.exporters;
 
+import static java.util.concurrent.Executors.newSingleThreadScheduledExecutor;
+
 import java.util.UUID;
-import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
@@ -27,7 +28,7 @@ import org.apache.ignite.internal.logger.IgniteLogger;
 import org.apache.ignite.internal.logger.Loggers;
 import org.apache.ignite.internal.metrics.MetricProvider;
 import org.apache.ignite.internal.metrics.exporters.configuration.ExporterView;
-import org.apache.ignite.internal.thread.NamedThreadFactory;
+import org.apache.ignite.internal.thread.IgniteThreadFactory;
 import org.apache.ignite.internal.util.IgniteUtils;
 import org.jetbrains.annotations.Nullable;
 
@@ -41,7 +42,7 @@ public abstract class PushMetricExporter<CfgT extends 
ExporterView> extends Basi
     protected final IgniteLogger log = Loggers.forClass(getClass());
 
     /** Export task future. */
-    private ScheduledFuture<?> fut;
+    private @Nullable ScheduledFuture<?> fut;
 
     /** Export scheduler. */
     private ScheduledExecutorService scheduler;
@@ -52,13 +53,13 @@ public abstract class PushMetricExporter<CfgT extends 
ExporterView> extends Basi
     public synchronized void start(MetricProvider metricProvider, CfgT conf, 
Supplier<UUID> clusterIdSupplier, String nodeName) {
         super.start(metricProvider, conf, clusterIdSupplier, nodeName);
 
-        scheduler = Executors.newSingleThreadScheduledExecutor(new 
NamedThreadFactory("metrics-exporter-" + name(), log));
+        scheduler = 
newSingleThreadScheduledExecutor(IgniteThreadFactory.create(nodeName, 
"metrics-exporter-" + name(), log));
 
         reconfigure(conf);
     }
 
     @Override
-    public synchronized void reconfigure(@Nullable CfgT newVal) {
+    public synchronized void reconfigure(CfgT newVal) {
         super.reconfigure(newVal);
 
         long newPeriod = period();
@@ -109,7 +110,7 @@ public abstract class PushMetricExporter<CfgT extends 
ExporterView> extends Basi
      * <p>This method will be executed periodically by internal exporter's 
scheduler.
      *
      * <p>In case of any exceptions exporter's internal scheduler will be 
stopped
-     * and no new {@link #report()} will be executed.
+     * and no new {@code report} will be executed.
      */
     public abstract void report();
 }

Reply via email to