From acd4a7c84b45f3020e4f148fc593bb01d3bfc554 Mon Sep 17 00:00:00 2001 From: Aleksandr Soloshenko Date: Mon, 4 May 2026 12:16:49 +0700 Subject: [PATCH] [runnable] log error before shutdown --- runnable.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/runnable.go b/runnable.go index d625ef6..2d2f97e 100644 --- a/runnable.go +++ b/runnable.go @@ -4,14 +4,15 @@ import ( "context" "go.uber.org/fx" + "go.uber.org/zap" ) type Runnable interface { Run(ctx context.Context) error } -func RegisterRunnable[T Runnable]() func(lc fx.Lifecycle, sh fx.Shutdowner, r T) { - return func(lc fx.Lifecycle, sh fx.Shutdowner, r T) { +func RegisterRunnable[T Runnable]() func(logger *zap.Logger, lc fx.Lifecycle, sh fx.Shutdowner, r T) { + return func(logger *zap.Logger, lc fx.Lifecycle, sh fx.Shutdowner, r T) { ctx, cancel := context.WithCancel(context.Background()) waitCh := make(chan struct{}) @@ -19,6 +20,7 @@ func RegisterRunnable[T Runnable]() func(lc fx.Lifecycle, sh fx.Shutdowner, r T) OnStart: func(_ context.Context) error { go func() { if err := r.Run(ctx); err != nil { + logger.Error("runnable failed", zap.Error(err)) _ = sh.Shutdown() } close(waitCh)