aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2025-01-25 14:00:01 -0300
committerEuAndreh <eu@euandre.org>2025-01-25 14:00:01 -0300
commit007c65e2f6ec5de6be7df127fcfaaf8e58086ba8 (patch)
tree54ce78d6b8f3e5e273cd33af608a38f05be39c0a
parenttests/dedo.go: Swallow error log from g.Assert() (diff)
downloaddedo-007c65e2f6ec5de6be7df127fcfaaf8e58086ba8.tar.gz
dedo-007c65e2f6ec5de6be7df127fcfaaf8e58086ba8.tar.xz
src/dedo.go: Remove public API for manually managing transactions
-rw-r--r--src/dedo.go46
-rw-r--r--tests/dedo.go116
2 files changed, 81 insertions, 81 deletions
diff --git a/src/dedo.go b/src/dedo.go
index 2dde5eb..a96f8ef 100644
--- a/src/dedo.go
+++ b/src/dedo.go
@@ -1862,7 +1862,7 @@ func (db *DB) close() error {
return nil
}
-/// DB.Begin() starts a new transaction. Multiple read-only transactions can be
+/// DB.begin() starts a new transaction. Multiple read-only transactions can be
/// used concurrently but only one write transaction can be used at a time.
/// Starting multiple write transactions will cause the calls to block and be
/// serialized until the current write transaction finishes.
@@ -1878,7 +1878,7 @@ func (db *DB) close() error {
///
/// IMPORTANT: You must close read-only transactions after you are finished or
/// else the database will not reclaim old pages.
-func (db *DB) Begin(writable bool) (*Tx, error) {
+func (db *DB) begin(writable bool) (*Tx, error) {
if writable {
return db.beginRWTx()
} else {
@@ -1984,7 +1984,7 @@ func (db *DB) removeTx(tx *Tx) {
/// Attempting to manually commit or rollback within the function will cause a
/// panic.
func (db *DB) Update(fn func(*Tx) error) error {
- t, err := db.Begin(true)
+ t, err := db.begin(true)
if err != nil {
return err
}
@@ -1992,7 +1992,7 @@ func (db *DB) Update(fn func(*Tx) error) error {
// Make sure the transaction rolls back in the event of a panic.
defer func() {
if t.db != nil {
- t.rollback()
+ t.doRollback()
}
}()
@@ -2005,11 +2005,11 @@ func (db *DB) Update(fn func(*Tx) error) error {
err = fn(t)
t.managed = false
if err != nil {
- _ = t.Rollback()
+ _ = t.rollback()
return err
}
- return t.Commit()
+ return t.commit()
}
/// DB.View() executes a function within the context of a managed read-only
@@ -2018,7 +2018,7 @@ func (db *DB) Update(fn func(*Tx) error) error {
///
/// Attempting to manually rollback within the function will cause a panic.
func (db *DB) View(fn func(*Tx) error) error {
- t, err := db.Begin(false)
+ t, err := db.begin(false)
if err != nil {
return err
}
@@ -2026,7 +2026,7 @@ func (db *DB) View(fn func(*Tx) error) error {
// Make sure the transaction rolls back in the event of a panic.
defer func() {
if t.db != nil {
- t.rollback()
+ t.doRollback()
}
}()
@@ -2038,11 +2038,11 @@ func (db *DB) View(fn func(*Tx) error) error {
err = fn(t)
t.managed = false
if err != nil {
- _ = t.Rollback()
+ _ = t.rollback()
return err
}
- err = t.Rollback()
+ err = t.rollback()
if err != nil {
return err
}
@@ -3443,10 +3443,10 @@ func (tx *Tx) OnCommit(fn func()) {
tx.commitHandlers = append(tx.commitHandlers, fn)
}
-/// Tx.Commit() writes all changes to disk and updates the meta page. Returns
-/// an error if a disk write error occurs, or if Tx.Commiti() is called on a
+/// Tx.commit() writes all changes to disk and updates the meta page. Returns
+/// an error if a disk write error occurs, or if Tx.commiti() is called on a
/// read-only transaction.
-func (tx *Tx) Commit() error {
+func (tx *Tx) commit() error {
g.Assert(!tx.managed, "managed tx commit not allowed")
if tx.db == nil {
return ErrTxClosed
@@ -3462,7 +3462,7 @@ func (tx *Tx) Commit() error {
// spill data onto dirty pages.
err := tx.root.spill()
if err != nil {
- tx.rollback()
+ tx.doRollback()
return err
}
@@ -3477,13 +3477,13 @@ func (tx *Tx) Commit() error {
tx.db.freelist.free(tx.meta.txid, tx.db.page(tx.meta.freelist))
p, err := tx.allocate((tx.db.freelist.size() / tx.db.pageSize) + 1)
if err != nil {
- tx.rollback()
+ tx.doRollback()
return err
}
err = tx.db.freelist.write(p)
if err != nil {
- tx.rollback()
+ tx.doRollback()
return err
}
tx.meta.freelist = p.id
@@ -3493,7 +3493,7 @@ func (tx *Tx) Commit() error {
if tx.meta.pgid > opgid {
err := tx.db.grow(int(tx.meta.pgid + 1) * tx.db.pageSize)
if err != nil {
- tx.rollback()
+ tx.doRollback()
return err
}
}
@@ -3501,7 +3501,7 @@ func (tx *Tx) Commit() error {
// Write dirty pages to disk.
err = tx.write()
if err != nil {
- tx.rollback()
+ tx.doRollback()
return err
}
@@ -3525,7 +3525,7 @@ func (tx *Tx) Commit() error {
// Write meta to disk.
err = tx.writeMeta()
if err != nil {
- tx.rollback()
+ tx.doRollback()
return err
}
@@ -3540,18 +3540,18 @@ func (tx *Tx) Commit() error {
return nil
}
-/// Tx.Rollback() closes the transaction and ignores all previous updates.
+/// 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 {
+func (tx *Tx) rollback() error {
g.Assert(!tx.managed, "managed tx rollback not allowed")
if tx.db == nil {
return ErrTxClosed
}
- tx.rollback()
+ tx.doRollback()
return nil
}
-func (tx *Tx) rollback() {
+func (tx *Tx) doRollback() {
if tx.db == nil {
return
}
diff --git a/tests/dedo.go b/tests/dedo.go
index 3aecf96..c6260d0 100644
--- a/tests/dedo.go
+++ b/tests/dedo.go
@@ -443,7 +443,7 @@ func TestBucket_Put_Closed(t *testing.T) {
defer db.MustClose()
defer os.Remove(db.Path())
- tx, err := db.Begin(true)
+ tx, err := db.begin(true)
if err != nil {
t.Fatal(err)
}
@@ -453,7 +453,7 @@ func TestBucket_Put_Closed(t *testing.T) {
t.Fatal(err)
}
- err = tx.Rollback()
+ err = tx.rollback()
if err != nil {
t.Fatal(err)
}
@@ -819,7 +819,7 @@ func TestBucket_Delete_Closed(t *testing.T) {
defer db.MustClose()
defer os.Remove(db.Path())
- tx, err := db.Begin(true)
+ tx, err := db.begin(true)
if err != nil {
t.Fatal(err)
}
@@ -829,7 +829,7 @@ func TestBucket_Delete_Closed(t *testing.T) {
t.Fatal(err)
}
- err = tx.Rollback()
+ err = tx.rollback()
if err != nil {
t.Fatal(err)
}
@@ -1272,7 +1272,7 @@ func TestBucket_NextSequence_Closed(t *testing.T) {
defer db.MustClose()
defer os.Remove(db.Path())
- tx, err := db.Begin(true)
+ tx, err := db.begin(true)
if err != nil {
t.Fatal(err)
}
@@ -1282,7 +1282,7 @@ func TestBucket_NextSequence_Closed(t *testing.T) {
t.Fatal(err)
}
- err = tx.Rollback()
+ err = tx.rollback()
if err != nil {
t.Fatal(err)
}
@@ -1418,7 +1418,7 @@ func TestBucket_ForEach_Closed(t *testing.T) {
defer db.MustClose()
defer os.Remove(db.Path())
- tx, err := db.Begin(true)
+ tx, err := db.begin(true)
if err != nil {
t.Fatal(err)
}
@@ -1428,7 +1428,7 @@ func TestBucket_ForEach_Closed(t *testing.T) {
t.Fatal(err)
}
- err = tx.Rollback()
+ err = tx.rollback()
if err != nil {
t.Fatal(err)
}
@@ -2252,11 +2252,11 @@ func TestCursor_Iterate_Leaf(t *testing.T) {
t.Fatal(err)
}
- tx, err := db.Begin(false)
+ tx, err := db.begin(false)
if err != nil {
t.Fatal(err)
}
- defer func() { _ = tx.Rollback() }()
+ defer func() { _ = tx.rollback() }()
c := tx.Bucket([]byte("widgets")).Cursor()
@@ -2295,7 +2295,7 @@ func TestCursor_Iterate_Leaf(t *testing.T) {
t.Fatalf("expected nil value: %v", v)
}
- err = tx.Rollback()
+ err = tx.rollback()
if err != nil {
t.Fatal(err)
}
@@ -2335,7 +2335,7 @@ func TestCursor_LeafRootReverse(t *testing.T) {
t.Fatal(err)
}
- tx, err := db.Begin(false)
+ tx, err := db.begin(false)
if err != nil {
t.Fatal(err)
}
@@ -2376,7 +2376,7 @@ func TestCursor_LeafRootReverse(t *testing.T) {
t.Fatalf("expected nil value: %v", v)
}
- err = tx.Rollback()
+ err = tx.rollback()
if err != nil {
t.Fatal(err)
}
@@ -2410,7 +2410,7 @@ func TestCursor_Restart(t *testing.T) {
t.Fatal(err)
}
- tx, err := db.Begin(false)
+ tx, err := db.begin(false)
if err != nil {
t.Fatal(err)
}
@@ -2436,7 +2436,7 @@ func TestCursor_Restart(t *testing.T) {
t.Fatalf("unexpected key: %v", k)
}
- err = tx.Rollback()
+ err = tx.rollback()
if err != nil {
t.Fatal(err)
}
@@ -2502,7 +2502,7 @@ func TestCursor_QuickCheck(t *testing.T) {
defer os.Remove(db.Path())
// Bulk insert all values.
- tx, err := db.Begin(true)
+ tx, err := db.begin(true)
if err != nil {
t.Fatal(err)
}
@@ -2517,7 +2517,7 @@ func TestCursor_QuickCheck(t *testing.T) {
}
}
- err = tx.Commit()
+ err = tx.commit()
if err != nil {
t.Fatal(err)
}
@@ -2527,7 +2527,7 @@ func TestCursor_QuickCheck(t *testing.T) {
// Iterate over all items and check consistency.
index := 0
- tx, err = db.Begin(false)
+ tx, err = db.begin(false)
if err != nil {
t.Fatal(err)
}
@@ -2552,7 +2552,7 @@ func TestCursor_QuickCheck(t *testing.T) {
)
}
- err = tx.Rollback()
+ err = tx.rollback()
if err != nil {
t.Fatal(err)
}
@@ -2575,7 +2575,7 @@ func TestCursor_QuickCheck_Reverse(t *testing.T) {
defer os.Remove(db.Path())
// Bulk insert all values.
- tx, err := db.Begin(true)
+ tx, err := db.begin(true)
if err != nil {
t.Fatal(err)
}
@@ -2592,7 +2592,7 @@ func TestCursor_QuickCheck_Reverse(t *testing.T) {
}
}
- err = tx.Commit()
+ err = tx.commit()
if err != nil {
t.Fatal(err)
}
@@ -2602,7 +2602,7 @@ func TestCursor_QuickCheck_Reverse(t *testing.T) {
// Iterate over all items and check consistency.
index := 0
- tx, err = db.Begin(false)
+ tx, err = db.begin(false)
if err != nil {
t.Fatal(err)
}
@@ -2628,7 +2628,7 @@ func TestCursor_QuickCheck_Reverse(t *testing.T) {
)
}
- err = tx.Rollback()
+ err = tx.rollback()
if err != nil {
t.Fatal(err)
}
@@ -3246,13 +3246,13 @@ func TestDB_Open_InitialMmapSize(t *testing.T) {
// create a long-running read transaction
// that never gets closed while writing
- rtx, err := db.Begin(false)
+ rtx, err := db.begin(false)
if err != nil {
t.Fatal(err)
}
// create a write transaction
- wtx, err := db.Begin(true)
+ wtx, err := db.begin(true)
if err != nil {
t.Fatal(err)
}
@@ -3271,7 +3271,7 @@ func TestDB_Open_InitialMmapSize(t *testing.T) {
done := make(chan struct{})
go func() {
- err := wtx.Commit()
+ err := wtx.commit()
if err != nil {
t.Fatal(err)
}
@@ -3285,7 +3285,7 @@ func TestDB_Open_InitialMmapSize(t *testing.T) {
case <-done:
}
- err = rtx.Rollback()
+ err = rtx.rollback()
if err != nil {
t.Fatal(err)
}
@@ -3294,7 +3294,7 @@ func TestDB_Open_InitialMmapSize(t *testing.T) {
// Ensure that a database cannot open a transaction when it's not open.
func TestDB_Begin_ErrDatabaseNotOpen(t *testing.T) {
var db DB
- _, err := db.Begin(false)
+ _, err := db.begin(false)
if err != ErrDatabaseNotOpen {
t.Fatalf("unexpected error: %s", err)
}
@@ -3306,7 +3306,7 @@ func TestDB_BeginRW(t *testing.T) {
defer db.MustClose()
defer os.Remove(db.Path())
- tx, err := db.Begin(true)
+ tx, err := db.begin(true)
if err != nil {
t.Fatal(err)
} else if tx == nil {
@@ -3319,7 +3319,7 @@ func TestDB_BeginRW(t *testing.T) {
t.Fatal("expected writable tx")
}
- err = tx.Commit()
+ err = tx.commit()
if err != nil {
t.Fatal(err)
}
@@ -3328,7 +3328,7 @@ func TestDB_BeginRW(t *testing.T) {
// Ensure that opening a transaction while the DB is closed returns an error.
func TestDB_BeginRW_Closed(t *testing.T) {
var db DB
- _, err := db.Begin(true)
+ _, err := db.begin(true)
if err != ErrDatabaseNotOpen {
t.Fatalf("unexpected error: %s", err)
}
@@ -3352,7 +3352,7 @@ func testDB_Close_PendingTx(t *testing.T, writable bool) {
defer os.Remove(db.Path())
// Start transaction.
- tx, err := db.Begin(true)
+ tx, err := db.begin(true)
if err != nil {
t.Fatal(err)
}
@@ -3377,7 +3377,7 @@ func testDB_Close_PendingTx(t *testing.T, writable bool) {
}
// Commit transaction.
- err = tx.Commit()
+ err = tx.commit()
if err != nil {
t.Fatal(err)
}
@@ -3479,7 +3479,7 @@ func TestDB_Update_ManualCommit(t *testing.T) {
}
}()
- err := tx.Commit()
+ err := tx.commit()
if err != nil {
t.Fatal(err)
}
@@ -3516,7 +3516,7 @@ func TestDB_Update_ManualRollback(t *testing.T) {
}
}()
- err := tx.Rollback()
+ err := tx.rollback()
if err != nil {
t.Fatal(err)
}
@@ -3553,7 +3553,7 @@ func TestDB_View_ManualCommit(t *testing.T) {
}
}()
- err := tx.Commit()
+ err := tx.commit()
if err != nil {
t.Fatal(err)
}
@@ -3591,7 +3591,7 @@ func TestDB_View_ManualRollback(t *testing.T) {
}
}()
- err := tx.Rollback()
+ err := tx.rollback()
if err != nil {
t.Fatal(err)
}
@@ -4143,7 +4143,7 @@ func ExampleDB_Begin_ReadOnly() {
}
// Create several keys in a transaction.
- tx, err := db.Begin(true)
+ tx, err := db.begin(true)
if err != nil {
log.Fatal(err)
}
@@ -4164,13 +4164,13 @@ func ExampleDB_Begin_ReadOnly() {
log.Fatal(err)
}
- err = tx.Commit()
+ err = tx.commit()
if err != nil {
log.Fatal(err)
}
// Iterate over the values in sorted key order.
- tx, err = db.Begin(false)
+ tx, err = db.begin(false)
if err != nil {
log.Fatal(err)
}
@@ -4179,7 +4179,7 @@ func ExampleDB_Begin_ReadOnly() {
fmt.Printf("%s likes %s\n", k, v)
}
- err = tx.Rollback()
+ err = tx.rollback()
if err != nil {
log.Fatal(err)
}
@@ -5326,7 +5326,7 @@ func testSimulate(t *testing.T, threadCount, parallelism int) {
defer wg.Done()
// Start transaction.
- tx, err := db.Begin(writable)
+ tx, err := db.begin(writable)
if err != nil {
t.Fatal("tx begin: ", err)
}
@@ -5347,13 +5347,13 @@ func testSimulate(t *testing.T, threadCount, parallelism int) {
versions[tx.ID()] = qdb
mutex.Unlock()
- err := tx.Commit()
+ err := tx.commit()
if err != nil {
t.Fatal(err)
}
}()
} else {
- defer func() { _ = tx.Rollback() }()
+ defer func() { _ = tx.rollback() }()
}
// Ignore operation if we don't have data yet.
@@ -5611,7 +5611,7 @@ func TestTx_Commit_ErrTxClosed(t *testing.T) {
defer db.MustClose()
defer os.Remove(db.Path())
- tx, err := db.Begin(true)
+ tx, err := db.begin(true)
if err != nil {
t.Fatal(err)
}
@@ -5621,12 +5621,12 @@ func TestTx_Commit_ErrTxClosed(t *testing.T) {
t.Fatal(err)
}
- err = tx.Commit()
+ err = tx.commit()
if err != nil {
t.Fatal(err)
}
- err = tx.Commit()
+ err = tx.commit()
if err != ErrTxClosed {
t.Fatalf("unexpected error: %s", err)
}
@@ -5638,17 +5638,17 @@ func TestTx_Rollback_ErrTxClosed(t *testing.T) {
defer db.MustClose()
defer os.Remove(db.Path())
- tx, err := db.Begin(true)
+ tx, err := db.begin(true)
if err != nil {
t.Fatal(err)
}
- err = tx.Rollback()
+ err = tx.rollback()
if err != nil {
t.Fatal(err)
}
- err = tx.Rollback()
+ err = tx.rollback()
if err != ErrTxClosed {
t.Fatalf("unexpected error: %s", err)
}
@@ -5660,12 +5660,12 @@ func TestTx_Commit_ErrTxNotWritable(t *testing.T) {
defer db.MustClose()
defer os.Remove(db.Path())
- tx, err := db.Begin(false)
+ tx, err := db.begin(false)
if err != nil {
t.Fatal(err)
}
- err = tx.Commit()
+ err = tx.commit()
if err != ErrTxNotWritable {
t.Fatal(err)
}
@@ -5742,12 +5742,12 @@ func TestTx_CreateBucket_ErrTxClosed(t *testing.T) {
defer db.MustClose()
defer os.Remove(db.Path())
- tx, err := db.Begin(true)
+ tx, err := db.begin(true)
if err != nil {
t.Fatal(err)
}
- err = tx.Commit()
+ err = tx.commit()
if err != nil {
t.Fatal(err)
}
@@ -6028,12 +6028,12 @@ func TestTx_DeleteBucket_ErrTxClosed(t *testing.T) {
defer db.MustClose()
defer os.Remove(db.Path())
- tx, err := db.Begin(true)
+ tx, err := db.begin(true)
if err != nil {
t.Fatal(err)
}
- err = tx.Commit()
+ err = tx.commit()
if err != nil {
t.Fatal(err)
}
@@ -6384,7 +6384,7 @@ func ExampleTx_Rollback() {
}
// Update the key but rollback the transaction so it never saves.
- tx, err := db.Begin(true)
+ tx, err := db.begin(true)
if err != nil {
log.Fatal(err)
}
@@ -6395,7 +6395,7 @@ func ExampleTx_Rollback() {
log.Fatal(err)
}
- err = tx.Rollback()
+ err = tx.rollback()
if err != nil {
log.Fatal(err)
}