diff options
| author | Julie Qiu <julie@golang.org> | 2020-04-16 21:18:33 -0400 |
|---|---|---|
| committer | Julie Qiu <julieqiu@google.com> | 2020-04-17 11:59:24 +0000 |
| commit | a67aa7573de80382d74c0eb1e505f56cc39d6b2a (patch) | |
| tree | a75bc26c8db35f1aaed4afe62de731e529502a0f /internal/postgres/insert_module.go | |
| parent | 83419ea86b67c25062aca7a92a6700e42f9f5f78 (diff) | |
| download | go-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.go | 8 |
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 |
