From e66341ffa9aaedd9fee511576e2e501738faa281 Mon Sep 17 00:00:00 2001 From: Jonathan Amsterdam Date: Mon, 1 Jun 2020 15:32:59 -0400 Subject: internal/database: Transact supports any isolation level - Add an arg to Transact for the isolation level - Remove TransactSerializable This makes it possible to use other levels, and makes it easier to see which level is being used for each transaction. Change-Id: Iba5e2920b4139e5e2f0f8c6b331a658d7c84f60f Reviewed-on: https://team-review.git.corp.google.com/c/golang/discovery/+/758942 CI-Result: Cloud Build Reviewed-by: Julie Qiu --- internal/postgres/insert_module.go | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) (limited to 'internal/postgres/insert_module.go') diff --git a/internal/postgres/insert_module.go b/internal/postgres/insert_module.go index 4c3e33f9..3f969f9c 100644 --- a/internal/postgres/insert_module.go +++ b/internal/postgres/insert_module.go @@ -70,14 +70,11 @@ func (db *DB) saveModule(ctx context.Context, m *internal.Module) (err error) { ctx, span := trace.StartSpan(ctx, "saveModule") defer span.End() - var transact func(context.Context, func(*database.DB) error) error + iso := sql.LevelDefault if experiment.IsActive(ctx, internal.ExperimentInsertSerializable) { - transact = db.db.TransactSerializable - } else { - transact = db.db.Transact + iso = sql.LevelSerializable } - - return transact(ctx, func(tx *database.DB) error { + return db.db.Transact(ctx, iso, func(tx *database.DB) error { moduleID, err := insertModule(ctx, tx, m) if err != nil { return err @@ -645,7 +642,7 @@ func removeNonDistributableData(m *internal.Module) { // DeleteModule deletes a Version from the database. func (db *DB) DeleteModule(ctx context.Context, modulePath, version string) (err error) { defer derrors.Wrap(&err, "DeleteModule(ctx, db, %q, %q)", modulePath, version) - return db.db.Transact(ctx, func(tx *database.DB) error { + return db.db.Transact(ctx, sql.LevelDefault, func(tx *database.DB) error { // We only need to delete from the modules table. Thanks to ON DELETE // CASCADE constraints, that will trigger deletions from all other tables. const stmt = `DELETE FROM modules WHERE module_path=$1 AND version=$2` -- cgit v1.3