diff options
author | EuAndreh <eu@euandre.org> | 2025-01-25 14:01:52 -0300 |
---|---|---|
committer | EuAndreh <eu@euandre.org> | 2025-01-25 14:01:52 -0300 |
commit | d116633b12cad8c4acdf78ad9aaf6bb395d3ef64 (patch) | |
tree | 39d65dcf46c7e61666525666a387db7b02158e5a | |
parent | src/dedo.go: Remove public API for manually managing transactions (diff) | |
download | dedo-d116633b12cad8c4acdf78ad9aaf6bb395d3ef64.tar.gz dedo-d116633b12cad8c4acdf78ad9aaf6bb395d3ef64.tar.xz |
src/dedo.go: Remove Tx.managed field
-rw-r--r-- | src/dedo.go | 13 | ||||
-rw-r--r-- | tests/dedo.go | 154 |
2 files changed, 0 insertions, 167 deletions
diff --git a/src/dedo.go b/src/dedo.go index a96f8ef..8965712 100644 --- a/src/dedo.go +++ b/src/dedo.go @@ -274,7 +274,6 @@ type txid uint64 /// quickly grow. type Tx struct { writable bool - managed bool db *DB meta *meta root Bucket @@ -1996,14 +1995,9 @@ func (db *DB) Update(fn func(*Tx) error) error { } }() - // Mark as a managed tx so that the inner function cannot manually - // commit. - t.managed = true - // If an error is returned from the function then rollback and return // error. err = fn(t) - t.managed = false if err != nil { _ = t.rollback() return err @@ -2030,13 +2024,8 @@ func (db *DB) View(fn func(*Tx) error) error { } }() - // Mark as a managed tx so that the inner function cannot manually - // rollback. - t.managed = true - // If an error is returned from the function then pass it through. err = fn(t) - t.managed = false if err != nil { _ = t.rollback() return err @@ -3447,7 +3436,6 @@ func (tx *Tx) OnCommit(fn func()) { /// an error if a disk write error occurs, or if Tx.commiti() is called on a /// read-only transaction. func (tx *Tx) commit() error { - g.Assert(!tx.managed, "managed tx commit not allowed") if tx.db == nil { return ErrTxClosed } else if !tx.writable { @@ -3543,7 +3531,6 @@ func (tx *Tx) commit() error { /// Tx.rollback() closes the transaction and ignores all previous updates. /// Read-only transactions must be rolled back and not committed. func (tx *Tx) rollback() error { - g.Assert(!tx.managed, "managed tx rollback not allowed") if tx.db == nil { return ErrTxClosed } diff --git a/tests/dedo.go b/tests/dedo.go index c6260d0..d2b93bb 100644 --- a/tests/dedo.go +++ b/tests/dedo.go @@ -11,7 +11,6 @@ import ( "io" "io/ioutil" "log" - "log/slog" "math/rand" "os" "path/filepath" @@ -3459,155 +3458,6 @@ func TestDB_Update_Closed(t *testing.T) { } } -// Ensure a panic occurs while trying to commit a managed transaction. -func TestDB_Update_ManualCommit(t *testing.T) { - db := MustOpenDB() - defer db.MustClose() - defer os.Remove(db.Path()) - - savedLogger := slog.Default() - s := new(strings.Builder) - g.SetLoggerOutput(s) - - var panicked bool - err := db.Update(func(tx *Tx) error { - func() { - defer func() { - r := recover() - if r != nil { - panicked = true - } - }() - - err := tx.commit() - if err != nil { - t.Fatal(err) - } - }() - return nil - }) - if err != nil { - t.Fatal(err) - } else if !panicked { - t.Fatal("expected panic") - } - - slog.SetDefault(savedLogger) - g.TAssertEqual(len(s.String()) > 0, true) -} - -// Ensure a panic occurs while trying to rollback a managed transaction. -func TestDB_Update_ManualRollback(t *testing.T) { - db := MustOpenDB() - defer db.MustClose() - defer os.Remove(db.Path()) - - savedLogger := slog.Default() - s := new(strings.Builder) - g.SetLoggerOutput(s) - - var panicked bool - err := db.Update(func(tx *Tx) error { - func() { - defer func() { - r := recover() - if r != nil { - panicked = true - } - }() - - err := tx.rollback() - if err != nil { - t.Fatal(err) - } - }() - return nil - }) - if err != nil { - t.Fatal(err) - } else if !panicked { - t.Fatal("expected panic") - } - - slog.SetDefault(savedLogger) - g.TAssertEqual(len(s.String()) > 0, true) -} - -// Ensure a panic occurs while trying to commit a managed transaction. -func TestDB_View_ManualCommit(t *testing.T) { - db := MustOpenDB() - defer db.MustClose() - defer os.Remove(db.Path()) - - savedLogger := slog.Default() - s := new(strings.Builder) - g.SetLoggerOutput(s) - - var panicked bool - err := db.View(func(tx *Tx) error { - func() { - defer func() { - r := recover() - if r != nil { - panicked = true - } - }() - - err := tx.commit() - if err != nil { - t.Fatal(err) - } - }() - - return nil - }) - if err != nil { - t.Fatal(err) - } else if !panicked { - t.Fatal("expected panic") - } - - slog.SetDefault(savedLogger) - g.TAssertEqual(len(s.String()) > 0, true) -} - -// Ensure a panic occurs while trying to rollback a managed transaction. -func TestDB_View_ManualRollback(t *testing.T) { - db := MustOpenDB() - defer db.MustClose() - defer os.Remove(db.Path()) - - savedLogger := slog.Default() - s := new(strings.Builder) - g.SetLoggerOutput(s) - - var panicked bool - err := db.View(func(tx *Tx) error { - func() { - defer func() { - r := recover() - if r != nil { - panicked = true - } - }() - - err := tx.rollback() - if err != nil { - t.Fatal(err) - } - }() - return nil - }) - if err != nil { - t.Fatal(err) - } else if !panicked { - t.Fatal("expected panic") - } - - slog.SetDefault(savedLogger) - g.TAssertEqual(len(s.String()) > 0, true) -} - // Ensure a write transaction that panics does not hold open locks. func TestDB_Update_Panic(t *testing.T) { db := MustOpenDB() @@ -6650,10 +6500,6 @@ func MainTest() { { "TestDB_Close_PendingTx_RO", TestDB_Close_PendingTx_RO }, { "TestDB_Update", TestDB_Update }, { "TestDB_Update_Closed", TestDB_Update_Closed }, - { "TestDB_Update_ManualCommit", TestDB_Update_ManualCommit }, - { "TestDB_Update_ManualRollback", TestDB_Update_ManualRollback }, - { "TestDB_View_ManualCommit", TestDB_View_ManualCommit }, - { "TestDB_View_ManualRollback", TestDB_View_ManualRollback }, { "TestDB_Update_Panic", TestDB_Update_Panic }, { "TestDB_View_Error", TestDB_View_Error }, { "TestDB_View_Panic", TestDB_View_Panic }, |