From b225714e02b9f1f56738cdbce0442b44d802036d Mon Sep 17 00:00:00 2001 From: Evgenii Guguchkin Date: Fri, 23 Jan 2026 12:38:26 +0300 Subject: [PATCH 1/2] feat: add stats for active fraction --- fracmanager/fracs_stats.go | 12 ++++++++++++ fracmanager/fraction_registry.go | 2 ++ fracmanager/lifecycle_manager.go | 2 +- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/fracmanager/fracs_stats.go b/fracmanager/fracs_stats.go index 1d9758bc..4ddbfb11 100644 --- a/fracmanager/fracs_stats.go +++ b/fracmanager/fracs_stats.go @@ -20,6 +20,15 @@ type fracsStats struct { totalSizeOnDisk uint64 // Total storage size, including documents, index and metadata } +func (s *fracsStats) Set(info *common.Info) { + s.count = 1 + s.docsCount = uint64(info.DocsTotal) + s.docsSizeRaw = info.DocsRaw + s.docsSizeOnDisk = info.DocsOnDisk + s.indexSizeOnDisk = info.IndexOnDisk + info.MetaOnDisk + s.totalSizeOnDisk = info.FullSize() +} + // Add incorporates fraction information into the statistics // Updates all aggregate metrics with the values from the provided fraction info func (s *fracsStats) Add(info *common.Info) { @@ -64,6 +73,7 @@ func (s *fracsStats) SetMetrics(metric *prometheus.GaugeVec, stage string) { // registryStats contains statistical data for all fraction queues // Used for monitoring and memory management decisions type registryStats struct { + active fracsStats // Statistics for active fraction sealing fracsStats // Statistics for fractions in the sealing process sealed fracsStats // Statistics for fractions on sealed disk offloading fracsStats // Statistics for fractions in the offloading process @@ -71,6 +81,7 @@ type registryStats struct { } func (s *registryStats) Log() { + s.sealing.Log("active") s.sealing.Log("sealing") s.sealed.Log("sealed") s.offloading.Log("offloading") @@ -78,6 +89,7 @@ func (s *registryStats) Log() { } func (s *registryStats) SetMetrics() { + s.sealing.SetMetrics(dataSizeTotal, "active") s.sealing.SetMetrics(dataSizeTotal, "sealing") s.sealed.SetMetrics(dataSizeTotal, "sealed") s.offloading.SetMetrics(dataSizeTotal, "offloading") diff --git a/fracmanager/fraction_registry.go b/fracmanager/fraction_registry.go index db39d821..2aeca819 100644 --- a/fracmanager/fraction_registry.go +++ b/fracmanager/fraction_registry.go @@ -89,6 +89,8 @@ func (r *fractionRegistry) AllFractions() []frac.Fraction { func (r *fractionRegistry) Stats() registryStats { r.mu.RLock() defer r.mu.RUnlock() + + r.stats.active.Set(r.active.instance.Info()) return r.stats } diff --git a/fracmanager/lifecycle_manager.go b/fracmanager/lifecycle_manager.go index 76594f0e..63934868 100644 --- a/fracmanager/lifecycle_manager.go +++ b/fracmanager/lifecycle_manager.go @@ -63,12 +63,12 @@ func (lc *lifecycleManager) SyncInfoCache() { // seal converts an active fraction to sealed state. // It freezes writes, waits for pending operations, then seals the fraction. func (lc *lifecycleManager) seal(active *activeProxy) error { + sealsTotal.Inc() now := time.Now() sealed, err := lc.provider.Seal(active.instance) if err != nil { return err } - sealsTotal.Inc() sealingTime := time.Since(now) sealsDoneSeconds.Observe(sealingTime.Seconds()) From 655feeae1136d437aa9781eadfdaa2f897fe577e Mon Sep 17 00:00:00 2001 From: Evgenii Guguchkin Date: Tue, 27 Jan 2026 13:08:09 +0300 Subject: [PATCH 2/2] review fix --- fracmanager/fracs_stats.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fracmanager/fracs_stats.go b/fracmanager/fracs_stats.go index 4ddbfb11..968b8b41 100644 --- a/fracmanager/fracs_stats.go +++ b/fracmanager/fracs_stats.go @@ -81,7 +81,7 @@ type registryStats struct { } func (s *registryStats) Log() { - s.sealing.Log("active") + s.active.Log("active") s.sealing.Log("sealing") s.sealed.Log("sealed") s.offloading.Log("offloading") @@ -89,7 +89,7 @@ func (s *registryStats) Log() { } func (s *registryStats) SetMetrics() { - s.sealing.SetMetrics(dataSizeTotal, "active") + s.active.SetMetrics(dataSizeTotal, "active") s.sealing.SetMetrics(dataSizeTotal, "sealing") s.sealed.SetMetrics(dataSizeTotal, "sealed") s.offloading.SetMetrics(dataSizeTotal, "offloading")