cugarte commented on code in PR #3568:
URL: https://github.com/apache/solr/pull/3568#discussion_r2317274766


##########
solr/core/src/java/org/apache/solr/update/SolrIndexWriter.java:
##########
@@ -177,66 +189,93 @@ private SolrIndexWriter(
       } else {
         mergeTotals = false;
       }
+      String coreName = core.getCoreDescriptor().getName();
+      var baseAttributesBuilder =
+          Attributes.builder()
+              .put(CATEGORY_ATTR, SolrInfoBean.Category.INDEX.toString())
+              .put(CORE_ATTR, coreName);
+      if (core.getCoreContainer().isZooKeeperAware()) {
+          String collectionName = core.getCoreDescriptor().getCollectionName();
+          baseAttributesBuilder
+              .put(COLLECTION_ATTR, collectionName)
+              .put(SHARD_ATTR, 
core.getCoreDescriptor().getCloudDescriptor().getShardId())
+              .put(REPLICA_ATTR, Utils.parseMetricsReplicaName(collectionName, 
coreName));
+      }
+      var baseAttributes = baseAttributesBuilder.build();
       if (mergeDetails) {
         mergeTotals = true; // override
         majorMergedDocs =
-            solrMetricsContext.meter(
-                "docs", SolrInfoBean.Category.INDEX.toString(), "merge", 
"major");
+            new AttributedLongCounter(
+                solrMetricsContext.longCounter(
+                    "solr_indexriter_major_merged_docs",
+                    "Number of documents merged while merging segments above 
the majorMergeDocs threshold"),
+                baseAttributes);
         majorDeletedDocs =
-            solrMetricsContext.meter(
-                "deletedDocs", SolrInfoBean.Category.INDEX.toString(), 
"merge", "major");
+            new AttributedLongCounter(
+                solrMetricsContext.longCounter(
+                    "solr_indexriter_major_deleted_docs",
+                    "Number of deleted documents that were expunged while 
merging segments above the majorMergeDocs threshold"),
+                baseAttributes);
       }
       if (mergeTotals) {
         minorMerge =
-            solrMetricsContext.timer("minor", 
SolrInfoBean.Category.INDEX.toString(), "merge");
+            new AttributedLongTimer(
+                solrMetricsContext.longHistogram(
+                    "solr_indexwriter_minor_merge",
+                    "Time spent merging segments below the majorMergeDocs 
threshold",
+                    OtelUnit.MILLISECONDS),
+                baseAttributes);
         majorMerge =
-            solrMetricsContext.timer("major", 
SolrInfoBean.Category.INDEX.toString(), "merge");
+            new AttributedLongTimer(
+                solrMetricsContext.longHistogram(
+                    "solr_indexwriter_major_merge",
+                    "Time spent merging segments above the majorMergeDocs 
threshold",
+                    OtelUnit.MILLISECONDS),
+                baseAttributes);
         mergeErrors =
-            solrMetricsContext.counter("errors", 
SolrInfoBean.Category.INDEX.toString(), "merge");
+            new AttributedLongCounter(
+                solrMetricsContext.longCounter(
+                    "solr_indexwriter_merge_errors",
+                    "Number of merge errors"),
+                baseAttributes);
         String tag = core.getMetricTag();
-        solrMetricsContext.gauge(
-            () -> runningMajorMerges.get(),
-            true,
-            "running",
-            SolrInfoBean.Category.INDEX.toString(),
-            "merge",
-            "major");
-        solrMetricsContext.gauge(
-            () -> runningMinorMerges.get(),
-            true,
-            "running",
-            SolrInfoBean.Category.INDEX.toString(),
-            "merge",
-            "minor");
-        solrMetricsContext.gauge(
-            () -> runningMajorMergesDocs.get(),
-            true,
-            "running.docs",
-            SolrInfoBean.Category.INDEX.toString(),
-            "merge",
-            "major");
-        solrMetricsContext.gauge(
-            () -> runningMinorMergesDocs.get(),
-            true,
-            "running.docs",
-            SolrInfoBean.Category.INDEX.toString(),
-            "merge",
-            "minor");
-        solrMetricsContext.gauge(
-            () -> runningMajorMergesSegments.get(),
-            true,
-            "running.segments",
-            SolrInfoBean.Category.INDEX.toString(),
-            "merge",
-            "major");
-        solrMetricsContext.gauge(
-            () -> runningMinorMergesSegments.get(),
-            true,
-            "running.segments",
-            SolrInfoBean.Category.INDEX.toString(),
-            "merge",
-            "minor");
-        flushMeter = solrMetricsContext.meter("flush", 
SolrInfoBean.Category.INDEX.toString());
+        majorMergeStats =
+            solrMetricsContext.observableLongGauge(
+                "solr_indexwriter_major_merge_stats",
+                "Metrics around currently running segment merges above the 
majorMergeDocs threshold",
+                (observableLongMeasurement -> {
+                  observableLongMeasurement.record(
+                      runningMajorMerges.get(),
+                      baseAttributes.toBuilder().put(TYPE_ATTR, 
"running").build());
+                  observableLongMeasurement.record(
+                      runningMajorMergesDocs.get(),
+                      baseAttributes.toBuilder().put(TYPE_ATTR, 
"running_docs").build());
+                  observableLongMeasurement.record(
+                      runningMajorMergesSegments.get(),
+                      baseAttributes.toBuilder().put(TYPE_ATTR, 
"running_segments").build());
+                }));
+        minorMergeStats =
+            solrMetricsContext.observableLongGauge(
+                "solr_indexwriter_minor_merge_stats",
+                "Metrics around currently running segment merges below the 
majorMergeDocs threshold",
+                (observableLongMeasurement -> {
+                  observableLongMeasurement.record(
+                      runningMinorMerges.get(),
+                      baseAttributes.toBuilder().put(TYPE_ATTR, 
"running").build());
+                  observableLongMeasurement.record(
+                      runningMinorMergesDocs.get(),
+                      baseAttributes.toBuilder().put(TYPE_ATTR, 
"running_docs").build());
+                  observableLongMeasurement.record(
+                      runningMinorMergesSegments.get(),
+                      baseAttributes.toBuilder().put(TYPE_ATTR, 
"running_segments").build());
+                }));

Review Comment:
   Updated the initial comment of this PR with the new descriptions.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to