Class MetricEntityStateOneEnum<E extends Enum<E> & VeniceDimensionInterface>
java.lang.Object
com.linkedin.venice.stats.metrics.MetricEntityState
com.linkedin.venice.stats.metrics.MetricEntityStateOneEnum<E>
public class MetricEntityStateOneEnum<E extends Enum<E> & VeniceDimensionInterface>
extends MetricEntityState
This version of
MetricEntityState
is used when the metric entity has one dynamic dimension
which is an Enum
implementing VeniceDimensionInterface
.
The base dimensions that are common for all invocation of this instance are passed in the constructor
which is used along with all possible values for the dynamic dimensions to create an EnumMap of
Attributes
for each possible value of the dynamic dimension. These attributes are used during
every record() call, the key to the EnumMap being the value of the dynamic dimension.
EnumMap
is used here as it is more efficient than HashMap as it is backed by an array and does
not require hashing of the keys resulting in constant time complexity for get() and put() operations.-
Nested Class Summary
Nested classes/interfaces inherited from class com.linkedin.venice.stats.metrics.MetricEntityState
MetricEntityState.TehutiSensorRegistrationFunction
-
Method Summary
Modifier and TypeMethodDescriptionstatic <E extends Enum<E> & VeniceDimensionInterface>
MetricEntityStateOneEnum<E>create
(MetricEntity metricEntity, VeniceOpenTelemetryMetricsRepository otelRepository, MetricEntityState.TehutiSensorRegistrationFunction registerTehutiSensorFn, TehutiMetricNameEnum tehutiMetricNameEnum, List<io.tehuti.metrics.MeasurableStat> tehutiMetricStats, Map<VeniceMetricsDimensions, String> baseDimensionsMap, Class<E> enumTypeClass) Overloaded Factory method for constructor with Tehuti parametersstatic <E extends Enum<E> & VeniceDimensionInterface>
MetricEntityStateOneEnum<E>create
(MetricEntity metricEntity, VeniceOpenTelemetryMetricsRepository otelRepository, Map<VeniceMetricsDimensions, String> baseDimensionsMap, Class<E> enumTypeClass) Factory method with named parameters to ensure the passed in enumTypeClass are in the same order as Evisible for testingvoid
void
Methods inherited from class com.linkedin.venice.stats.metrics.MetricEntityState
createMetric, recordOtelMetric, setOtelMetric, setTehutiSensor
-
Method Details
-
create
public static <E extends Enum<E> & VeniceDimensionInterface> MetricEntityStateOneEnum<E> create(MetricEntity metricEntity, VeniceOpenTelemetryMetricsRepository otelRepository, Map<VeniceMetricsDimensions, String> baseDimensionsMap, Class<E> enumTypeClass) Factory method with named parameters to ensure the passed in enumTypeClass are in the same order as E -
create
public static <E extends Enum<E> & VeniceDimensionInterface> MetricEntityStateOneEnum<E> create(MetricEntity metricEntity, VeniceOpenTelemetryMetricsRepository otelRepository, MetricEntityState.TehutiSensorRegistrationFunction registerTehutiSensorFn, TehutiMetricNameEnum tehutiMetricNameEnum, List<io.tehuti.metrics.MeasurableStat> tehutiMetricStats, Map<VeniceMetricsDimensions, String> baseDimensionsMap, Class<E> enumTypeClass) Overloaded Factory method for constructor with Tehuti parameters -
record
-
record
-
getAttributesEnumMap
visible for testing
-