commit 1951910a2e7788c7a3d2fe2732f5e4df9c9698fc
parent edf77a3c3815a962d7f3801063ba10d3d48f8f7b
Author: Matsuda Kenji <info@mtkn.jp>
Date: Fri, 22 Dec 2023 14:38:52 +0900
add goroutine count for debugging
Diffstat:
2 files changed, 14 insertions(+), 0 deletions(-)
diff --git a/cmd/diskfs/main.go b/cmd/diskfs/main.go
@@ -13,7 +13,9 @@ import (
_ "net/http/pprof"
"os"
"os/signal"
+ "runtime"
"sync"
+ "time"
"git.mtkn.jp/lib9p"
"git.mtkn.jp/lib9p/diskfs"
@@ -22,6 +24,7 @@ import (
var dFlag = flag.Bool("D", false, "Prints chatty message to the stderr.")
var aFlag = flag.String("a", "127.0.0.1", "Address the server listens to.")
var pFlag = flag.Int("p", 5640, "Port number the server listens to.")
+var gFlag = flag.Bool("g", false, "Prints goroutin count once per second.")
func main() {
go func() {
@@ -32,6 +35,14 @@ func main() {
fmt.Fprintf(os.Stderr, "usage: %s [-D] [-a <addr>] [-p <port>] <root>\n", os.Args[0])
os.Exit(1)
}
+ if *gFlag {
+ go func() {
+ for {
+ log.Printf("num goroutine: %d", runtime.NumGoroutine())
+ time.Sleep(1 * time.Second)
+ }
+ }()
+ }
listener, err := net.Listen("tcp", fmt.Sprintf("%s:%d", *aFlag, *pFlag))
if err != nil {
log.Fatalf("listen tcp: %v", err)
diff --git a/server.go b/server.go
@@ -413,6 +413,9 @@ func rFlush(ctx context.Context, c <-chan *Req) {
case <-ctx.Done():
return
case r := <-c:
+ if r == nil {
+ return
+ }
if r.err != nil {
panic(fmt.Errorf("err in flush: %v", r.err))
}