Currently, in http mode the server blocks until the corpus
has been initialized. This can cause considerable delay
if the user workspace is significantly large and the files
are not present in the buffer cache.
This CL spawns off the initialization in a separate goroutine
if httpMode is set and turns on a flag when it's done.
The http handler checks the flag and returns an error response
if it has not been set.
The check is only performed for the path prefixes handled by the
handlerServer struct. Other paths do not call the GetPageInfo() function
and hence can return immediately. This preserves maximum responsiveness
of the server.
Also adds an additional print statement in verbose mode
Note: This is a re-do of a previous CL golang.org/cl/88695 which was
incorrect committed without running tests. This CL fixes that test.
Fixes golang/go#13278
Change-Id: I80c801f32af007312090d3783a2ea2c6f92cad66
Reviewed-on: https://go-review.googlesource.com/93215
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
(cherry picked from commit
|
||
|---|---|---|
| .. | ||
| analysis | ||
| dl | ||
| proxy | ||
| redirect | ||
| short | ||
| static | ||
| util | ||
| vfs | ||
| README.md | ||
| appengine.go | ||
| cmdline.go | ||
| cmdline_test.go | ||
| corpus.go | ||
| dirtrees.go | ||
| format.go | ||
| godoc.go | ||
| godoc17_test.go | ||
| godoc_test.go | ||
| index.go | ||
| index_test.go | ||
| linkify.go | ||
| meta.go | ||
| page.go | ||
| parser.go | ||
| pres.go | ||
| search.go | ||
| server.go | ||
| snippet.go | ||
| spec.go | ||
| spot.go | ||
| tab.go | ||
| template.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.