frostfs-node/pkg/local_object_storage/blobstor/blobovniczatree/count.go
Dmitrii Stepanov b66ea2c713
Some checks failed
DCO action / DCO (pull_request) Successful in 1m51s
Build / Build Components (1.21) (pull_request) Successful in 3m7s
Vulncheck / Vulncheck (pull_request) Successful in 3m27s
Tests and linters / Lint (pull_request) Failing after 4m18s
Build / Build Components (1.20) (pull_request) Successful in 4m40s
Tests and linters / gopls check (pull_request) Successful in 6m40s
Tests and linters / Staticcheck (pull_request) Successful in 7m10s
Tests and linters / Tests (1.20) (pull_request) Successful in 7m48s
Tests and linters / Tests (1.21) (pull_request) Successful in 7m58s
Tests and linters / Tests with -race (pull_request) Successful in 8m32s
[#1029] metabase: Add refill metrics
Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
2024-04-09 19:47:46 +03:00

38 lines
755 B
Go

package blobovniczatree
import (
"context"
"time"
"git.frostfs.info/TrueCloudLab/frostfs-observability/tracing"
)
func (b *Blobovniczas) ObjectsCount(ctx context.Context) (uint64, error) {
var (
success bool
startedAt = time.Now()
)
defer func() {
b.metrics.ObjectsCount(time.Since(startedAt), success)
}()
_, span := tracing.StartSpanFromContext(ctx, "Blobovniczas.ObjectsCount")
defer span.End()
var result uint64
err := b.iterateExistingDBPaths(ctx, func(p string) (bool, error) {
shDB := b.getBlobovniczaWithoutCaching(p)
blz, err := shDB.Open()
if err != nil {
return true, err
}
defer shDB.Close()
result += blz.ObjectsCount()
return false, nil
})
if err != nil {
return 0, err
}
return result, nil
}