aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2025-01-25 14:01:52 -0300
committerEuAndreh <eu@euandre.org>2025-01-25 14:01:52 -0300
commitd116633b12cad8c4acdf78ad9aaf6bb395d3ef64 (patch)
tree39d65dcf46c7e61666525666a387db7b02158e5a
parentsrc/dedo.go: Remove public API for manually managing transactions (diff)
downloaddedo-d116633b12cad8c4acdf78ad9aaf6bb395d3ef64.tar.gz
dedo-d116633b12cad8c4acdf78ad9aaf6bb395d3ef64.tar.xz
src/dedo.go: Remove Tx.managed field
-rw-r--r--src/dedo.go13
-rw-r--r--tests/dedo.go154
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 },