1
0
mirror of https://github.com/golang/go synced 2024-11-18 17:54:57 -07:00
go/internal
Muir Manders e54115a062 internal/lsp: fix stuck diagnostic messages
The "analyses" cache in lsp/cache.(*Package).GetActionGraph was not
getting cleared on errors. This could result in future calls to
GetActionGraph waiting on the "ready" channel indefinitely. This in
turn caused the goroutine in cacheAndDiagnose to block indefinitely
and never send the diagnostic results back.

Now we use a defer statement to always close the channel. If we did
not succeed, we also clear out the cache entry and set a "succeeded =
false" flag to signal waiters that they need to retry. If in the
future errors other than context.Canceled/Timeout are possible, this
retry behavior may need to be revisited.

Fixes golang/go#30786

Change-Id: Icacc9188f1500b00f2178521ce373a2c1363f932
GitHub-Last-Rev: 7c43afd4286a69b0d35a625716e6934c72c4cef5
GitHub-Pull-Request: golang/tools#91
Reviewed-on: https://go-review.googlesource.com/c/tools/+/173977
Reviewed-by: Rebecca Stambler <rstambler@golang.org>
Run-TryBot: Rebecca Stambler <rstambler@golang.org>
2019-04-25 21:19:06 +00:00
..
apidiff apidiff: represent a Report as a list of Changes 2019-04-22 23:39:26 +00:00
fastwalk internal/fastwalk: avoid slice bounds out of range for long file names 2018-11-12 23:16:31 +00:00
gopathwalk imports: stop using go/packages for modules 2019-01-22 20:29:12 +00:00
jsonrpc2 internal/jsonrpc2: fix bug in direction logging of call responses 2019-04-06 16:55:26 +00:00
lsp internal/lsp: fix stuck diagnostic messages 2019-04-25 21:19:06 +00:00
module imports: stop using go/packages for modules 2019-01-22 20:29:12 +00:00
semver go/packages: add name= query 2018-10-16 20:20:09 +00:00
span internal/span: fix off-by-one in ToUTF16Column 2019-04-24 02:45:18 +00:00
tool internal/tool: add a small package to unify the flag handling across all our tools 2018-12-17 23:08:00 +00:00
txtar imports: stop using go/packages for modules 2019-01-22 20:29:12 +00:00