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

dsmiley pushed a commit to branch branch_9_7
in repository https://gitbox.apache.org/repos/asf/solr.git


The following commit(s) were added to refs/heads/branch_9_7 by this push:
     new 18506087083 SOLR-17530: Metrics: fix Prometheus response writer for 
TLOG & PULL replicas (#2795)
18506087083 is described below

commit 1850608708354be4a4ff5c6d6f84d4a1ec8869dd
Author: Matthew Biscocho <[email protected]>
AuthorDate: Fri Nov 1 23:30:11 2024 -0400

    SOLR-17530: Metrics: fix Prometheus response writer for TLOG & PULL 
replicas (#2795)
    
    The new Prometheus response writer wasn't detecting TLOG or PULL replicas 
properly.
    
    ---------
    
    Co-authored-by: David Smiley <[email protected]>
    
    (cherry picked from commit 206904ef3c446cc290daacd2f77ea553bbdd33ad)
---
 solr/CHANGES.txt                                   |  4 +--
 .../core/PrometheusCoreFormatterInfo.java          |  2 +-
 .../solr/metrics/SolrPrometheusFormatterTest.java  | 31 ++++++++++++++++++++++
 3 files changed, 33 insertions(+), 4 deletions(-)

diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 01c70c17409..bfe09f10354 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -11,9 +11,7 @@ Bug Fixes
 
 * SOLR-17515: Http2SolrClient now sets its 'AuthenticationStore' in all 
circumstances, preventing NPE's when used with a HttpClientBuilderFactory 
(Jason Gerlowski)
 
-Dependency Upgrades
----------------------
-(No changes)
+* SOLR-17530: Metrics: The new Prometheus response writer wasn't detecting 
TLOG or PULL replicas properly. (Matthew Biscocho)
 
 ==================  9.7.0 ==================
 New Features
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 51f5d9765d9..baa7be5898b 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 @@ public interface PrometheusCoreFormatterInfo {
     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 186c83c8a91..5c62910b43f 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.HashMap;
 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 class SolrPrometheusFormatterTest extends 
SolrTestCaseJ4 {
     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.matches());
+    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.matches());
+
+    badCoreName = "core_solrtest_shards100_replica_x23";
+    m = CLOUD_CORE_PATTERN.matcher(badCoreName);
+    assertFalse(m.matches());
+  }
+
   static class TestSolrPrometheusFormatter extends SolrPrometheusFormatter {
     @Override
     public void exportDropwizardMetric(Metric dropwizardMetric, String 
metricName) {}

Reply via email to