In https://go.dev/issue/50879, we observe ECONNRESET errors from 'dial' in TestRedirect for various paths. That seems to imply that a unique connection is being dialed for each path — but these connections are all going through http.DefaultTransport, which has a 30-second keepalive, and the test takes well under that amount of time to complete. The only reason we would be dialing a connection per request would be if the connection itself leaks — and, indeed, inspecting the test in more detail it fails to close the response body. I don't know why failing to close the response body would lead to ECONNRESET errors, but at the very least fixing that issue should reduce the number of 'dial' operations and thus the number of platform-specific failure modes. Fixes golang/go#50879. (Maybe.) Change-Id: I5af47ee3683c54106424c66e94b021a0ec7e6d2d Reviewed-on: https://go-review.googlesource.com/c/tools/+/381736 Trust: Bryan Mills <bcmills@google.com> Run-TryBot: Bryan Mills <bcmills@google.com> gopls-CI: kokoro <noreply+kokoro@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> |
||
|---|---|---|
| .. | ||
| analysis | ||
| redirect | ||
| static | ||
| util | ||
| vfs | ||
| README.md | ||
| corpus.go | ||
| dirtrees.go | ||
| dirtrees_test.go | ||
| format.go | ||
| godoc.go | ||
| godoc17_test.go | ||
| godoc_test.go | ||
| index.go | ||
| index_test.go | ||
| linkify.go | ||
| markdown.go | ||
| meta.go | ||
| page.go | ||
| parser.go | ||
| pres.go | ||
| search.go | ||
| server.go | ||
| server_test.go | ||
| snippet.go | ||
| spec.go | ||
| spec_test.go | ||
| spot.go | ||
| tab.go | ||
| template.go | ||
| versions.go | ||
| versions_test.go | ||
README.md
godoc
This directory contains most of the code for running a godoc server. The executable lives at golang.org/x/tools/cmd/godoc.
Development mode
In production, CSS/JS/template assets need to be compiled into the godoc binary. It can be tedious to recompile assets every time, but you can pass a flag to load CSS/JS/templates from disk every time a page loads:
godoc -templates=$GOPATH/src/golang.org/x/tools/godoc/static -http=:6060
Recompiling static assets
The files that live at static/style.css, static/jquery.js and so on are not
present in the final binary. They are placed into static/static.go by running
go generate. So to compile a change and test it in your browser:
-
Make changes to e.g.
static/style.css. -
Run
go generate golang.org/x/tools/godoc/staticsostatic/static.gopicks up the change. -
Run
go install golang.org/x/tools/cmd/godocso the compiledgodocbinary picks up the change. -
Run
godoc -http=:6060and view your changes in the browser. You may need to disable your browser's cache to avoid reloading a stale file.