mirror of https://github.com/golang/go.git
internal/lsp/cache: set a 15 minute deadline on calls to packages.Load
We've recently noticed multiple instances of `go list` hanging indefinitely during an initial workspace load. Heschi suggested setting a 5 minute deadline on the IWL, but it seems reasonable to set this deadline on all calls to packages.Load since that calls `go list`. I also started with a 15 minute deadline to be a little more careful. Do you think this is risky enough to merit an experimental setting? Fixes golang/go#42132 Change-Id: I0a38741f3d99b6a38c46c3e663daf61f2cb45581 Reviewed-on: https://go-review.googlesource.com/c/tools/+/266478 Trust: Rebecca Stambler <rstambler@golang.org> Run-TryBot: Rebecca Stambler <rstambler@golang.org> gopls-CI: kokoro <noreply+kokoro@google.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Heschi Kreinick <heschi@google.com>
This commit is contained in:
parent
51cde5226e
commit
8860a70d10
|
|
@ -13,6 +13,7 @@ import (
|
|||
"path/filepath"
|
||||
"sort"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"golang.org/x/tools/go/packages"
|
||||
"golang.org/x/tools/internal/event"
|
||||
|
|
@ -98,6 +99,13 @@ func (s *snapshot) load(ctx context.Context, scopes ...interface{}) error {
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Set a last resort deadline on packages.Load since it calls the go
|
||||
// command, which may hang indefinitely if it has a bug. golang/go#42132
|
||||
// and golang/go#42255 have more context.
|
||||
ctx, cancel := context.WithTimeout(ctx, 15*time.Minute)
|
||||
defer cancel()
|
||||
|
||||
cfg := s.config(ctx, inv)
|
||||
pkgs, err := packages.Load(cfg, query...)
|
||||
cleanup()
|
||||
|
|
|
|||
Loading…
Reference in New Issue