Skip to content
This repository was archived by the owner on Jan 20, 2026. It is now read-only.

Commit 1395e55

Browse files
committed
Add latency metric with success
1 parent c5de273 commit 1395e55

1 file changed

Lines changed: 23 additions & 13 deletions

File tree

sc/memiavl/db.go

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ import (
1414
"time"
1515

1616
"github.com/alitto/pond"
17+
"go.opentelemetry.io/otel/attribute"
18+
"go.opentelemetry.io/otel/metric"
19+
1720
"github.com/cosmos/iavl"
1821
errorutils "github.com/sei-protocol/sei-db/common/errors"
1922
"github.com/sei-protocol/sei-db/common/logger"
@@ -85,14 +88,18 @@ const (
8588
SnapshotDirLen = len(SnapshotPrefix) + 20
8689
)
8790

88-
func OpenDB(logger logger.Logger, targetVersion int64, opts Options) (*DB, error) {
91+
func OpenDB(logger logger.Logger, targetVersion int64, opts Options) (database *DB, returnErr error) {
8992
var (
9093
err error
9194
fileLock FileLock
9295
)
9396
startTime := time.Now()
9497
defer func() {
95-
metrics.SeiDBMetrics.RestartLatency.Record(context.Background(), time.Since(startTime).Seconds())
98+
metrics.SeiDBMetrics.RestartLatency.Record(
99+
context.Background(),
100+
time.Since(startTime).Seconds(),
101+
metric.WithAttributes(attribute.Bool("success", returnErr == nil)),
102+
)
96103
}()
97104
if err := opts.Validate(); err != nil {
98105
return nil, fmt.Errorf("invalid commit store options: %w", err)
@@ -460,16 +467,19 @@ func (db *DB) pruneSnapshots() {
460467
}
461468

462469
// Commit wraps SaveVersion to bump the version and writes the pending changes into log files to persist on disk
463-
func (db *DB) Commit() (int64, error) {
470+
func (db *DB) Commit() (version int64, returnErr error) {
464471
db.mtx.Lock()
465472
defer db.mtx.Unlock()
466473
startTime := time.Now()
467474
defer func() {
468-
469-
metrics.SeiDBMetrics.CommitLatency.Record(context.Background(), time.Since(startTime).Milliseconds())
470-
metrics.SeiDBMetrics.MemNodeTotalSize.Record(context.Background(), TotalMemNodeSize.Load())
471-
metrics.SeiDBMetrics.NumOfMemNode.Record(context.Background(), TotalNumOfMemNode.Load())
472-
475+
ctx := context.Background()
476+
metrics.SeiDBMetrics.CommitLatency.Record(
477+
ctx,
478+
time.Since(startTime).Milliseconds(),
479+
metric.WithAttributes(attribute.Bool("success", returnErr == nil)),
480+
)
481+
metrics.SeiDBMetrics.MemNodeTotalSize.Record(ctx, TotalMemNodeSize.Load())
482+
metrics.SeiDBMetrics.NumOfMemNode.Record(ctx, TotalNumOfMemNode.Load())
473483
}()
474484
if db.readOnly {
475485
return 0, errReadOnly
@@ -599,7 +609,7 @@ func (db *DB) RewriteSnapshotBackground() error {
599609
return db.rewriteSnapshotBackground()
600610
}
601611

602-
func (db *DB) rewriteSnapshotBackground() error {
612+
func (db *DB) rewriteSnapshotBackground() (returnErr error) {
603613
if db.snapshotRewriteChan != nil {
604614
return errors.New("there's another ongoing snapshot rewriting process")
605615
}
@@ -613,9 +623,6 @@ func (db *DB) rewriteSnapshotBackground() error {
613623
go func() {
614624
defer close(ch)
615625
startTime := time.Now()
616-
defer func() {
617-
metrics.SeiDBMetrics.SnapshotCreationLatency.Record(context.Background(), time.Since(startTime).Seconds())
618-
}()
619626
cloned.logger.Info("start rewriting snapshot", "version", cloned.Version())
620627
if err := cloned.RewriteSnapshot(ctx); err != nil {
621628
ch <- snapshotResult{err: err}
@@ -635,8 +642,11 @@ func (db *DB) rewriteSnapshotBackground() error {
635642
}
636643

637644
cloned.logger.Info("finished best-effort catchup", "version", cloned.Version(), "latest", mtree.Version())
638-
639645
ch <- snapshotResult{mtree: mtree}
646+
metrics.SeiDBMetrics.SnapshotCreationLatency.Record(
647+
context.Background(),
648+
time.Since(startTime).Seconds(),
649+
)
640650
}()
641651

642652
return nil

0 commit comments

Comments
 (0)