package writecache import ( "time" "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/local_object_storage/shard/mode" ) type StorageType string func (t StorageType) String() string { return string(t) } const ( StorageTypeUndefined StorageType = "null" StorageTypeDB StorageType = "db" StorageTypeFSTree StorageType = "fstree" ) type Metrics interface { SetShardID(string) Get(d time.Duration, success bool, st StorageType) Delete(d time.Duration, success bool, st StorageType) Put(d time.Duration, success bool, st StorageType) Flush(success bool, st StorageType) Evict(st StorageType) SetEstimateSize(uint64) SetMode(m mode.ComponentMode) SetActualCounters(uint64) SetPath(path string) Close() } func DefaultMetrics() Metrics { return metricsStub{} } type metricsStub struct{} func (metricsStub) SetShardID(string) {} func (metricsStub) SetPath(string) {} func (metricsStub) Get(time.Duration, bool, StorageType) {} func (metricsStub) Delete(time.Duration, bool, StorageType) {} func (metricsStub) Put(time.Duration, bool, StorageType) {} func (metricsStub) SetEstimateSize(uint64) {} func (metricsStub) SetMode(mode.ComponentMode) {} func (metricsStub) SetActualCounters(uint64) {} func (metricsStub) Flush(bool, StorageType) {} func (metricsStub) Evict(StorageType) {} func (metricsStub) Close() {} func (c *cache) startCacheSizeReporter() { go func() { defer close(c.sizeMetricsReporterStopped) for range c.sizeMetricsReporterQueue { count, size := c.counter.CountSize() c.metrics.SetActualCounters(count) c.metrics.SetEstimateSize(size) } }() } func (c *cache) stopCacheSizeReporter() { if c.sizeMetricsReporterQueue == nil { // Underlying storage was not initialized. return } close(c.sizeMetricsReporterQueue) <-c.sizeMetricsReporterStopped c.sizeMetricsReporterQueue = nil c.sizeMetricsReporterStopped = nil }