[ 
https://issues.apache.org/jira/browse/SOLR-8785?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15684165#comment-15684165
 ] 

Jeff Wartes commented on SOLR-8785:
-----------------------------------

I'm trying to remember now, but I think the other stuff in that Metrics was 
largely scaffolding for what I thought would be another jira for exposing a way 
to register one or more Reporters. I was trying to focus on deleting the copied 
code here, but the ability to use Reporters was what really drove all this for 
me.

As I recall it, my thought was that each logical section of code that tracked 
metrics would use the namedTimer(String name, String registry) api, (using the 
section name for the second parameter) and the user could then use properties 
that manipulate the registry names to choose which sections shared which 
registries.
Then, the (say) Overseer could use one registry, and the 
AnalyticsStatisticsCollector could use another, and you could attach different 
Reporters to each. Or, you could have both of those places use the same 
registry, and therefore the same Reporter. 

This is all contingent, naturally, on the registry name being the thing you use 
to find the registry you want to attach a Reporter to, which could be debated 
as a best practice.

> Use Metrics library for core metrics
> ------------------------------------
>
>                 Key: SOLR-8785
>                 URL: https://issues.apache.org/jira/browse/SOLR-8785
>             Project: Solr
>          Issue Type: Improvement
>    Affects Versions: 4.1
>            Reporter: Jeff Wartes
>              Labels: patch, patch-available
>         Attachments: SOLR-8785.patch
>
>
> The Metrics library (https://dropwizard.github.io/metrics/3.1.0/) is a 
> well-known way to track metrics about applications. 
> In SOLR-1972, latency percentile tracking was added. The comment list is 
> long, so here’s my synopsis:
> 1. An attempt was made to use the Metrics library
> 2. That attempt failed due to a memory leak in Metrics v2.1.1
> 3. Large parts of Metrics were then copied wholesale into the 
> org.apache.solr.util.stats package space and that was used instead.
> Copy/pasting Metrics code into Solr may have been the correct solution at the 
> time, but I submit that it isn’t correct any more. 
> The leak in Metrics was fixed even before SOLR-1972 was released, and by 
> copy/pasting a subset of the functionality, we miss access to other important 
> things that the Metrics library provides, particularly the concept of a 
> Reporter. (https://dropwizard.github.io/metrics/3.1.0/manual/core/#reporters)
> Further, Metrics v3.0.2 is already packaged with Solr anyway, because it’s 
> used in two contrib modules. (map-reduce and morphines-core)
> I’m proposing that:
> 1. Metrics as bundled with Solr be upgraded to the current v3.1.2
> 2. Most of the org.apache.solr.util.stats package space be deleted outright, 
> or gutted and replaced with simple calls to Metrics. Due to the copy/paste 
> origin, the concepts should mostly map 1:1.
> I’d further recommend a usage pattern like:
> SharedMetricRegistries.getOrCreate(System.getProperty(“solr.metrics.registry”,
>  “solr-registry”))
> There are all kinds of areas in Solr that could benefit from metrics tracking 
> and reporting. This pattern allows diverse areas of code to track metrics 
> within a single, named registry. This well-known-name then becomes a handle 
> you can use to easily attach a Reporter and ship all of those metrics off-box.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to