Metrics 3.0
This is the release for MP Metrics 3.0, with the following details.
A full list of changes delivered in the 3.0 release can be found at MicroProfile Metrics 3.0 Milestone.
Incompatible Changes
- 
Removed everything related to reusability from the API code. All metrics are now considered reusable. 
- 
CDI producers annotated with @Metric no longer trigger metric registration. If these metrics should be registered, it must be done differently (for example using the MetricRegistry methods) 
- 
MetricRegistry changed from abstract class to interface 
- 
Changed Timer.update(long duration, java.util.concurrent.TimeUnit) to Timer.update(java.time.Duration duration) 
- 
Removed MetadataBuilder.withOptional* methods, the remaining with* methods do accept null value (considered not present) except withName which does not accept null or "" 
- 
Changed Metadata.getDescription() and Metadata.getUnit() to return String instead of Optional<String> and added Metadata.description() and Metadata.unit() that return Optional<String> 
API/SPI Changes
- 
Updated dependencies scopes and versions to align with Jakarta EE 8 
- 
MetricRegistry changed from abstract class to interface 
- 
Added the MetricRegistry.getType() method 
- 
Added the MetricRegistry.counter(MetricID) method 
- 
Added the MetricRegistry.concurrentGauge(MetricID) method 
- 
Added the MetricRegistry.gauge(String, Object, Function, Tag[]) method 
- 
Added the MetricRegistry.gauge(MetricID, Object, Function) method 
- 
Added the MetricRegistry.gauge(Metadata, Object, Function, Tag[]) method 
- 
Added the MetricRegistry.gauge(String, Supplier, Tag[]) method 
- 
Added the MetricRegistry.gauge(MetricID, Supplier) method 
- 
Added the MetricRegistry.gauge(Metadata), Supplier, Tag[]) method 
- 
Added the MetricRegistry.histogram(MetricID) method 
- 
Added the MetricRegistry.meter(MetricID) method 
- 
Added the MetricRegistry.timer(MetricID) method 
- 
Added the MetricRegistry.simpleTimer(MetricID) method 
- 
Added the MetricRegistry.getMetric(MetricID) method 
- 
Added the MetricRegistry.getMetric(MetricID metricID, Class) method 
- 
Added the MetricRegistry.getCounter(MetricID) method 
- 
Added the MetricRegistry.getConcurrentGauge(MetricID) method 
- 
Added the MetricRegistry.getGauge(MetricID) method 
- 
Added the MetricRegistry.getHistogram(MetricID) method 
- 
Added the MetricRegistry.getMeter(MetricID) method 
- 
Added the MetricRegistry.getTimer(MetricID) method 
- 
Added the MetricRegistry.getSimpleTimer(MetricID) method 
- 
Added the MetricRegistry.getMetadata(String) method 
- 
Added the MetricRegistry.getMetrics(MetricFilter) method 
- 
Added the MetricRegistry.getMetrics(Class, MetricFilter) method 
- 
Added SimpleTimer.getMinTimeDuration() and SimpleTimer.getMaxTimeDuration() methods which return a java.time.Duration object (#523) 
- 
Timer class updated (#524) - 
Changed Timer.update(long duration, java.util.concurrent.TimeUnit) to Timer.update(java.time.Duration duration) 
- 
Added Timer.getElapsedTime() which returns java.time.Duration 
 
- 
- 
Removed MetadataBuilder.withOptional* methods 
- 
Global tags and _app tag are no longer handled automatically by the MetricID class, the implementation is expected to add them by itself, for example during metric export 
- 
Added the Histogram.getSum() which returns long (#597) 
Functional Changes
- 
Simple Timer metrics now track the highest and lowest recorded timing duration of the previous completed minute (#523) 
- 
Timer now exposes total elapsed time duration as a metric value. (#524) 
- 
Clarified that the existing REST metric REST.request will not monitor and track a REST request to a REST endpoint if an unmapped exception occurs. 
- 
Introduced a new base REST metric REST.request.unmappedException.total that counts the occurrences of unmapped exceptions for each REST endpoint (#533) 
- 
Histogram now exposes the total sum of recorded values as a sum value (#597) - 
In JSON format it is exposed as a sum value 
- 
In OpenMetrics format it is exposed as a sum value under the summary type 
 
- 
- 
Timer now exposes the elapsedTime metric value as sum under the summary type in OpenMetrics format (#597)