go/godoc
Bryan C. Mills 939c2c050f godoc/redirect: close HTTP response bodies in TestRedirect
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>
2022-01-28 18:44:56 +00:00
..
analysis godoc/analysis: remove deprecated analysis package 2021-10-29 00:04:41 +00:00
redirect godoc/redirect: close HTTP response bodies in TestRedirect 2022-01-28 18:44:56 +00:00
static godoc/static: add gopher/pkg.png image 2021-05-07 20:56:39 +00:00
util godoc/util: serve SVG files raw 2019-05-16 01:51:32 +00:00
vfs all: go fmt ./... 2021-02-20 03:28:52 +00:00
README.md godoc: add GoogleCN property to pages 2017-08-02 21:09:52 +00:00
corpus.go godoc: remove Corpus.testDir field 2019-09-24 05:20:46 +00:00
dirtrees.go all: fix some staticcheck errors 2020-01-29 04:53:41 +00:00
dirtrees_test.go godoc: add benchmark for directory scan 2018-04-15 15:36:21 +00:00
format.go godoc: remove leading tabs while formatting text 2019-02-05 05:01:22 +00:00
godoc.go godoc: delete GoogleCN logic 2021-03-12 18:55:53 +00:00
godoc17_test.go all: go fmt ./... 2021-02-20 03:28:52 +00:00
godoc_test.go godoc: skip build tag annotations when displaying examples 2018-07-31 18:38:43 +00:00
index.go all: fix typos in comments 2018-08-10 18:15:57 +00:00
index_test.go x/tools/godoc: gofmt -s -w 2017-02-15 21:42:32 +00:00
linkify.go godoc: use "IsPredeclared" of go/doc 2017-11-15 18:22:28 +00:00
markdown.go godoc: convert Markdown files to HTML during serving 2021-02-12 16:44:11 +00:00
meta.go godoc: convert Markdown files to HTML during serving 2021-02-12 16:44:11 +00:00
page.go godoc: delete GoogleCN logic 2021-03-12 18:55:53 +00:00
parser.go godoc: re-add test for ignoring //line comments in source code 2019-05-28 20:18:05 +00:00
pres.go cmd/godoc, godoc/static: remove remnants of golang.org website 2019-11-20 19:55:55 +00:00
search.go godoc: delete GoogleCN logic 2021-03-12 18:55:53 +00:00
server.go godoc: fix addNames for generics 2022-01-06 16:18:51 +00:00
server_test.go godoc: fix addNames for generics 2022-01-06 16:18:51 +00:00
snippet.go godoc: add version info for struct fields 2018-07-17 23:22:00 +00:00
spec.go godoc: accept scanner.RawString too during EBNF parsing 2018-06-25 04:25:21 +00:00
spec_test.go godoc: accept scanner.RawString too during EBNF parsing 2018-06-25 04:25:21 +00:00
spot.go
tab.go godoc: add missing copyright 2015-04-27 04:29:37 +00:00
template.go godoc: fix test failure 2018-06-13 15:25:43 +00:00
versions.go godoc: show earliest version when identifier was added 2021-02-09 00:10:52 +00:00
versions_test.go godoc: show earliest version when identifier was added 2021-02-09 00:10:52 +00:00

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:

  1. Make changes to e.g. static/style.css.

  2. Run go generate golang.org/x/tools/godoc/static so static/static.go picks up the change.

  3. Run go install golang.org/x/tools/cmd/godoc so the compiled godoc binary picks up the change.

  4. Run godoc -http=:6060 and view your changes in the browser. You may need to disable your browser's cache to avoid reloading a stale file.