This is an automated email from the ASF dual-hosted git repository.
epugh pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr.git
The following commit(s) were added to refs/heads/main by this push:
new c6deb8f3e97 Tidy up java code in o.a.s.metrics package (#4679)
c6deb8f3e97 is described below
commit c6deb8f3e973e797974f8dae7408443ffe302463
Author: Eric Pugh <[email protected]>
AuthorDate: Thu Aug 6 09:57:47 2026 -0400
Tidy up java code in o.a.s.metrics package (#4679)
---
.../java/org/apache/solr/core/CoreContainer.java | 2 +-
.../apache/solr/metrics/SolrCoreMetricManager.java | 23 +---------------------
.../org/apache/solr/metrics/SolrMetricManager.java | 20 ++++---------------
.../apache/solr/metrics/SolrMetricProducer.java | 16 +++++++--------
.../solr/metrics/otel/MetricExporterFactory.java | 11 +++++------
.../apache/solr/blockcache/BufferStoreTest.java | 4 +++-
.../org/apache/solr/search/TestCaffeineCache.java | 4 +++-
.../org/apache/solr/search/TestSolrCachePerf.java | 4 +++-
.../test/org/apache/solr/search/TestThinCache.java | 4 +++-
.../stats/OtelInstrumentedExecutorServiceTest.java | 4 +++-
10 files changed, 34 insertions(+), 58 deletions(-)
diff --git a/solr/core/src/java/org/apache/solr/core/CoreContainer.java
b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
index d79c3b7b794..2afae17b49e 100644
--- a/solr/core/src/java/org/apache/solr/core/CoreContainer.java
+++ b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
@@ -411,7 +411,7 @@ public class CoreContainer {
this.solrCores = SolrCores.newSolrCores(this);
this.nodeKeyPair = new SolrNodeKeyPair(cfg.getCloudConfig());
OpenTelemetryConfigurator.initializeOpenTelemetrySdk(cfg, loader);
- this.metricManager = new SolrMetricManager(loader, cfg.getMetricsConfig());
+ this.metricManager = new SolrMetricManager(loader);
this.tracer = TraceUtils.getGlobalTracer();
containerHandlers.put(PublicKeyHandler.PATH, new
PublicKeyHandler(nodeKeyPair));
diff --git
a/solr/core/src/java/org/apache/solr/metrics/SolrCoreMetricManager.java
b/solr/core/src/java/org/apache/solr/metrics/SolrCoreMetricManager.java
index a79accb7aa7..1a50e0cc1ec 100644
--- a/solr/core/src/java/org/apache/solr/metrics/SolrCoreMetricManager.java
+++ b/solr/core/src/java/org/apache/solr/metrics/SolrCoreMetricManager.java
@@ -163,7 +163,7 @@ public class SolrCoreMetricManager implements Closeable {
* that logically belong to a single collection we convert the core name
into a dot-separated
* hierarchy of: collection name, shard name (with optional split) and
replica name.
*
- * <p>For example, when the core name looks like this but it's NOT a
SolrCloud collection: <code>
+ * <p>For example, when the core name looks like this, but it's NOT a
SolrCloud collection: <code>
* my_collection_shard1_1_replica1</code> then this will be used as the
registry name (plus the
* required <code>solr.core</code> prefix). However, if this is a SolrCloud
collection <code>
* my_collection</code> then the registry name will become <code>
@@ -184,25 +184,4 @@ public class SolrCoreMetricManager implements Closeable {
return SolrMetricManager.enforcePrefix("core." + coreName);
}
}
-
- /**
- * This method is used by {@link
org.apache.solr.core.CoreContainer#rename(String, String)}.
- *
- * @param aCore existing core with old name
- * @param coreName new name
- * @return new registry name
- */
- public static String createRegistryName(SolrCore aCore, String coreName) {
- CloudDescriptor cd = aCore.getCoreDescriptor().getCloudDescriptor();
- String replicaName = null;
- if (cd != null) {
- replicaName = Utils.parseMetricsReplicaName(cd.getCollectionName(),
coreName);
- }
- return createRegistryName(
- cd != null,
- cd != null ? cd.getCollectionName() : null,
- cd != null ? cd.getShardId() : null,
- replicaName,
- coreName);
- }
}
diff --git a/solr/core/src/java/org/apache/solr/metrics/SolrMetricManager.java
b/solr/core/src/java/org/apache/solr/metrics/SolrMetricManager.java
index 4408eca7d45..336610c536d 100644
--- a/solr/core/src/java/org/apache/solr/metrics/SolrMetricManager.java
+++ b/solr/core/src/java/org/apache/solr/metrics/SolrMetricManager.java
@@ -62,13 +62,10 @@ import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.TimeUnit;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantLock;
import java.util.function.Consumer;
import java.util.stream.Collectors;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.util.IOUtils;
-import org.apache.solr.core.MetricsConfig;
import org.apache.solr.core.SolrCore;
import org.apache.solr.core.SolrInfoBean;
import org.apache.solr.core.SolrResourceLoader;
@@ -95,7 +92,7 @@ import org.slf4j.LoggerFactory;
* <li>Access to metric instruments such as {@link LongCounter}, {@link
LongUpDownCounter}, {@link
* LongGauge}, {@link LongHistogram} and observable instruments to a
specific MeterProvider
* instances
- * <li>{@link FilterablePrometheusMetricReader} for reading and fitlering
OpenTelemetry metrics in
+ * <li>{@link FilterablePrometheusMetricReader} for reading and filtering
OpenTelemetry metrics in
* Prometheus Format from all MeterProviders
* <li>Enablement of optional OTLP exporter
* </ul>
@@ -116,19 +113,12 @@ public class SolrMetricManager {
* Registry name for JVM-specific metrics. This name is also subject to
overrides controlled by
* system properties. This registry is shared between instances of {@link
SolrMetricManager}.
*/
- public static final String JVM_REGISTRY =
- REGISTRY_NAME_PREFIX + SolrInfoBean.Group.jvm.toString();
+ public static final String JVM_REGISTRY = REGISTRY_NAME_PREFIX +
SolrInfoBean.Group.jvm;
- public static final String NODE_REGISTRY =
- REGISTRY_NAME_PREFIX + SolrInfoBean.Group.node.toString();
-
- private final Lock reportersLock = new ReentrantLock();
- private final Lock swapLock = new ReentrantLock();
+ public static final String NODE_REGISTRY = REGISTRY_NAME_PREFIX +
SolrInfoBean.Group.node;
public static final int DEFAULT_CLOUD_REPORTER_PERIOD = 60;
- private final MetricsConfig metricsConfig;
-
private final ConcurrentMap<String, MeterProviderAndReaders>
meterProviderAndReaders =
new ConcurrentHashMap<>();
@@ -153,12 +143,10 @@ public class SolrMetricManager {
1_000_000_000.0);
public SolrMetricManager(MetricExporter exporter) {
- metricsConfig = new MetricsConfig.MetricsConfigBuilder().build();
metricExporter = exporter;
}
- public SolrMetricManager(SolrResourceLoader loader, MetricsConfig
metricsConfig) {
- this.metricsConfig = metricsConfig;
+ public SolrMetricManager(SolrResourceLoader loader) {
this.metricExporter = loadMetricExporter(loader);
this.otelRuntimeJvmMetrics = new OtelRuntimeJvmMetrics().initialize(this,
JVM_REGISTRY);
}
diff --git a/solr/core/src/java/org/apache/solr/metrics/SolrMetricProducer.java
b/solr/core/src/java/org/apache/solr/metrics/SolrMetricProducer.java
index fb6ae3102e1..3789529665d 100644
--- a/solr/core/src/java/org/apache/solr/metrics/SolrMetricProducer.java
+++ b/solr/core/src/java/org/apache/solr/metrics/SolrMetricProducer.java
@@ -24,14 +24,14 @@ import org.apache.solr.common.util.IOUtils;
/** Used by objects that expose metrics through {@link SolrMetricManager}. */
public interface SolrMetricProducer extends AutoCloseable {
- public static final AttributeKey<String> TYPE_ATTR =
AttributeKey.stringKey("type");
- public static final AttributeKey<String> CATEGORY_ATTR =
AttributeKey.stringKey("category");
- public static final AttributeKey<String> HANDLER_ATTR =
AttributeKey.stringKey("handler");
- public static final AttributeKey<String> OPERATION_ATTR =
AttributeKey.stringKey("ops");
- public static final AttributeKey<String> RESULT_ATTR =
AttributeKey.stringKey("result");
- public static final AttributeKey<String> NAME_ATTR =
AttributeKey.stringKey("name");
- public static final AttributeKey<String> PLUGIN_NAME_ATTR =
AttributeKey.stringKey("plugin_name");
- public static final AttributeKey<String> STATE_KEY_ATTR =
AttributeKey.stringKey("state");
+ AttributeKey<String> TYPE_ATTR = AttributeKey.stringKey("type");
+ AttributeKey<String> CATEGORY_ATTR = AttributeKey.stringKey("category");
+ AttributeKey<String> HANDLER_ATTR = AttributeKey.stringKey("handler");
+ AttributeKey<String> OPERATION_ATTR = AttributeKey.stringKey("ops");
+ AttributeKey<String> RESULT_ATTR = AttributeKey.stringKey("result");
+ AttributeKey<String> NAME_ATTR = AttributeKey.stringKey("name");
+ AttributeKey<String> PLUGIN_NAME_ATTR =
AttributeKey.stringKey("plugin_name");
+ AttributeKey<String> STATE_KEY_ATTR = AttributeKey.stringKey("state");
/**
* Unique metric tag identifies components with the same life-cycle, which
should be registered /
diff --git
a/solr/core/src/java/org/apache/solr/metrics/otel/MetricExporterFactory.java
b/solr/core/src/java/org/apache/solr/metrics/otel/MetricExporterFactory.java
index e6f1f24e85c..301c1f6a840 100644
--- a/solr/core/src/java/org/apache/solr/metrics/otel/MetricExporterFactory.java
+++ b/solr/core/src/java/org/apache/solr/metrics/otel/MetricExporterFactory.java
@@ -21,19 +21,18 @@ import org.apache.solr.common.util.EnvUtils;
public interface MetricExporterFactory {
- public static final Boolean OTLP_EXPORTER_ENABLED =
+ Boolean OTLP_EXPORTER_ENABLED =
Boolean.parseBoolean(EnvUtils.getProperty("solr.metrics.otlpExporterEnabled",
"false"));
- public static final String OTLP_EXPORTER_PROTOCOL =
- EnvUtils.getProperty("solr.metrics.otlpExporterProtocol", "http");
+ String OTLP_EXPORTER_PROTOCOL =
EnvUtils.getProperty("solr.metrics.otlpExporterProtocol", "http");
- public static final int OTLP_EXPORTER_INTERVAL =
+ int OTLP_EXPORTER_INTERVAL =
Integer.parseInt(EnvUtils.getProperty("solr.metrics.otlpExporterInterval",
"60000"));
- public static final String OTLP_EXPORTER_GRPC_ENDPOINT =
+ String OTLP_EXPORTER_GRPC_ENDPOINT =
EnvUtils.getProperty("solr.metrics.otlpGrpcExporterEndpoint",
"http://localhost:4317");
- public static final String OTLP_EXPORTER_HTTP_ENDPOINT =
+ String OTLP_EXPORTER_HTTP_ENDPOINT =
EnvUtils.getProperty(
"solr.metrics.otlpHttpExporterEndpoint",
"http://localhost:4318/v1/metrics");
diff --git a/solr/core/src/test/org/apache/solr/blockcache/BufferStoreTest.java
b/solr/core/src/test/org/apache/solr/blockcache/BufferStoreTest.java
index 7e0171b0d4b..011b9bc5830 100644
--- a/solr/core/src/test/org/apache/solr/blockcache/BufferStoreTest.java
+++ b/solr/core/src/test/org/apache/solr/blockcache/BufferStoreTest.java
@@ -17,6 +17,7 @@
package org.apache.solr.blockcache;
import io.opentelemetry.api.common.Attributes;
+import io.opentelemetry.sdk.metrics.export.MetricExporter;
import io.prometheus.metrics.model.snapshots.GaugeSnapshot;
import io.prometheus.metrics.model.snapshots.Labels;
import org.apache.lucene.tests.util.TestUtil;
@@ -41,7 +42,8 @@ public class BufferStoreTest extends SolrTestCase {
@Before
public void setup() {
metrics = new Metrics();
- metricManager = new SolrMetricManager(null);
+ MetricExporter me = null;
+ metricManager = new SolrMetricManager(me);
registry = TestUtil.randomSimpleString(random(), 2, 10);
solrMetricsContext = new SolrMetricsContext(metricManager, registry);
metrics.initializeMetrics(solrMetricsContext, Attributes.empty());
diff --git a/solr/core/src/test/org/apache/solr/search/TestCaffeineCache.java
b/solr/core/src/test/org/apache/solr/search/TestCaffeineCache.java
index 39ea9223173..ec951df0439 100644
--- a/solr/core/src/test/org/apache/solr/search/TestCaffeineCache.java
+++ b/solr/core/src/test/org/apache/solr/search/TestCaffeineCache.java
@@ -22,6 +22,7 @@ import com.github.benmanes.caffeine.cache.Cache;
import com.github.benmanes.caffeine.cache.Caffeine;
import com.github.benmanes.caffeine.cache.RemovalCause;
import io.opentelemetry.api.common.Attributes;
+import io.opentelemetry.sdk.metrics.export.MetricExporter;
import io.prometheus.metrics.model.snapshots.CounterSnapshot;
import io.prometheus.metrics.model.snapshots.Labels;
import java.io.IOException;
@@ -46,7 +47,8 @@ import org.junit.Test;
/** Test for {@link CaffeineCache}. */
public class TestCaffeineCache extends SolrTestCase {
- SolrMetricManager metricManager = new SolrMetricManager(null);
+ MetricExporter me = null;
+ SolrMetricManager metricManager = new SolrMetricManager(me);
String registry = TestUtil.randomSimpleString(random(), 2, 10);
String scope = TestUtil.randomSimpleString(random(), 2, 10);
diff --git a/solr/core/src/test/org/apache/solr/search/TestSolrCachePerf.java
b/solr/core/src/test/org/apache/solr/search/TestSolrCachePerf.java
index 36645bdde06..26d71abbc15 100644
--- a/solr/core/src/test/org/apache/solr/search/TestSolrCachePerf.java
+++ b/solr/core/src/test/org/apache/solr/search/TestSolrCachePerf.java
@@ -19,6 +19,7 @@ package org.apache.solr.search;
import static org.apache.solr.metrics.SolrMetricProducer.NAME_ATTR;
import io.opentelemetry.api.common.Attributes;
+import io.opentelemetry.sdk.metrics.export.MetricExporter;
import io.prometheus.metrics.model.snapshots.Labels;
import java.io.IOException;
import java.util.ArrayList;
@@ -102,7 +103,8 @@ public class TestSolrCachePerf extends SolrTestCaseJ4 {
boolean useCompute)
throws Exception {
for (Class<? extends SolrCache> clazz : IMPLS) {
- SolrMetricManager metricManager = new SolrMetricManager(null);
+ MetricExporter me = null;
+ SolrMetricManager metricManager = new SolrMetricManager(me);
@SuppressWarnings({"unchecked"})
SolrCache<String, String> cache =
clazz.getDeclaredConstructor().newInstance();
Map<String, String> params = new HashMap<>();
diff --git a/solr/core/src/test/org/apache/solr/search/TestThinCache.java
b/solr/core/src/test/org/apache/solr/search/TestThinCache.java
index fb39a019913..7d668a8e9ed 100644
--- a/solr/core/src/test/org/apache/solr/search/TestThinCache.java
+++ b/solr/core/src/test/org/apache/solr/search/TestThinCache.java
@@ -21,6 +21,7 @@ import static
org.apache.solr.metrics.SolrMetricProducer.CATEGORY_ATTR;
import static org.apache.solr.metrics.SolrMetricProducer.NAME_ATTR;
import io.opentelemetry.api.common.Attributes;
+import io.opentelemetry.sdk.metrics.export.MetricExporter;
import io.prometheus.metrics.model.snapshots.Labels;
import java.io.IOException;
import java.nio.file.Files;
@@ -95,7 +96,8 @@ public class TestThinCache extends SolrTestCaseJ4 {
lrf = h.getRequestFactory("/select", 0, 20);
}
- SolrMetricManager metricManager = new SolrMetricManager(null);
+ MetricExporter me = null;
+ SolrMetricManager metricManager = new SolrMetricManager(me);
String registry = TestUtil.randomSimpleString(random(), 2, 10);
@Test
diff --git
a/solr/core/src/test/org/apache/solr/util/stats/OtelInstrumentedExecutorServiceTest.java
b/solr/core/src/test/org/apache/solr/util/stats/OtelInstrumentedExecutorServiceTest.java
index 336995f3aa0..ee2684996dd 100644
---
a/solr/core/src/test/org/apache/solr/util/stats/OtelInstrumentedExecutorServiceTest.java
+++
b/solr/core/src/test/org/apache/solr/util/stats/OtelInstrumentedExecutorServiceTest.java
@@ -19,6 +19,7 @@ package org.apache.solr.util.stats;
import static
com.carrotsearch.randomizedtesting.RandomizedTest.randomIntBetween;
import static org.apache.solr.metrics.SolrMetricProducer.TYPE_ATTR;
+import io.opentelemetry.sdk.metrics.export.MetricExporter;
import io.prometheus.metrics.model.snapshots.CounterSnapshot;
import
io.prometheus.metrics.model.snapshots.CounterSnapshot.CounterDataPointSnapshot;
import io.prometheus.metrics.model.snapshots.GaugeSnapshot;
@@ -51,7 +52,8 @@ public class OtelInstrumentedExecutorServiceTest extends
SolrTestCase {
@Before
public void setUpMetrics() {
- metricsContext = new SolrMetricsContext(new SolrMetricManager(null),
REGISTRY_NAME);
+ MetricExporter me = null;
+ metricsContext = new SolrMetricsContext(new SolrMetricManager(me),
REGISTRY_NAME);
}
@After