diff --git a/fracmanager/fracs_stats.go b/fracmanager/fracs_stats.go index 1d9758bc..968b8b41 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.active.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.active.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())