diff --git a/cmd/godoc/main.go b/cmd/godoc/main.go index c59c0df89b..227e29b148 100644 --- a/cmd/godoc/main.go +++ b/cmd/godoc/main.go @@ -153,13 +153,6 @@ func handleURLFlag() { log.Fatalf("too many redirects") } -func initCorpus(corpus *godoc.Corpus) { - err := corpus.Init() - if err != nil { - log.Fatal(err) - } -} - func main() { flag.Usage = usage flag.Parse() @@ -238,10 +231,8 @@ func main() { corpus.IndexEnabled = true } if *writeIndex || httpMode || *urlFlag != "" { - if httpMode { - go initCorpus(corpus) - } else { - initCorpus(corpus) + if err := corpus.Init(); err != nil { + log.Fatal(err) } } @@ -332,9 +323,6 @@ func main() { } // Start http server. - if *verbose { - log.Println("starting http server") - } if err := http.ListenAndServe(*httpAddr, handler); err != nil { log.Fatalf("ListenAndServe %s: %v", *httpAddr, err) } diff --git a/godoc/corpus.go b/godoc/corpus.go index 8e38365a95..f2c7ebbf37 100644 --- a/godoc/corpus.go +++ b/godoc/corpus.go @@ -7,7 +7,6 @@ package godoc import ( "errors" pathpkg "path" - "sync" "time" "golang.org/x/tools/godoc/analysis" @@ -104,10 +103,6 @@ type Corpus struct { // Analysis is the result of type and pointer analysis. Analysis analysis.Result - - // flag to check whether a corpus is initialized or not - initMu sync.RWMutex - initDone bool } // NewCorpus returns a new Corpus from a filesystem. @@ -141,15 +136,13 @@ func (c *Corpus) FSModifiedTime() time.Time { // Init initializes Corpus, once options on Corpus are set. // It must be called before any subsequent method calls. func (c *Corpus) Init() error { + // TODO(bradfitz): do this in a goroutine because newDirectory might block for a long time? + // It used to be sometimes done in a goroutine before, at least in HTTP server mode. if err := c.initFSTree(); err != nil { return err } c.updateMetadata() go c.refreshMetadataLoop() - - c.initMu.Lock() - c.initDone = true - c.initMu.Unlock() return nil } diff --git a/godoc/server.go b/godoc/server.go index 3ebff5c52d..3b452e5eda 100644 --- a/godoc/server.go +++ b/godoc/server.go @@ -7,7 +7,6 @@ package godoc import ( "bytes" "encoding/json" - "errors" "fmt" "go/ast" "go/build" @@ -249,12 +248,6 @@ func (h *handlerServer) ServeHTTP(w http.ResponseWriter, r *http.Request) { } relpath := pathpkg.Clean(r.URL.Path[len(h.stripPrefix)+1:]) - - if !h.corpusInitialized() { - h.p.ServeError(w, r, relpath, errors.New("Scan is not yet complete. Please retry after a few moments")) - return - } - abspath := pathpkg.Join(h.fsRoot, relpath) mode := h.p.GetPageInfoMode(r) if relpath == builtinPkgPath { @@ -329,12 +322,6 @@ func (h *handlerServer) ServeHTTP(w http.ResponseWriter, r *http.Request) { }) } -func (h *handlerServer) corpusInitialized() bool { - h.c.initMu.RLock() - defer h.c.initMu.RUnlock() - return h.c.initDone -} - type PageInfoMode uint const (