diff --git a/3ffb6a61130298cd27636df2b64a53e2161cdced.patch b/6509.patch index a24c881c3b..68f54469fe 100644 --- a/3ffb6a61130298cd27636df2b64a53e2161cdced.patch +++ b/6509.patch @@ -1,4 +1,4 @@ -From 3ffb6a61130298cd27636df2b64a53e2161cdced Mon Sep 17 00:00:00 2001 +From bc9e5e8753c33c73303cc0b3c002147053b36d0b Mon Sep 17 00:00:00 2001 From: Brian Goff Date: Wed, 19 Jan 2022 00:23:52 +0000 Subject: [PATCH] shimv2: handle sigint/sigterm @@ -7,59 +7,48 @@ This causes sigint/sigterm to trigger a shutdown of the shim. It is needed because otherwise the v2 shim hangs system shutdown. Signed-off-by: Brian Goff +(cherry picked from commit 3ffb6a61130298cd27636df2b64a53e2161cdced) +Signed-off-by: Varsha Teratipally --- - runtime/v2/shim/shim.go | 10 ++++++---- - runtime/v2/shim/shim_unix.go | 20 +++++++++++++++++++- - runtime/v2/shim/shim_windows.go | 5 ++++- - 3 files changed, 29 insertions(+), 6 deletions(-) + runtime/v2/shim/shim.go | 6 ++++-- + runtime/v2/shim/shim_unix.go | 21 ++++++++++++++++++++- + runtime/v2/shim/shim_windows.go | 6 +++++- + 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/runtime/v2/shim/shim.go b/runtime/v2/shim/shim.go -index 289b489d648..59e522cede4 100644 +index c14aacca99b..fbdee6047a2 100644 --- a/runtime/v2/shim/shim.go +++ b/runtime/v2/shim/shim.go -@@ -305,7 +305,7 @@ func run(ctx context.Context, manager Manager, initFunc Init, name string, confi +@@ -214,7 +214,7 @@ func run(id string, initFunc Init, config Config) error { "pid": os.Getpid(), "namespace": namespaceFlag, }) - go handleSignals(ctx, logger, signals) + go reap(ctx, logger, signals) - ss, err := manager.Stop(ctx, id) + response, err := service.Cleanup(ctx) if err != nil { return err -@@ -428,7 +428,7 @@ func run(ctx context.Context, manager Manager, initFunc Init, name string, confi - } - } - -- if err := serve(ctx, server, signals); err != nil { -+ if err := serve(ctx, server, signals, sd.Shutdown); err != nil { - if err != shutdown.ErrShutdown { - return err - } -@@ -450,7 +450,7 @@ func run(ctx context.Context, manager Manager, initFunc Init, name string, confi - - // serve serves the ttrpc API over a unix socket in the current working directory - // and blocks until the context is canceled --func serve(ctx context.Context, server *ttrpc.Server, signals chan os.Signal) error { -+func serve(ctx context.Context, server *ttrpc.Server, signals chan os.Signal, shutdown func()) error { - dump := make(chan os.Signal, 32) - setupDumpStacks(dump) - -@@ -480,7 +480,9 @@ func serve(ctx context.Context, server *ttrpc.Server, signals chan os.Signal) er +@@ -310,7 +310,9 @@ func (s *Client) Serve() error { dumpStacks(logger) } }() -- return handleSignals(ctx, logger, signals) -+ -+ go handleExitSignals(ctx, logger, shutdown) -+ return reap(ctx, logger, signals) +- return handleSignals(s.context, logger, s.signals) ++ ctx, cancel := context.WithCancel(s.context) ++ go handleExitSignals(ctx, logger, cancel) ++ return reap(ctx, logger, s.signals) } - func dumpStacks(logger *logrus.Entry) { + // serve serves the ttrpc API over a unix socket at the provided path diff --git a/runtime/v2/shim/shim_unix.go b/runtime/v2/shim/shim_unix.go -index 0701fdc6f64..e2dab0931ea 100644 +index a61b6420892..56505a89444 100644 --- a/runtime/v2/shim/shim_unix.go +++ b/runtime/v2/shim/shim_unix.go -@@ -71,7 +71,7 @@ func serveListener(path string) (net.Listener, error) { +@@ -1,3 +1,4 @@ ++//go:build !windows + // +build !windows + + /* +@@ -70,7 +71,7 @@ func serveListener(path string) (net.Listener, error) { return l, nil } @@ -68,7 +57,7 @@ index 0701fdc6f64..e2dab0931ea 100644 logger.Info("starting signal loop") for { -@@ -79,6 +79,8 @@ func handleSignals(ctx context.Context, logger *logrus.Entry, signals chan os.Si +@@ -78,6 +79,8 @@ func handleSignals(ctx context.Context, logger *logrus.Entry, signals chan os.Si case <-ctx.Done(): return ctx.Err() case s := <-signals: @@ -77,7 +66,7 @@ index 0701fdc6f64..e2dab0931ea 100644 switch s { case unix.SIGCHLD: if err := reaper.Reap(); err != nil { -@@ -90,6 +92,22 @@ func handleSignals(ctx context.Context, logger *logrus.Entry, signals chan os.Si +@@ -89,6 +92,22 @@ func handleSignals(ctx context.Context, logger *logrus.Entry, signals chan os.Si } } @@ -101,10 +90,15 @@ index 0701fdc6f64..e2dab0931ea 100644 return fifo.OpenFifoDup2(ctx, "log", unix.O_WRONLY, 0700, int(os.Stderr.Fd())) } diff --git a/runtime/v2/shim/shim_windows.go b/runtime/v2/shim/shim_windows.go -index 4eef8c9ffec..4b098ab1630 100644 +index 7339eb2a2e4..4f8a944d154 100644 --- a/runtime/v2/shim/shim_windows.go +++ b/runtime/v2/shim/shim_windows.go -@@ -46,10 +46,13 @@ func serveListener(path string) (net.Listener, error) { +@@ -1,3 +1,4 @@ ++//go:build windows + // +build windows + + /* +@@ -48,10 +49,13 @@ func serveListener(path string) (net.Listener, error) { return nil, errors.New("not supported") }