aboutsummaryrefslogtreecommitdiff
path: root/internal/postgres/versionstate.go
diff options
context:
space:
mode:
authorJulie Qiu <julie@golang.org>2020-04-26 17:46:39 -0400
committerJulie Qiu <julieqiu@google.com>2020-04-29 02:38:31 +0000
commitb6e6498aed5e2b5c8ce2264c52e95d711d97082c (patch)
treef88d1ff3304f124f333e4a33185ec5f032435c26 /internal/postgres/versionstate.go
parent9aba722e352989bc0b8ca432a30575128503cc20 (diff)
downloadgo-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>
Diffstat (limited to 'internal/postgres/versionstate.go')
-rw-r--r--internal/postgres/versionstate.go4
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)