Fix container counters metrics removal #941

Merged
dstepanov-yadro merged 2 commits from dstepanov-yadro/frostfs-node:fix/container_counters into master 2024-09-04 19:51:06 +00:00
2 changed files with 33 additions and 15 deletions

View file

@ -398,7 +398,7 @@ func (e *StorageEngine) processZeroCountContainers(ctx context.Context, ids []ci
} }
for id := range idMap { for id := range idMap {
if err := sh.DeleteContainerSize(ctx, id); err != nil { if err := sh.DeleteContainerCount(ctx, id); err != nil {
e.log.Warn(logs.EngineFailedToDeleteContainerSize, zap.Stringer("container_id", id), zap.Error(err)) e.log.Warn(logs.EngineFailedToDeleteContainerSize, zap.Stringer("container_id", id), zap.Error(err))
failed = true failed = true
return true return true

View file

@ -433,9 +433,9 @@ func (s *Shard) updateMetrics(ctx context.Context) {
return return
} }
s.cfg.metricsWriter.SetObjectCounter(physical, cc.Phy) s.setObjectCounterBy(physical, cc.Phy)
s.cfg.metricsWriter.SetObjectCounter(logical, cc.Logic) s.setObjectCounterBy(logical, cc.Logic)
s.cfg.metricsWriter.SetObjectCounter(user, cc.User) s.setObjectCounterBy(user, cc.User)
cnrList, err := s.metaBase.Containers(ctx) cnrList, err := s.metaBase.Containers(ctx)
if err != nil { if err != nil {
@ -453,11 +453,11 @@ func (s *Shard) updateMetrics(ctx context.Context) {
zap.Error(err)) zap.Error(err))
continue continue
} }
s.metricsWriter.AddToContainerSize(cnrList[i].EncodeToString(), int64(size)) s.addToContainerSize(cnrList[i].EncodeToString(), int64(size))
totalPayload += size totalPayload += size
} }
s.metricsWriter.AddToPayloadSize(int64(totalPayload)) s.addToPayloadSize(int64(totalPayload))
contCount, err := s.metaBase.ContainerCounters(ctx) contCount, err := s.metaBase.ContainerCounters(ctx)
if err != nil { if err != nil {
@ -465,9 +465,9 @@ func (s *Shard) updateMetrics(ctx context.Context) {
return return
} }
for contID, count := range contCount.Counts { for contID, count := range contCount.Counts {
s.metricsWriter.SetContainerObjectsCount(contID.EncodeToString(), physical, count.Phy) s.setContainerObjectsCount(contID.EncodeToString(), physical, count.Phy)
s.metricsWriter.SetContainerObjectsCount(contID.EncodeToString(), logical, count.Logic) s.setContainerObjectsCount(contID.EncodeToString(), logical, count.Logic)
s.metricsWriter.SetContainerObjectsCount(contID.EncodeToString(), user, count.User) s.setContainerObjectsCount(contID.EncodeToString(), user, count.User)
} }
} }
@ -487,35 +487,53 @@ func (s *Shard) incObjectCounter(cnrID cid.ID, isUser bool) {
} }
func (s *Shard) decObjectCounterBy(typ string, v uint64) { func (s *Shard) decObjectCounterBy(typ string, v uint64) {
if s.cfg.metricsWriter != nil { if s.cfg.metricsWriter != nil && v > 0 {
s.cfg.metricsWriter.AddToObjectCounter(typ, -int(v)) s.cfg.metricsWriter.AddToObjectCounter(typ, -int(v))
} }
} }
func (s *Shard) setObjectCounterBy(typ string, v uint64) {
if s.cfg.metricsWriter != nil && v > 0 {
s.cfg.metricsWriter.SetObjectCounter(typ, v)
}
}
func (s *Shard) decContainerObjectCounter(byCnr map[cid.ID]meta.ObjectCounters) { func (s *Shard) decContainerObjectCounter(byCnr map[cid.ID]meta.ObjectCounters) {
if s.cfg.metricsWriter == nil { if s.cfg.metricsWriter == nil {
return return
} }
for cnrID, count := range byCnr { for cnrID, count := range byCnr {
s.cfg.metricsWriter.SubContainerObjectsCount(cnrID.EncodeToString(), physical, count.Phy) if count.Phy > 0 {
s.cfg.metricsWriter.SubContainerObjectsCount(cnrID.EncodeToString(), logical, count.Logic) s.cfg.metricsWriter.SubContainerObjectsCount(cnrID.EncodeToString(), physical, count.Phy)
s.cfg.metricsWriter.SubContainerObjectsCount(cnrID.EncodeToString(), user, count.User) }
if count.Logic > 0 {
s.cfg.metricsWriter.SubContainerObjectsCount(cnrID.EncodeToString(), logical, count.Logic)
}
if count.User > 0 {
s.cfg.metricsWriter.SubContainerObjectsCount(cnrID.EncodeToString(), user, count.User)
}
} }
} }
func (s *Shard) addToContainerSize(cnr string, size int64) { func (s *Shard) addToContainerSize(cnr string, size int64) {
if s.cfg.metricsWriter != nil { if s.cfg.metricsWriter != nil && size != 0 {
s.cfg.metricsWriter.AddToContainerSize(cnr, size) s.cfg.metricsWriter.AddToContainerSize(cnr, size)
} }
} }
func (s *Shard) addToPayloadSize(size int64) { func (s *Shard) addToPayloadSize(size int64) {
if s.cfg.metricsWriter != nil { if s.cfg.metricsWriter != nil && size != 0 {
s.cfg.metricsWriter.AddToPayloadSize(size) s.cfg.metricsWriter.AddToPayloadSize(size)
} }
} }
func (s *Shard) setContainerObjectsCount(cnr string, typ string, v uint64) {
if s.cfg.metricsWriter != nil && v > 0 {
s.metricsWriter.SetContainerObjectsCount(cnr, typ, v)
}
}
func (s *Shard) IncErrorCounter() { func (s *Shard) IncErrorCounter() {
if s.cfg.metricsWriter != nil { if s.cfg.metricsWriter != nil {
s.cfg.metricsWriter.IncErrorCounter() s.cfg.metricsWriter.IncErrorCounter()