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();
}