Fix start lifecycle

This commit is contained in:
世界
2026-07-15 20:50:36 +08:00
parent e34b57c3b0
commit 2392b176e2
18 changed files with 259 additions and 144 deletions
+10 -10
View File
@@ -1,6 +1,7 @@
package box
import (
"net"
"net/http"
"net/http/pprof"
"runtime"
@@ -17,15 +18,9 @@ import (
"github.com/go-chi/chi/v5"
)
var debugHTTPServer *http.Server
func applyDebugListenOption(options option.DebugOptions) {
if debugHTTPServer != nil {
debugHTTPServer.Close()
debugHTTPServer = nil
}
func startDebugHTTPServer(options option.DebugOptions) (*http.Server, error) {
if options.Listen == "" {
return
return nil, nil
}
r := chi.NewMux()
r.Route("/debug", func(r chi.Router) {
@@ -63,14 +58,19 @@ func applyDebugListenOption(options option.DebugOptions) {
r.HandleFunc("/trace", pprof.Trace)
})
})
debugHTTPServer = &http.Server{
server := &http.Server{
Addr: options.Listen,
Handler: r,
}
listener, err := net.Listen("tcp", options.Listen)
if err != nil {
return nil, E.Cause(err, "listen debug HTTP server")
}
go func() {
err := debugHTTPServer.ListenAndServe()
err := server.Serve(listener)
if err != nil && !E.IsClosed(err) {
log.Error(E.Cause(err, "serve debug HTTP server"))
}
}()
return server, nil
}