From 5233bb98042feb7e08d4cdbf7426f7d7b3c61f9a Mon Sep 17 00:00:00 2001 From: Artur Troian Date: Mon, 10 Nov 2025 20:12:43 -0600 Subject: [PATCH] refactor: handle context done as sigint signal Signed-off-by: Artur Troian --- cmd/akash/cmd/testnetify/testnetify.go | 4 ++-- cmd/akash/cmd/testnetify/utils.go | 2 +- util/server/utils.go | 12 ++++++++---- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/cmd/akash/cmd/testnetify/testnetify.go b/cmd/akash/cmd/testnetify/testnetify.go index ab7853c22b..0ec2a2ba52 100644 --- a/cmd/akash/cmd/testnetify/testnetify.go +++ b/cmd/akash/cmd/testnetify/testnetify.go @@ -185,7 +185,7 @@ you want to test the upgrade handler itself. getCtx := func(svrCtx *sdksrv.Context, block bool) (*errgroup.Group, context.Context) { g, ctx := errgroup.WithContext(ctx) // listen for quit signals so the calling parent process can gracefully exit - server.ListenForQuitSignals(g, block, cancelFn, svrCtx.Logger) + server.ListenForQuitSignals(ctx, cancelFn, g, block, svrCtx.Logger) return g, ctx } @@ -238,7 +238,7 @@ you want to test the upgrade handler itself. case <-ticker.C: status, err := cctx.Client.Status(ctx) if err == nil && status != nil { - if status.SyncInfo.LatestBlockHeight > h+1 { + if status.SyncInfo.LatestBlockHeight > h+2 { return } } diff --git a/cmd/akash/cmd/testnetify/utils.go b/cmd/akash/cmd/testnetify/utils.go index ca5564eaf0..150256a4fe 100644 --- a/cmd/akash/cmd/testnetify/utils.go +++ b/cmd/akash/cmd/testnetify/utils.go @@ -56,7 +56,7 @@ func getCtx(sctx *sdksrv.Context, block bool) (*errgroup.Group, context.Context) ctx, cancelFn := context.WithCancel(context.Background()) g, ctx := errgroup.WithContext(ctx) // listen for quit signals so the calling parent process can gracefully exit - server.ListenForQuitSignals(g, block, cancelFn, sctx.Logger) + server.ListenForQuitSignals(ctx, cancelFn, g, block, sctx.Logger) return g, ctx } diff --git a/util/server/utils.go b/util/server/utils.go index 98317bc356..527685c08d 100644 --- a/util/server/utils.go +++ b/util/server/utils.go @@ -16,15 +16,19 @@ import ( // // Note, the blocking behavior of this depends on the block argument. // The caller must ensure the corresponding context derived from the cancelFn is used correctly. -func ListenForQuitSignals(g *errgroup.Group, block bool, cancelFn context.CancelFunc, logger log.Logger) { +func ListenForQuitSignals(ctx context.Context, cancelFn context.CancelFunc, g *errgroup.Group, block bool, logger log.Logger) { sigCh := make(chan os.Signal, 1) signal.Notify(sigCh, syscall.SIGINT, syscall.SIGTERM) f := func() { - sig := <-sigCh - cancelFn() + select { + case sig := <-sigCh: + logger.Info("caught signal", "signal", sig.String()) + case <-ctx.Done(): + logger.Info("context canceled") + } - logger.Info("caught signal", "signal", sig.String()) + cancelFn() } if block {