From 5089535fcea56a6cff2657962c713d9993d7962f Mon Sep 17 00:00:00 2001 From: GnomeZworc Date: Sat, 25 Apr 2026 19:45:49 +0200 Subject: [PATCH] gracefull shutdown Signed-off-by: GnomeZworc --- cmd/clonepack/serve.go | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/cmd/clonepack/serve.go b/cmd/clonepack/serve.go index b299869..9846d56 100644 --- a/cmd/clonepack/serve.go +++ b/cmd/clonepack/serve.go @@ -6,6 +6,7 @@ import ( "log" "net/http" "os" + "time" "os/signal" "syscall" @@ -54,7 +55,20 @@ var serveCmd = &cobra.Command{ syncSvc.StartScheduler(ctx, cfg.Sync.IntervalDuration()) addr := fmt.Sprintf("%s:%d", cfg.Server.Host, cfg.Server.Port) - log.Printf("ClonePack listening on %s", addr) - return http.ListenAndServe(addr, router) + srv := &http.Server{Addr: addr, Handler: router} + + go func() { + log.Printf("ClonePack listening on %s", addr) + if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed { + log.Printf("server error: %v", err) + } + }() + + <-ctx.Done() + log.Printf("shutting down...") + + shutdownCtx, cancel2 := context.WithTimeout(context.Background(), 30*time.Second) + defer cancel2() + return srv.Shutdown(shutdownCtx) }, }