mirror of
https://github.com/google/nomulus.git
synced 2025-05-13 07:57:13 +02:00
Enforce monotonicity for IncrementableMetrics
This change enforces that IncrementableMetrics should only monotonically increase in value, and adds a new increment() method to increment by one, which is slightly faster than incrementBy (due to a lack of non-negative checking) in the common case that the counter should only be incremented by one. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=130578421
This commit is contained in:
parent
01e38790fd
commit
f10a7d8fb0
4 changed files with 33 additions and 9 deletions
|
@ -17,19 +17,35 @@ package google.registry.monitoring.metrics;
|
|||
/**
|
||||
* A {@link Metric} which can be incremented.
|
||||
*
|
||||
* <p>This is a view into a {@link Counter} to provide compile-time checking to disallow re-setting
|
||||
* the metric, which is useful for metrics which should be monotonic.
|
||||
* <p>This is a view into a {@link Counter} to provide compile-time checking to disallow arbitrarily
|
||||
* setting the metric, which is useful for metrics which should be monotonically increasing.
|
||||
*/
|
||||
public interface IncrementableMetric extends Metric<Long> {
|
||||
|
||||
/**
|
||||
* Increments a metric for a given set of label values.
|
||||
* Increments a metric by 1 for the given set of label values.
|
||||
*
|
||||
* <p>If the metric is undefined for given label values, it will first be set to zero.
|
||||
* Use this method rather than {@link IncrementableMetric#incrementBy(long, String...)} if the
|
||||
* increment value is zero, as it will be slightly more performant.
|
||||
*
|
||||
* <p>If the metric is undefined for given label values, it will be incremented from zero.
|
||||
*
|
||||
* <p>The metric's timestamp will be updated to the current time for the given label values.
|
||||
*
|
||||
* <p>The count of {@code labelValues} must be equal to the underlying metric's count of labels.
|
||||
*/
|
||||
void increment(String... labelValues);
|
||||
|
||||
/**
|
||||
* Increments a metric by the given non-negative offset for the given set of label values.
|
||||
*
|
||||
* <p>If the metric is undefined for given label values, it will be incremented from zero.
|
||||
*
|
||||
* <p>The metric's timestamp will be updated to the current time for the given label values.
|
||||
*
|
||||
* <p>The count of {@code labelValues} must be equal to the underlying metric's count of labels.
|
||||
*
|
||||
* @throws IllegalArgumentException if the offset is negative.
|
||||
*/
|
||||
void incrementBy(long offset, String... labelValues);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue