From a67aa7573de80382d74c0eb1e505f56cc39d6b2a Mon Sep 17 00:00:00 2001 From: Julie Qiu Date: Thu, 16 Apr 2020 21:18:33 -0400 Subject: 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 --- internal/postgres/insert_module.go | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'internal/postgres/insert_module.go') 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 -- cgit v1.3-5-g9baa