Uploaded image for project: 'Solr'
  1. Solr
  2. SOLR-8785

Use Metrics library for core metrics

Attach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 4.1
    • 6.4, 7.0
    • metrics

    Description

      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.

      Attachments

        1. SOLR_8775_rates_per_minute_fix.patch
          3 kB
          Shalin Shekhar Mangar
        2. SOLR-8785.patch
          78 kB
          Shalin Shekhar Mangar
        3. SOLR-8785.patch
          76 kB
          Shalin Shekhar Mangar
        4. SOLR-8785-increment.patch
          9 kB
          Christine Poerschke
        5. SOLR-8785.patch
          77 kB
          Shalin Shekhar Mangar

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            shalin Shalin Shekhar Mangar
            jwartes Jeff Wartes
            Votes:
            0 Vote for this issue
            Watchers:
            12 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Time Tracking

                Estimated:
                Original Estimate - Not Specified
                Not Specified
                Remaining:
                Remaining Estimate - 0h
                0h
                Logged:
                Time Spent - 20m
                20m

                Slack

                  Issue deployment