Fix database locked errors (#3153)

* Make read-only operations use WithReadTxn
* Allow one database write thread
* Add unit test for concurrent transactions
* Perform some actions after commit to release txn
* Suppress some errors from cancelled context
This commit is contained in:
WithoutPants
2022-11-21 06:49:10 +11:00
committed by GitHub
parent 420c6fa9d7
commit f39fa416a9
54 changed files with 626 additions and 311 deletions

View File

@@ -929,18 +929,15 @@ func Test_imageQueryBuilder_Destroy(t *testing.T) {
for _, tt := range tests {
runWithRollbackTxn(t, tt.name, func(t *testing.T, ctx context.Context) {
assert := assert.New(t)
withRollbackTxn(func(ctx context.Context) error {
if err := qb.Destroy(ctx, tt.id); (err != nil) != tt.wantErr {
t.Errorf("imageQueryBuilder.Destroy() error = %v, wantErr %v", err, tt.wantErr)
}
if err := qb.Destroy(ctx, tt.id); (err != nil) != tt.wantErr {
t.Errorf("imageQueryBuilder.Destroy() error = %v, wantErr %v", err, tt.wantErr)
}
// ensure cannot be found
i, err := qb.Find(ctx, tt.id)
// ensure cannot be found
i, err := qb.Find(ctx, tt.id)
assert.NotNil(err)
assert.Nil(i)
return nil
})
assert.NotNil(err)
assert.Nil(i)
})
}
}