From 4fca458295bb08f509792c8191b2a9fe9a02086d Mon Sep 17 00:00:00 2001 From: Qiu Jian Date: Tue, 16 Jun 2026 00:22:42 +0800 Subject: [PATCH] fix: signal trap with signalutils --- pkg/agent/server/ovn.go | 5 +++++ pkg/agent/server/service.go | 14 ++++++-------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/pkg/agent/server/ovn.go b/pkg/agent/server/ovn.go index 39f0a7a9b..e352959a6 100644 --- a/pkg/agent/server/ovn.go +++ b/pkg/agent/server/ovn.go @@ -98,6 +98,8 @@ func (man *ovnMan) Start(ctx context.Context) { man.refresh(ctx) case <-ctx.Done(): log.Infof("ovn man bye") + close(man.c) + man.c = nil return } } @@ -410,6 +412,9 @@ func (man *ovnMan) SetHostId(ctx context.Context, hostId string) { } func (man *ovnMan) SetGuestNICs(ctx context.Context, guestId string, nics []*utils.GuestNIC) { + if man.c == nil { + return + } req := &ovnReq{ ctx: ctx, guestId: guestId, diff --git a/pkg/agent/server/service.go b/pkg/agent/server/service.go index 9f55b2854..c1bc79315 100644 --- a/pkg/agent/server/service.go +++ b/pkg/agent/server/service.go @@ -18,7 +18,6 @@ import ( "context" "fmt" "os" - "os/signal" "syscall" "yunion.io/x/log" @@ -85,14 +84,13 @@ func StartService() { log.Warningf("host config content changed") s.Stop() }) - go func() { - sigChan := make(chan os.Signal, 1) - signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM) - defer signal.Stop(sigChan) - sig := <-sigChan - log.Infof("signal received: %s", sig) + signalutils.SetDumpStackSignal() + quitSignals := []os.Signal{syscall.SIGHUP, syscall.SIGINT, syscall.SIGQUIT, syscall.SIGTERM} + signalutils.RegisterSignal(func() { + log.Infof("signal received") s.Stop() - }() + }, quitSignals...) + signalutils.StartTrap() if err := s.Start(ctx); err != nil { log.Warningf("Start server error: %v", err) }