go
go copied to clipboard
x/tools/gopls: combine -debug HTTP server and product (doc, asm, free symbols) web server
It is unnecessary that gopls creates two HTTP servers, one for debugging and one for the "product" (as used by the doc, assembly, and free-symbols code actions). We should combine them, and also start the combined server early, during startup (reducing the need for later error handling).
@findleyr suggests that if the user provides a -debug flag, we should use that for the combined server instead of the ephemeral random port + secret endpoint that we currently use.
To summarize, here are reasons to do this:
- Persistent links for interacting with gopls across sessions.
- Earlier error handling if the web server can't be started.
- Improved discoverability of debugging features.
The last is a bit nebulous: our current -debug pages are rather thrown-together out of expedience: we needed to be able to interrogate Views, memory usage, traces, and pprof output. If we combine this in a common nav with product facing features, I'm very much imagining a more polished dashboard. While that would be a fun project, it probably has low impact on most users, so is a bit hard to justify. Nevertheless, it's something I've wanted for a while, so may do as a side project.
Final thought: if we do this we should consider deprecating the -debug flag in favor of something like -http.
Change https://go.dev/cl/607015 mentions this issue: jwt: rename ExampleJWTConfig to ExampleConfig to avoid vet error