aboutsummaryrefslogtreecommitdiff
path: root/internal/postgres/insert_module.go
diff options
context:
space:
mode:
authorJulie Qiu <julie@golang.org>2020-04-16 21:18:33 -0400
committerJulie Qiu <julieqiu@google.com>2020-04-17 11:59:24 +0000
commita67aa7573de80382d74c0eb1e505f56cc39d6b2a (patch)
treea75bc26c8db35f1aaed4afe62de731e529502a0f /internal/postgres/insert_module.go
parent83419ea86b67c25062aca7a92a6700e42f9f5f78 (diff)
downloadgo-x-pkgsite-a67aa7573de80382d74c0eb1e505f56cc39d6b2a.tar.xz
internal/postgres: fix deadlock on package_imports
There are 500 errors when inserting into package_imports due to deadlines. We had this problem in the past with imports, and sorting by path previously solved the issue. Change-Id: Ia49408d4aa448852434b4dfa2fa6b1261fbfdaee Reviewed-on: https://team-review.git.corp.google.com/c/golang/discovery/+/720664 Reviewed-by: Jonathan Amsterdam <jba@google.com>
Diffstat (limited to 'internal/postgres/insert_module.go')
-rw-r--r--internal/postgres/insert_module.go8
1 files changed, 8 insertions, 0 deletions
diff --git a/internal/postgres/insert_module.go b/internal/postgres/insert_module.go
index 094c106e..a1286390 100644
--- a/internal/postgres/insert_module.go
+++ b/internal/postgres/insert_module.go
@@ -108,6 +108,14 @@ func (db *DB) saveModule(ctx context.Context, m *internal.Module) (err error) {
for _, p := range m.Packages {
sort.Strings(p.Imports)
}
+ sort.Slice(m.Directories, func(i, j int) bool {
+ return m.Directories[i].Path < m.Directories[j].Path
+ })
+ for _, d := range m.Directories {
+ if d.Package != nil && len(d.Package.Imports) > 1 {
+ sort.Strings(d.Package.Imports)
+ }
+ }
return db.db.Transact(ctx, func(tx *database.DB) error {
// If the version exists, delete it to force an overwrite. This allows us