diff options
author | EuAndreh <eu@euandre.org> | 2025-01-25 14:00:01 -0300 |
---|---|---|
committer | EuAndreh <eu@euandre.org> | 2025-01-25 14:00:01 -0300 |
commit | 007c65e2f6ec5de6be7df127fcfaaf8e58086ba8 (patch) | |
tree | 54ce78d6b8f3e5e273cd33af608a38f05be39c0a | |
parent | tests/dedo.go: Swallow error log from g.Assert() (diff) | |
download | dedo-007c65e2f6ec5de6be7df127fcfaaf8e58086ba8.tar.gz dedo-007c65e2f6ec5de6be7df127fcfaaf8e58086ba8.tar.xz |
src/dedo.go: Remove public API for manually managing transactions
-rw-r--r-- | src/dedo.go | 46 | ||||
-rw-r--r-- | tests/dedo.go | 116 |
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) } |