MCPcopy Create free account
hub / github.com/nutsdb/nutsdb / managed

Method managed

db.go:1040–1066  ·  view source on GitHub ↗

managed calls a block of code that is fully contained in a transaction.

(writable bool, fn func(tx *Tx) error)

Source from the content-addressed store, hash-verified

1038
1039// managed calls a block of code that is fully contained in a transaction.
1040func (db *DB) managed(writable bool, fn func(tx *Tx) error) (err error) {
1041 var tx *Tx
1042
1043 tx, err = db.Begin(writable)
1044 if err != nil {
1045 return err
1046 }
1047 defer func() {
1048 if r := recover(); r != nil {
1049 err = fmt.Errorf("panic when executing tx, err is %+v", r)
1050 }
1051 }()
1052
1053 if err = fn(tx); err == nil {
1054 err = tx.Commit()
1055 } else {
1056 if db.opt.ErrorHandler != nil {
1057 db.opt.ErrorHandler.HandleError(err)
1058 }
1059
1060 if errRollback := tx.Rollback(); errRollback != nil {
1061 err = fmt.Errorf("%v. Rollback err: %v", err, errRollback)
1062 }
1063 }
1064
1065 return err
1066}
1067
1068func (db *DB) sendToWriteCh(tx *Tx) (*request, error) {
1069 req := requestPool.Get().(*request)

Callers 2

UpdateMethod · 0.95
ViewMethod · 0.95

Calls 4

BeginMethod · 0.95
CommitMethod · 0.95
RollbackMethod · 0.95
HandleErrorMethod · 0.65

Tested by

no test coverage detected