diff options
| author | Julie Qiu <julie@golang.org> | 2020-04-26 17:46:39 -0400 |
|---|---|---|
| committer | Julie Qiu <julieqiu@google.com> | 2020-04-29 02:38:31 +0000 |
| commit | b6e6498aed5e2b5c8ce2264c52e95d711d97082c (patch) | |
| tree | f88d1ff3304f124f333e4a33185ec5f032435c26 | |
| parent | 9aba722e352989bc0b8ca432a30575128503cc20 (diff) | |
| download | go-x-pkgsite-b6e6498aed5e2b5c8ce2264c52e95d711d97082c.tar.xz | |
internal/postgres: sort packageVersionStates
db.UpsertModuleVersionState now sorts packageVersionStates by package
path before sorting to prevent deadlocks.
Change-Id: Ic83f08db343dbd8e8790bddddb66b7bb20ae6d26
Reviewed-on: https://team-review.git.corp.google.com/c/golang/discovery/+/729481
Reviewed-by: Jonathan Amsterdam <jba@google.com>
| -rw-r--r-- | internal/postgres/versionstate.go | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/internal/postgres/versionstate.go b/internal/postgres/versionstate.go index b59f39a9..565b991c 100644 --- a/internal/postgres/versionstate.go +++ b/internal/postgres/versionstate.go @@ -9,6 +9,7 @@ import ( "database/sql" "fmt" "io" + "sort" "strings" "time" @@ -103,6 +104,9 @@ func (db *DB) UpsertModuleVersionState(ctx context.Context, modulePath, vers, ap return nil } + sort.Slice(packageVersionStates, func(i, j int) bool { + return packageVersionStates[i].PackagePath < packageVersionStates[j].PackagePath + }) var vals []interface{} for _, pvs := range packageVersionStates { vals = append(vals, pvs.PackagePath, pvs.ModulePath, pvs.Version, pvs.Status, pvs.Error) |
