Package com.linkedin.davinci.stats
Class AggVersionedStorageEngineStats
java.lang.Object
com.linkedin.davinci.stats.AbstractVeniceAggVersionedStats<com.linkedin.davinci.stats.AggVersionedStorageEngineStats.StorageEngineStatsWrapper,com.linkedin.davinci.stats.AggVersionedStorageEngineStats.StorageEngineStatsReporter>
com.linkedin.davinci.stats.AggVersionedStorageEngineStats
- All Implemented Interfaces:
StoreDataChangedListener
public class AggVersionedStorageEngineStats
extends AbstractVeniceAggVersionedStats<com.linkedin.davinci.stats.AggVersionedStorageEngineStats.StorageEngineStatsWrapper,com.linkedin.davinci.stats.AggVersionedStorageEngineStats.StorageEngineStatsReporter>
Aggregated versioned storage engine stats with per-store Tehuti reporters and OTel metrics.
OTel stats lifecycle: OTel stats are created lazily by getOrCreateOtelStats(java.lang.String)
and updated by onVersionInfoUpdated(java.lang.String, int, int) via computeIfPresent. This class does NOT
override loadAllStats(), and AbstractVeniceAggVersionedStats always calls it
from its own constructor. As a result, onVersionInfoUpdated and cleanupVersionResources
are called from within super(), before the subclass constructor has run at all —
meaning otelStatsMap is still null at that point. This makes the null guards
in those overrides mandatory.
-
Field Summary
Fields inherited from class com.linkedin.davinci.stats.AbstractVeniceAggVersionedStats
metadataRepository -
Constructor Summary
ConstructorsConstructorDescriptionAggVersionedStorageEngineStats(io.tehuti.metrics.MetricsRepository metricsRepository, ReadOnlyStoreRepository metadataRepository, boolean unregisterMetricForDeletedStoreEnabled, double diskSizeDropAlertThreshold, String clusterName) AggVersionedStorageEngineStats(io.tehuti.metrics.MetricsRepository metricsRepository, ReadOnlyStoreRepository metadataRepository, boolean unregisterMetricForDeletedStoreEnabled, String clusterName) -
Method Summary
Modifier and TypeMethodDescriptionprotected voidcleanupVersionResources(String storeName, int version) Hook method for subclasses to clean up version-specific resources (e.g., OTel stats) when a version is removed.voidhandleStoreChanged(Store store) Called when a store's version info changes.voidhandleStoreDeleted(String storeName) protected voidonVersionInfoUpdated(String storeName, int currentVersion, int futureVersion) Updates version info for existing OTel stats only.voidrecordRocksDBOpenFailure(String topicName) voidsetStorageEngine(String topicName, StorageEngine storageEngine) Methods inherited from class com.linkedin.davinci.stats.AbstractVeniceAggVersionedStats
addStore, getCurrentVersion, getFutureVersion, getMetricsRepository, getStats, getTotalStats, handleStoreCreated, loadAllStats, recordVersionedAndTotalStat, registerConditionalStats, updateStatsVersionInfo, updateTotalStatsMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface com.linkedin.venice.meta.StoreDataChangedListener
handleStoreDeleted
-
Constructor Details
-
AggVersionedStorageEngineStats
public AggVersionedStorageEngineStats(io.tehuti.metrics.MetricsRepository metricsRepository, ReadOnlyStoreRepository metadataRepository, boolean unregisterMetricForDeletedStoreEnabled, String clusterName) -
AggVersionedStorageEngineStats
public AggVersionedStorageEngineStats(io.tehuti.metrics.MetricsRepository metricsRepository, ReadOnlyStoreRepository metadataRepository, boolean unregisterMetricForDeletedStoreEnabled, double diskSizeDropAlertThreshold, String clusterName)
-
-
Method Details
-
setStorageEngine
-
recordRocksDBOpenFailure
-
handleStoreChanged
Called when a store's version info changes. After the parent updates version info, compares the current version's disk size with the future version's disk size when the future version has completed ingestion (PUSHED status). Records 1 in the alert metric if the future version is significantly smaller, or 0 otherwise.- Specified by:
handleStoreChangedin interfaceStoreDataChangedListener- Overrides:
handleStoreChangedin classAbstractVeniceAggVersionedStats<com.linkedin.davinci.stats.AggVersionedStorageEngineStats.StorageEngineStatsWrapper,com.linkedin.davinci.stats.AggVersionedStorageEngineStats.StorageEngineStatsReporter>
-
onVersionInfoUpdated
Updates version info for existing OTel stats only. UsescomputeIfPresentintentionally: OTel stats are created lazily on first access viasetStorageEngine(java.lang.String, com.linkedin.davinci.store.StorageEngine)/recordRocksDBOpenFailure(java.lang.String), not eagerly here — this avoids the constructor-time re-entrance hazard described ingetOrCreateOtelStats(java.lang.String). Null guard: called fromsuper()constructor beforeotelStatsMapis initialized.- Overrides:
onVersionInfoUpdatedin classAbstractVeniceAggVersionedStats<com.linkedin.davinci.stats.AggVersionedStorageEngineStats.StorageEngineStatsWrapper,com.linkedin.davinci.stats.AggVersionedStorageEngineStats.StorageEngineStatsReporter>
-
cleanupVersionResources
Description copied from class:AbstractVeniceAggVersionedStatsHook method for subclasses to clean up version-specific resources (e.g., OTel stats) when a version is removed. Same re-entrance warning asAbstractVeniceAggVersionedStats.onVersionInfoUpdated(java.lang.String, int, int).- Overrides:
cleanupVersionResourcesin classAbstractVeniceAggVersionedStats<com.linkedin.davinci.stats.AggVersionedStorageEngineStats.StorageEngineStatsWrapper,com.linkedin.davinci.stats.AggVersionedStorageEngineStats.StorageEngineStatsReporter>
-
handleStoreDeleted
- Specified by:
handleStoreDeletedin interfaceStoreDataChangedListener- Overrides:
handleStoreDeletedin classAbstractVeniceAggVersionedStats<com.linkedin.davinci.stats.AggVersionedStorageEngineStats.StorageEngineStatsWrapper,com.linkedin.davinci.stats.AggVersionedStorageEngineStats.StorageEngineStatsReporter>
-