@@ -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