go/internal
Bryan C. Mills 3e8da475a3 internal/jsonrpc2_v2: initiate shutdown when the Writer breaks
Prior to this CL we already shut down a jsonrpc2_v2.Conn when its
Reader breaks, which we expect to be the common shutdown path.
However, with certain kinds of connections (notably those over
stdin+stdout), it is possible for the Writer side to fail while
the Reader remains working.

If the Writer has failed, we have no way to return the required
Response messages for incoming calls, nor to write new Request
messages of our own. Since we have no way to return a response,
we will now mark those incoming calls as canceled.

However, even if the Writer has failed we may still be able to read
the responses for any outgoing calls that are already in flight. When
our in-flight calls complete, we could in theory even continue to
process Notification messages from the Reader; however, those are
unlikely to be useful with half the connection broken. It seems more
helpful — and less surprising — to go ahead and shut down the
connection completely when it becomes idle.

Updates golang/go#46520.
Updates golang/go#49387.

Change-Id: I713f172ca7031f4211da321560fe7eae57960a48
Reviewed-on: https://go-review.googlesource.com/c/tools/+/446315
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Alan Donovan <adonovan@google.com>
Auto-Submit: Bryan Mills <bcmills@google.com>
Run-TryBot: Bryan Mills <bcmills@google.com>
2022-10-31 20:24:21 +00:00
..
analysisinternal gopls/.../fillstruct: support generic types 2022-09-30 19:58:05 +00:00
apidiff all: gofmt 2022-04-12 17:53:17 +00:00
bug gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
diff gopls/internal/lsp/source: sort protocol edits 2022-10-11 18:07:12 +00:00
event gopls: migrate internal/lsp to gopls/internal/lsp 2022-09-07 16:44:44 +00:00
facts internal/facts: share go/analysis/internal/facts with gopls 2022-10-25 15:31:58 +00:00
fakenet
fastwalk internal/fastwalk: improve Darwin performance by ~3x 2022-10-13 16:31:57 +00:00
fuzzy gopls/.../fillstruct: support generic types 2022-09-30 19:58:05 +00:00
gocommand go/packages: issue error if 'go list' on PATH is too new 2022-09-28 14:34:08 +00:00
gopathwalk internal/gopathwalk: remove unnecessary call to os.Lstat 2022-03-31 05:33:07 +00:00
goroot go/internal/gcimporter: update to anticipate missing targets and .as 2022-10-26 20:17:01 +00:00
imports internal/imports: repair warnings from default analyzers 2022-10-19 15:24:07 +00:00
jsonrpc2 all: use constant to avoid repeated definitions 2022-09-19 15:32:23 +00:00
jsonrpc2_v2 internal/jsonrpc2_v2: initiate shutdown when the Writer breaks 2022-10-31 20:24:21 +00:00
loopclosure go/analysis/passes/loopclosure: experiment with checking t.Run+Parallel 2022-09-20 22:09:32 +00:00
memoize internal/memoize: fix race in Store.Promise 2022-07-28 15:35:11 +00:00
packagesinternal x/tools/go/packages: on Go 1.19+, explicitly ask for -json fields needed 2022-04-19 17:08:06 +00:00
persistent internal/lsp/cache: use GetHandle not Bind for 5 URI-keyed maps 2022-07-07 16:57:02 +00:00
proxydir
stack all: gofmt 2022-04-12 17:53:17 +00:00
testenv go/internal/gcimporter: update to anticipate missing targets and .as 2022-10-26 20:17:01 +00:00
tool internal/tool: implement structured help command 2022-05-04 22:58:41 +00:00
typeparams x/tools/internal/typeparams: use regexp to match wanted result 2022-09-02 19:06:05 +00:00
typesinternal internal/typesinternal: update typesinternal for 1.18 2022-02-22 16:42:18 +00:00
xcontext