diff options
| author | Jonathan Amsterdam <jba@google.com> | 2020-05-20 14:57:03 -0400 |
|---|---|---|
| committer | Jonathan Amsterdam <jba@google.com> | 2020-05-21 16:06:32 +0000 |
| commit | 29e65a82241d72d43b809eb5f76f85aaa7777627 (patch) | |
| tree | 36d3981ec42ea3043d324aabb936096a5bc3e36a /internal/postgres/insert_module.go | |
| parent | 1c2626f1192a0cd5e124ea6f1c5a992519c6703c (diff) | |
| download | go-x-pkgsite-29e65a82241d72d43b809eb5f76f85aaa7777627.tar.xz | |
internal/postgres: insert module with serializable transaction
If an experiment flag is set, use a serializable transaction
to insert a module.
Change-Id: Ieca2d5ce68f456d48e69b9de6fc3714a130cbca3
Reviewed-on: https://team-review.git.corp.google.com/c/golang/discovery/+/750955
CI-Result: Cloud Build <devtools-proctor-result-processor@system.gserviceaccount.com>
Reviewed-by: Julie Qiu <julieqiu@google.com>
Diffstat (limited to 'internal/postgres/insert_module.go')
| -rw-r--r-- | internal/postgres/insert_module.go | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/internal/postgres/insert_module.go b/internal/postgres/insert_module.go index 555ccfc6..06fa7f76 100644 --- a/internal/postgres/insert_module.go +++ b/internal/postgres/insert_module.go @@ -70,7 +70,14 @@ func (db *DB) saveModule(ctx context.Context, m *internal.Module) (err error) { ctx, span := trace.StartSpan(ctx, "saveModule") defer span.End() - return db.db.Transact(ctx, func(tx *database.DB) error { + var transact func(context.Context, func(*database.DB) error) error + if experiment.IsActive(ctx, internal.ExperimentInsertSerializable) { + transact = db.db.TransactSerializable + } else { + transact = db.db.Transact + } + + return transact(ctx, func(tx *database.DB) error { moduleID, err := insertModule(ctx, tx, m) if err != nil { return err |
