docs/source/about/release-notes.rst
.. _release-notes:
############# Release Notes #############
Please refer to the GitHub releases <https://github.com/dropwizard/metrics/releases>_ for the latest releases of Dropwizard Metrics.
.. _rel-4.0.0:
#1236 <https://github.com/dropwizard/metrics/pull/1236>_metrics-jmx module#1239 <https://github.com/dropwizard/metrics/pull/1239>_HealthCheckRegistryLongAdderThreadLocalRandomTimer.Context now implements AutoCloseable#1118 <https://github.com/dropwizard/metrics/pull/1239>_ResponseMetered annotation for Jersey resources #1186 <https://github.com/dropwizard/metrics/pull/1186>_#1224 <https://github.com/dropwizard/metrics/pull/1224>_#1211 <https://github.com/dropwizard/metrics/pull/1211>_#1210 <https://github.com/dropwizard/metrics/pull/1210>_#1226 <https://github.com/dropwizard/metrics/pull/1226>_.. _rel-3.2.6:
#1232 <https://github.com/dropwizard/metrics/pull/1232>_#1230 <https://github.com/dropwizard/metrics/pull/1230>_#1233 <https://github.com/dropwizard/metrics/pull/1233>_.. _rel-3.2.5:
#1192 <https://github.com/dropwizard/metrics/pull/1192>_.. _rel-3.2.4:
#1167 <https://github.com/dropwizard/metrics/pull/1167>_#1163 <https://github.com/dropwizard/metrics/pull/1163>_#1170 <https://github.com/dropwizard/metrics/pull/1170>_.. _rel-3.2.3:
ScheduledReporter convertDurations precision #1115 <https://github.com/dropwizard/metrics/pull/1115>_report() #1128 <https://github.com/dropwizard/metrics/pull/1128>_ExponentiallyDecayingReservoir was giving incorrect values in the snapshot if the inactive period was too long #1135 <https://github.com/dropwizard/metrics/pull/1135>_#1140 <https://github.com/dropwizard/metrics/pull/1140>_#1152 <https://github.com/dropwizard/metrics/pull/1152>_SlidingTimeWindowArrayReservoir as a fast alternative of SlidingTimeWindowReservoir #1139 <https://github.com/dropwizard/metrics/pull/1139>_HealthCheck.Result #1141 <https://github.com/dropwizard/metrics/pull/1141>_.. _rel-3.1.5:
ThreadLocal and LongAdder on JDK6 (e.g. WebLogic) #1136 <https://github.com/dropwizard/metrics/pull/1136>_.. _rel-3.2.2:
#1111 <https://github.com/dropwizard/metrics/pull/1111>_#1105 <https://github.com/dropwizard/metrics/pull/1105>_.. _rel-3.2.1:
#1084 <https://github.com/dropwizard/metrics/pull/1084>_#1095 <https://github.com/dropwizard/metrics/pull/1095>_#1094 <https://github.com/dropwizard/metrics/pull/1095>_#1102 <https://github.com/dropwizard/metrics/pull/1102>_#1090 <https://github.com/dropwizard/metrics/pull/1090>_#1092 <https://github.com/dropwizard/metrics/pull/1092>_#1099 <https://github.com/dropwizard/metrics/pull/1099>_.. _rel-3.1.4:
#1100 <https://github.com/dropwizard/metrics/pull/1100>_.. _rel-3.2.0:
GraphiteReporter opens a new TCP connection when sending metrics instead of maintaining a persisted connection. #1047 <https://github.com/dropwizard/metrics/pull/1047>_GraphiteReporter retries DNS lookups in case of a lookup failure. #1064 <https://github.com/dropwizard/metrics/pull/1064>_ScheduledReporter suppresses all kind of exceptions raised by the report method. #1049 <https://github.com/dropwizard/metrics/pull/1049>_ThreadLocalRandom is now used by default. #1052 <https://github.com/dropwizard/metrics/pull/1052>_LongAdder is now used by default. #1055 <https://github.com/dropwizard/metrics/pull/1055>_ExponentiallyDecayingReservoir. #1033 <https://github.com/dropwizard/metrics/pull/1033>_SlidingTimeWindowReservoir. #1063 <https://github.com/dropwizard/metrics/pull/1063>_AdminServlet supports CPU profiling. #927 <https://github.com/dropwizard/metrics/pull/927>_GraphiteReporter sanitizes metrics. #938 <https://github.com/dropwizard/metrics/pull/938>_BigInteger and BigDecimal metrics in GraphiteReporter. #933 <https://github.com/dropwizard/metrics/pull/933>_GraphiteReporter. #905 <https://github.com/dropwizard/metrics/pull/905>_GraphiteReporter. #1073 <https://github.com/dropwizard/metrics/pull/1073>_#1048 <https://github.com/dropwizard/metrics/pull/1048>_#1018 <https://github.com/dropwizard/metrics/pull/1018>_#999 <https://github.com/dropwizard/metrics/pull/999>_#663 <https://github.com/dropwizard/metrics/pull/663>_#1068 <https://github.com/dropwizard/metrics/pull/1068>_#1077 <https://github.com/dropwizard/metrics/pull/1077>_#783 <https://github.com/dropwizard/metrics/pull/783>_InstrumentedQueuedThreadPool. #947 <https://github.com/dropwizard/metrics/pull/947>_QueuedThreadPool. #908 <https://github.com/dropwizard/metrics/pull/908>_#1038 <https://github.com/dropwizard/metrics/pull/1038>_#1074 <https://github.com/dropwizard/metrics/pull/1074>_#1010 <https://github.com/dropwizard/metrics/pull/1010>_#1023 <https://github.com/dropwizard/metrics/pull/1023>_Timer#time that takes a Runnable. #989 <https://github.com/dropwizard/metrics/pull/989>_HttpClientMetricNameStrategies. #947 <https://github.com/dropwizard/metrics/pull/947>_#900 <https://github.com/dropwizard/metrics/pull/900>_Striped64 doesn't depend on sun.misc.Unsafe anymore. #966 <https://github.com/dropwizard/metrics/pull/966>_UniformSnapshot. #970 <https://github.com/dropwizard/metrics/pull/970>_#786 <https://github.com/dropwizard/metrics/pull/786>_metric-servlet. #796 <https://github.com/dropwizard/metrics/pull/796>_#801 <https://github.com/dropwizard/metrics/pull/801>_#809 <https://github.com/dropwizard/metrics/pull/809>_CsvReporter. #882 <https://github.com/dropwizard/metrics/pull/882>_.. _rel-3.1.3:
GraphiteReporter opens a new TCP connection when sending metrics instead of maintaining a persisted connection. #1036 <https://github.com/dropwizard/metrics/pull/1036>_GraphiteReporter retries DNS lookups in case of a lookup failure. #1064 <https://github.com/dropwizard/metrics/pull/1064>_ScheduledReporter suppresses all kind of exceptions raised by the report method. #1040 <https://github.com/dropwizard/metrics/pull/1040>_ThreadLocalRandom is now used by default. #1052 <https://github.com/dropwizard/metrics/pull/1052>_LongAdder is now used by default. #1055 <https://github.com/dropwizard/metrics/pull/1055>_ExponentiallyDecayingReservoir. #1046 <https://github.com/dropwizard/metrics/pull/1046>_SlidingTimeWindowReservoir. #1072 <https://github.com/dropwizard/metrics/pull/1072>_.. _rel-3.1.0:
https://groups.google.com/forum/#!topic/metrics-user/zwzHnMBcAX4
.. _rel-3.0.1:
MetricRegistry#name.ScheduledReporter and JmxReporter now implement Closeable.metrics-jetty9.Access-Control-Allow-Origin to MetricsServlet.Meter EWMA rates.AdminServletContextListener in favor of MetricsServlet.ContextListener and
HealthCheckServlet.ContextListener.HealthCheckServlet and MetricsServlet... _rel-3.0.0:
DefaultWebappMetricsFilter to InstrumentedFilter.MetricsContextListener to InstrumentedFilterContextListener and made it fully
abstract to avoid confusion.MetricsServletContextListener to AdminServletContextListener and made it fully
abstract to avoid confusion... _rel-3.0.0-RC1:
SharedMetricRegistries, a singleton for sharing named metric registries.metrics-ehcache.metrics-jersey.metrics-log4j.metrics-logback.metrics-jetty9's InstrumentedHandler.MetricsContextListener to metrics-servlet.MetricsServletContextListener to metrics-servlets.Counting interface.SlidingWindowReservoir to a synchronized implementation.Slf4jReporter's logging of 99th percentiles.GraphiteReporter.JmxReporter... _rel-3.0.0-BETA3:
ScheduledReporter#report() for manual reporting.HealthCheck and
InstrumentedResourceMethodDispatchProvider.SlidingWindowReservoir.metrics-jetty9, removing InstrumentedConnector and improving
the API.sun.misc.HttpClient metrics... _rel-3.0.0-BETA2:
com.codahale.metrics package, with the corresponding changes in Maven
artifact groups. This should allow for an easier upgrade path without classpath conflicts.MetricRegistry no longer has a name.metrics-jetty9 for Jetty 9.JmxReporter takes an optional domain property to disambiguate multiple reporters.MetricRegistryListener.Base.Counter, Meter, and EWMA to use JSR133's LongAdder instead of
AtomicLong, improving contended concurrency.MetricRegistry#buildMap(), allowing for custom map implementations in
MetricRegistry.MetricRegistry#removeMatching(MetricFilter).metrics-json to optionally depend on metrics-healthcheck.metrics-jetty8... _rel-3.0.0-BETA1:
Total overhaul of most of the core Metrics classes:
com.example.Thing, allowing for very flexible
scopes, etc.MetricSet for sets of metrics.Changed package names to be OSGi-compatible and added OSGi bundling.
Extracted JVM instrumentation to metrics-jvm.
Extracted Jackson integration to metrics-json.
Removed metrics-guice, metrics-scala, and metrics-spring.
Renamed metrics-servlet to metrics-servlets.
Renamed metrics-web to metrics-servlet.
Renamed metrics-jetty to metrics-jetty8.
Many more small changes!
.. _rel-2.2.0:
InstrumentedSslSelectChannelConnector and InstrumentedSslSocketConnector.Unsafe in InstrumentedResourceMethodDispatchProvider with type erasure
trickery... _rel-2.1.5:
.. _rel-2.1.4:
.. _rel-2.1.3:
InstrumentedClientConnManager to extend PoolingClientConnectionManager instead of
the deprecated ThreadSafeClientConnManager.ExponentiallyDecayingSample with long periods of inactivity.DnsResolver instances to InstrumentedClientConnManager... _rel-2.1.2:
metrics-guice... _rel-2.1.1:
InstrumentedHttpClient... _rel-2.1.0:
VirtualMachineMetrics and
metrics-servlet.metrics-ehcache.metrics-spring now support @Gauge-annotated fields.GraphiteReporter up for extension.group and type to metrics-annotations, metrics-guice, metrics-jersey,
and metrics-spring.GangliaReporter.NullPointerException errors in metrics-spring.metrics-spring, including allowing custom Clock instances... _rel-2.0.3:
InstanceNotFoundException exceptions thrown while unregistering a metric
in JmxReporter to TRACE. It being WARN resulted in huge log dumps preventing process
shutdowns when applications had ~1K+ metrics.metrics-spring.GangliaReporter... _rel-2.0.2:
InstrumentationModule in metrics-guice now uses the default MetricsRegistry and
HealthCheckRegistry... _rel-2.0.1:
JmxReporter... _rel-2.0.0:
GraphiteReporter.ThreadLocalRandom for UniformSample and
ExponentiallyDecayingSample to reduce lock contention on random number generation.Ordered from TimedAnnotationBeanPostProcessor in metrics-spring.#timerContext() to Scala Timer... _rel-2.0.0-RC0:
Error instances thrown during health checks.enable static methods to CsvReporter and changed
CsvReporter(File, MetricsRegistry) to CsvReporter(MetricsRegistry, File).InstrumentedEhcache.GangliaReporter.metrics-guice.metrics-httpclient to consistently associate metrics with the org.apache class
being extended.metrics-httpclient.InstrumentedAppender in metrics-log4j. It no longer forwards events to an
appender. Instead, you can just attach it to your root logger to instrument logging.InstrumentedAppender in metrics-logback. No major API changes.@ExceptionMetered-annotated resource methods in metrics-jersey.Snapshot instances from concurrently modified collections.MetricsServlet's thread dumps where one thread could be missed.RatioGauge and PercentGauge.InstrumentedQueuedThreadPool's percent-idle gauge to be a ratio.MetricsServlet into a set of focused servlets: HealthCheckServlet,
MetricsServlet, PingServlet, and ThreadDumpServlet. The top-level servlet which
provides the HTML menu page is now AdminServlet.metrics-spring... _rel-2.0.0-BETA19:
MetricsServlet.@Timed etc. to metrics-annotations.metrics-jersey, which provides a class allowing you to automatically instrument all
@Timed, @Metered, and @ExceptionMetered-annotated resource methods.metrics-scala from com.yammer.metrics to
com.yammer.metrics.scala.CounterMetric to Counter.GaugeMetric to Gauge.HistogramMetric to Histogram.MeterMetric to Meter.TimerMetric to Timer.ToggleGauge, which returns 1 the first time it's called and 0 every time after
that.VirtualMachineMetrics to a non-singleton class.Utils.Meter and Timer.LoggerMemoryLeakFix.DeathRattleExceptionHandler now logs to SLF4J, not syserr.MetricsRegistry#groupedMetrics().Metrics#allMetrics().Metrics#remove(MetricName).MetricsRegistry#threadPools() and #newMeterTickThreadPool() and added
#newScheduledThreadPool.MetricsRegistry#shutdown().ThreadPools#shutdownThreadPools() to #shutdown().HealthCheck's abstract name method with a required constructor parameter.HealthCheck#check() is now protected.DeadlockHealthCheck from com.yammer.metrics.core to com.yammer.metrics.utils.HealthCheckRegistry#unregister(HealthCheck).VirtualMachineMetrics and MetricsServlet: commited to committed.MetricsRegistry#createName to protected.MetricsRegistry now.Metrics.newJmxGauge and MetricsRegistry.newJmxGauge are deprecated.VirtualMachineMetrics.Snapshot, which calculates quantiles.Percentiled to Sampling and dropped percentile and percentiles in favor of
producing Snapshot instances. This affects both Histogram and Timer.Summarized to Summarizable.CsvReporter's construction parameters.VirtualMachineMetrics.GarbageCollector to
VirtualMachineMetrics.GarbageCollectorStats.metrics-servlet to metrics-guice.metrics-aop.newJmxGauge from both Metrics and MetricsRegistry. Just use JmxGauge.JmxGauge to com.yammer.metrics.util.MetricPredicate to com.yammer.metrics.core.NameThreadFactory into ThreadPools and made ThreadPools package-visible.Timer#values(), Histogram#values(), and Sample#values(). Use getSnapshot()
instead.Timer#dump(File) and Histogram#dump(File), and Sample#dump(File). Use
Snapshot#dump(File) instead... _rel-2.0.0-BETA18:
DeathRattleExceptionHandler.VirtualMachineMetrics.metrics-jetty.TimerMetric#time() and TimerContext.GangliaReporter.UniformSample.metrics-httpclient for instrumenting Apache HttpClient 4.1.public methods in metrics-guice.@ExceptionMetered to metrics-guice.GangliaReporter.CvsReporter, which outputs metric values to .csv files.GangliaReporter.Metrics.shutdown() and improved metrics lifecycle behavior.metrics-web.metrics-servlet now responds with 501 Not Implememented when no health checks have been
registered.metrics-servlet.ExponentiallyDecayingSample.ConsoleReporter.metrics-aop for Guiceless support of method annotations.metrics-jdbi which adds instrumentation to JDBI_... _JDBI: http://www.jdbi.org
.. _rel-2.0.0-BETA17:
GraphiteReporter.GangliaReporter.InstrumentedHandler in metrics-jetty.#dump(File) to HistogramMetric and TimerMetric.Metrics.removeMetric()... _rel-2.0.0-BETA16:
.. _rel-2.0.0-BETA15:
metrics-jetty.vm output of MetricsServlet.com.sun.mangement-based GC instrumentation in favor of a
java.lang.management-based one. getLastGcInfo has a nasty native memory leak in it, plus
it often returned incorrect data.GraphiteReporter.Clock interface for timers for non-wall-clock timing.MetricsRegistry and HealthCheckRegistry.MetricsServlet for disabling the jvm section.MetricsServlet... _rel-2.0.0-BETA14:
metrics-scala module
which is now the only cross-built module. All other modules dropped the Scala version suffix in
their artifactId.GraphiteReporter.GraphiteReporter when dealing with unavailable servers.MetricsServlet when a gauge throws an exception.MetricsServlet menu page... _rel-2.0.0-BETA13:
JmxReporter.metrics-ehcache, for the instrumentation of Ehcache instances.metrics-jetty's InstrumentedHandler.GraphiteReporter.GraphiteReporter.MetricsServlet's links when the servlet has a non-root context path.pretty query parameter for MetricsServlet to format the JSON object for human
consumption.no-cache headers to the MetricsServlet responses... _rel-2.0.0-BETA12:
Upgraded to Jackson 1.7.6.
Added a new instrumented Log4J appender.
Added a new instrumented Logback appender. Thanks to Bruce Mitchener (@waywardmonkeys) for the patch.
Added a new reporter for the Graphite_ aggregation system. Thanks to Mahesh Tiyyagura (@tmahesh) for the patch.
Added scoped metric names.
Added Scala 2.9.0.RC{2,3,4} as build targets.
Added meters to Jetty handler for the percent of responses which have 4xx or 5xx status
codes.
Changed the Servlet API to be a provided dependency. Thanks to Mårten Gustafson (@chids) for
the patch.
Separated project into modules:
metrics-core: A dependency-less project with all the core metrics.metrics-graphite: A reporter for the Graphite
aggregation system.metrics-guice: Guice AOP support.metrics-jetty: An instrumented Jetty handler.metrics-log4j: An instrumented Log4J appender.metrics-logback: An instrumented Logback appender.metrics-servlet: The Metrics servlet with context listener... _Graphite: http://graphite.wikidot.com
.. _rel-2.0.0-BETA11:
VirtualMachineMetrics' initialization.@Gauge annotation.ExponentiallyDecayingSample. Thanks to Martin Traverso (@martint) for
the patch.java.util.logging... _rel-2.0.0-BETA10:
@Timed and @Metered.HealthCheck#name().Metrics.newJmxGauge().HealthChecks... _rel-2.0.0-BETA9:
JmxReporter lag.ExponentiallyDecayingSample.UniformSample.ExponentiallyDecayingSample... _rel-2.0.0-BETA8:
jackon-mapper... _rel-2.0.0-BETA7:
JettyHandler.Servlet dependency optional... _rel-2.0.0-BETA6:
JmxReporter initialization... _rel-2.0.0-BETA5:
Counter#++ and Counter#--.Timer#update... _rel-2.0.0-BETA3:
.. _rel-2.0.0-BETA2:
MeterMetric... _rel-2.0.0-BETA1:
.. _rel-1.0.7:
median to Timer.p95 to Timer (95th percentile).p98 to Timer (98th percentile).p99 to Timer (99th percentile)... _rel-1.0.6:
.. _rel-1.0.5:
TimedToggle, which may or may not be useful at all... _rel-1.0.4:
Timer instances (i.e., those which have recorded no timings yet) no longer explode when
asked for metrics for that which does not yet exist.$ characters messing up
JMX's good looks... _rel-1.0.3:
implicit.ly__ plumbing.Timer, giving it 99.9% confidence level with a %5 margin of error
(for a normally distributed variable, which it almost certainly isn't.)Sample#iterator returns only the recorded data, not a bunch of zeros.Timer, Meter, and LoadMeter to their own attributes, which allows for
easy export of Metrics data via JMX to things like Ganglia__ or whatever... __: http://implicit.ly .. __: http://ganglia.sourceforge.net/
.. _rel-1.0.2:
Timer now uses Welford's algorithm for calculating running variance, which means no more
hilariously wrong standard deviations (e.g., NaN).Timer now supports +=(Long) for pre-recorded, nanosecond-precision timings... _rel-1.0.1:
Sample to use an AtomicReferenceArray.. _rel-1.0.0: