Class AsyncMetricEntityStateOneEnum<E extends Enum<E> & VeniceDimensionInterface>

java.lang.Object
com.linkedin.venice.stats.metrics.AsyncMetricEntityStateOneEnum<E>

public class AsyncMetricEntityStateOneEnum<E extends Enum<E> & VeniceDimensionInterface> extends Object
This class is used when the async metric (ASYNC_GAUGE) has one dynamic dimension which is an Enum implementing VeniceDimensionInterface. For each enum value, a separate AsyncMetricEntityStateBase is created with its own callback. This allows polling different values based on the dimension (e.g., different VersionRole values). 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.
  • Method Details

    • create

      public static <E extends Enum<E> & VeniceDimensionInterface> AsyncMetricEntityStateOneEnum<E> create(MetricEntity metricEntity, VeniceOpenTelemetryMetricsRepository otelRepository, Map<VeniceMetricsDimensions,String> baseDimensionsMap, Class<E> enumTypeClass, Function<E,LongSupplier> callbackProvider)
      Factory method to create an AsyncMetricEntityStateOneEnum.
      Parameters:
      metricEntity - The metric entity definition
      otelRepository - The OTel repository for metric registration
      baseDimensionsMap - Base dimensions common to all enum values
      enumTypeClass - The enum class for the dynamic dimension
      callbackProvider - Function that provides a LongSupplier callback for each enum value
      Returns:
      A new AsyncMetricEntityStateOneEnum instance
    • emitOpenTelemetryMetrics

      public boolean emitOpenTelemetryMetrics()
      Returns whether OTel metrics are being emitted.
    • getMetricState

      public AsyncMetricEntityStateBase getMetricState(E enumValue)
      Gets the underlying AsyncMetricEntityStateBase for a specific enum value. Useful for testing or advanced use cases.
    • getMetricStatesByEnum

      public EnumMap<E,AsyncMetricEntityStateBase> getMetricStatesByEnum()
      Visible for testing