From d87943a5f754cc55d7056c2d889af2563cd529c1 Mon Sep 17 00:00:00 2001 From: Matthew Biscocho Date: Fri, 25 Oct 2024 10:44:14 -0400 Subject: [PATCH 1/3] Fix cloud pattern bug --- .../core/PrometheusCoreFormatterInfo.java | 2 +- .../metrics/SolrPrometheusFormatterTest.java | 31 +++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/solr/core/src/java/org/apache/solr/metrics/prometheus/core/PrometheusCoreFormatterInfo.java b/solr/core/src/java/org/apache/solr/metrics/prometheus/core/PrometheusCoreFormatterInfo.java index 51f5d9765d94..baa7be5898be 100644 --- a/solr/core/src/java/org/apache/solr/metrics/prometheus/core/PrometheusCoreFormatterInfo.java +++ b/solr/core/src/java/org/apache/solr/metrics/prometheus/core/PrometheusCoreFormatterInfo.java @@ -33,5 +33,5 @@ enum CoreCategory { CORE } - Pattern CLOUD_CORE_PATTERN = Pattern.compile("^core_(.*)_(shard[0-9]+)_(replica_n[0-9]+)$"); + Pattern CLOUD_CORE_PATTERN = Pattern.compile("^core_(.*)_(shard[0-9]+)_(replica_.[0-9]+)$"); } diff --git a/solr/core/src/test/org/apache/solr/metrics/SolrPrometheusFormatterTest.java b/solr/core/src/test/org/apache/solr/metrics/SolrPrometheusFormatterTest.java index 186c83c8a917..b241af2f39c8 100644 --- a/solr/core/src/test/org/apache/solr/metrics/SolrPrometheusFormatterTest.java +++ b/solr/core/src/test/org/apache/solr/metrics/SolrPrometheusFormatterTest.java @@ -16,6 +16,8 @@ */ package org.apache.solr.metrics; +import static org.apache.solr.metrics.prometheus.core.PrometheusCoreFormatterInfo.CLOUD_CORE_PATTERN; + import com.codahale.metrics.Counter; import com.codahale.metrics.Gauge; import com.codahale.metrics.Meter; @@ -29,6 +31,7 @@ import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; +import java.util.regex.Matcher; import org.apache.solr.SolrTestCaseJ4; import org.apache.solr.metrics.prometheus.SolrMetric; import org.apache.solr.metrics.prometheus.SolrPrometheusFormatter; @@ -141,6 +144,34 @@ public Map getValue() { assertEquals(expectedLabels, actual.getLabels()); } + @Test + public void testCloudCorePattern() { + String coreName = "core_test-core_shard2_replica_t123"; + Matcher m = CLOUD_CORE_PATTERN.matcher(coreName); + assertTrue(m.find()); + assertEquals("test-core", m.group(1)); + assertEquals("shard2", m.group(2)); + assertEquals("replica_t123", m.group(3)); + + coreName = "core_foo_bar_shard24_replica_p8"; + m = CLOUD_CORE_PATTERN.matcher(coreName); + assertTrue(m.find()); + assertEquals("foo_bar", m.group(1)); + assertEquals("shard24", m.group(2)); + assertEquals("replica_p8", m.group(3)); + } + + @Test + public void testBadCloudCorePattern() { + String badCoreName = "core_solrtest_shard100_replica_xyz23"; + Matcher m = CLOUD_CORE_PATTERN.matcher(badCoreName); + assertFalse(m.find()); + + badCoreName = "core_solrtest_shards100_replica_x23"; + m = CLOUD_CORE_PATTERN.matcher(badCoreName); + assertFalse(m.find()); + } + static class TestSolrPrometheusFormatter extends SolrPrometheusFormatter { @Override public void exportDropwizardMetric(Metric dropwizardMetric, String metricName) {} From 75301e5abb27512aee576eaf6cc775b7bf9081be Mon Sep 17 00:00:00 2001 From: Matthew Biscocho Date: Fri, 25 Oct 2024 11:10:28 -0400 Subject: [PATCH 2/3] Change to matches() --- .../apache/solr/metrics/SolrPrometheusFormatterTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/solr/core/src/test/org/apache/solr/metrics/SolrPrometheusFormatterTest.java b/solr/core/src/test/org/apache/solr/metrics/SolrPrometheusFormatterTest.java index b241af2f39c8..5c62910b43f5 100644 --- a/solr/core/src/test/org/apache/solr/metrics/SolrPrometheusFormatterTest.java +++ b/solr/core/src/test/org/apache/solr/metrics/SolrPrometheusFormatterTest.java @@ -155,7 +155,7 @@ public void testCloudCorePattern() { coreName = "core_foo_bar_shard24_replica_p8"; m = CLOUD_CORE_PATTERN.matcher(coreName); - assertTrue(m.find()); + assertTrue(m.matches()); assertEquals("foo_bar", m.group(1)); assertEquals("shard24", m.group(2)); assertEquals("replica_p8", m.group(3)); @@ -165,11 +165,11 @@ public void testCloudCorePattern() { public void testBadCloudCorePattern() { String badCoreName = "core_solrtest_shard100_replica_xyz23"; Matcher m = CLOUD_CORE_PATTERN.matcher(badCoreName); - assertFalse(m.find()); + assertFalse(m.matches()); badCoreName = "core_solrtest_shards100_replica_x23"; m = CLOUD_CORE_PATTERN.matcher(badCoreName); - assertFalse(m.find()); + assertFalse(m.matches()); } static class TestSolrPrometheusFormatter extends SolrPrometheusFormatter { From e03979fa7ae85c21664a7f5ddf2a7ef0123861ce Mon Sep 17 00:00:00 2001 From: David Smiley Date: Tue, 29 Oct 2024 21:53:51 -0400 Subject: [PATCH 3/3] CHANGES.txt (9.7.1) --- solr/CHANGES.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt index e61f29f122ad..53f9d3c28c32 100644 --- a/solr/CHANGES.txt +++ b/solr/CHANGES.txt @@ -212,6 +212,12 @@ led to the suppression of exceptions. (Andrey Bozhko) * SOLR-11318: Introduce unit testing for AssertTool. (Eric Pugh, Jason Gerlowski) +================== 9.7.1 ================== +Bug Fixes +--------------------- +* SOLR-17530: Metrics: Thew new Prometheus response writer wasn't detecting TLOG or PULL replicas properly. + (Matthew Biscocho) + ================== 9.7.0 ================== New Features ---------------------