maintnerd: reduce some log verbosity, add goroutine handler
Change-Id: Iad57acc5ff889883fed3e85dc1f5b37ac5f72e46
Reviewed-on: https://go-review.googlesource.com/c/build/+/206179
Reviewed-by: Bryan C. Mills <bcmills@google.com>
diff --git a/maintner/maintnerd/gcslog/gcslog.go b/maintner/maintnerd/gcslog/gcslog.go
index c8bf2dd..a6f8076 100644
--- a/maintner/maintnerd/gcslog/gcslog.go
+++ b/maintner/maintnerd/gcslog/gcslog.go
@@ -49,6 +49,7 @@
bucketName string
bucket *storage.BucketHandle
segmentPrefix string
+ debug bool
mu sync.Mutex // guards the following
cond *sync.Cond
@@ -279,7 +280,9 @@
defer gl.mu.Unlock()
for {
if curSize := gl.sumSizeLocked(); curSize != v {
- log.Printf("waitSize fired. from %d => %d", v, curSize)
+ if gl.debug {
+ log.Printf("gcslog: waitSize fired. from %d => %d", v, curSize)
+ }
return true
}
select {
@@ -362,6 +365,11 @@
return len(p), nil
}
+// SetDebug controls whether verbose debugging is enabled on this log.
+//
+// It must only be called before it's used.
+func (gl *GCSLog) SetDebug(v bool) { gl.debug = v }
+
// Log writes m to GCS after the buffer is full or after a periodic flush.
func (gl *GCSLog) Log(m *maintpb.Mutation) error {
data, err := proto.Marshal(m)
diff --git a/maintner/maintnerd/maintnerd.go b/maintner/maintnerd/maintnerd.go
index c271696..b5ca11f 100644
--- a/maintner/maintnerd/maintnerd.go
+++ b/maintner/maintnerd/maintnerd.go
@@ -18,6 +18,7 @@
"net"
"net/http"
"net/http/httptest"
+ _ "net/http/pprof"
"os"
"path/filepath"
"runtime"
@@ -161,6 +162,7 @@
if err != nil {
log.Fatalf("newGCSLog: %v", err)
}
+ gl.SetDebug(*debug)
gl.RegisterHandlers(http.DefaultServeMux)
if *migrateGCSFlag {
diskLog := maintner.NewDiskMutationLogger(*dataDir)
@@ -255,6 +257,9 @@
grpcServer := grpc.NewServer()
apipb.RegisterMaintnerServiceServer(grpcServer, maintapi.NewAPIService(corpus))
http.Handle("/apipb.MaintnerService/", grpcServer)
+ http.HandleFunc("/debug/goroutines", func(w http.ResponseWriter, r *http.Request) {
+ http.Redirect(w, r, "/debug/pprof/goroutine?debug=1", http.StatusFound)
+ })
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
if strings.HasPrefix(r.Header.Get("Content-Type"), "application/grpc") {