Skip to content

Commit 6a9b76f

Browse files
authored
Merge pull request #6267 from IntersectMBO/baldurb/sigint
cardano-tracer: handle SIGINT same as cardano-node; ignore overflow in Forwarder backend lacking socket config
2 parents 1d7ae2c + 82e363a commit 6a9b76f

File tree

3 files changed

+20
-12
lines changed

3 files changed

+20
-12
lines changed

cardano-tracer/src/Cardano/Tracer/Run.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,8 +154,8 @@ doRunCardanoTracer config rtViewStateDir tr protocolsBrake dpRequestors = do
154154
traceWith tr TracerShutdownInitiated
155155
#if RTVIEW
156156
backupAllHistory tracerEnv tracerEnvRTView
157-
#endif
158157
traceWith tr TracerShutdownHistBackup
158+
#endif
159159
applyBrake (teProtocolsBrake tracerEnv)
160160
traceWith tr TracerShutdownComplete
161161

cardano-tracer/src/Cardano/Tracer/Utils.hs

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -48,14 +48,14 @@ import Cardano.Tracer.MetaTrace hiding (traceWith)
4848
import Cardano.Tracer.Types
4949
import Ouroboros.Network.Socket (ConnectionId (..))
5050

51-
import Control.Concurrent (killThread, mkWeakThreadId, myThreadId)
51+
import Control.Concurrent (mkWeakThreadId, myThreadId)
5252
import Control.Concurrent.Async (Concurrently(..))
5353
import Control.Concurrent.Extra (Lock)
5454
import Control.Concurrent.MVar (newMVar, swapMVar, readMVar, tryReadMVar, modifyMVar_)
5555
import Control.Concurrent.STM (atomically)
5656
import Control.Concurrent.STM.TVar (modifyTVar', stateTVar, readTVarIO, newTVarIO)
57-
import Control.Exception (SomeAsyncException (..), SomeException, finally, fromException,
58-
try, tryJust)
57+
import Control.Exception (SomeAsyncException (..), SomeException, finally,
58+
fromException, try, tryJust, throwTo)
5959
import Control.Monad (forM_)
6060
import Control.Monad.Extra (whenJustM)
6161
import "contra-tracer" Control.Tracer (stdoutTracer, traceWith)
@@ -68,9 +68,10 @@ import Data.List.Extra (dropPrefix, dropSuffix, replace)
6868
import qualified Data.Map.Strict as Map
6969
import qualified Data.Set as S
7070
import qualified Data.Text as T
71+
import System.Exit (ExitCode (ExitSuccess))
7172
import System.IO (hClose, hFlush, stdout)
7273
import System.Mem.Weak (deRefWeak)
73-
import qualified System.Signal as S
74+
import qualified System.Signal as Signal
7475
import System.Time.Extra (sleep)
7576

7677
#if defined(mingw32_HOST_OS)
@@ -243,16 +244,16 @@ beforeProgramStops :: IO () -> IO ()
243244
beforeProgramStops action = do
244245
mainThreadIdWk <- mkWeakThreadId =<< myThreadId
245246
forM_ signals $ \sig ->
246-
S.installHandler sig . const $ do
247+
Signal.installHandler sig \_ -> do
247248
putStrLn " Program is stopping, please wait..."
248249
hFlush stdout
249-
action
250-
`finally` whenJustM (deRefWeak mainThreadIdWk) killThread
250+
action `finally`
251+
whenJustM (deRefWeak mainThreadIdWk) (`throwTo` ExitSuccess)
251252
where
253+
signals :: [Signal.Signal]
252254
signals =
253-
[ S.sigABRT
254-
, S.sigINT
255-
, S.sigTERM
255+
[ Signal.sigINT
256+
, Signal.sigTERM
256257
]
257258

258259
memberRegistry :: Ord a => a -> Registry a b -> IO Bool

trace-dispatcher/src/Cardano/Logging/Forwarding.hs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
{-# LANGUAGE BlockArguments #-}
12
{-# LANGUAGE DataKinds #-}
23
{-# LANGUAGE FlexibleInstances #-}
34
{-# LANGUAGE PackageImports #-}
@@ -38,6 +39,7 @@ import Control.Monad (void)
3839
import Control.Monad.IO.Class
3940
import "contra-tracer" Control.Tracer (Tracer, contramap, nullTracer, stdoutTracer)
4041
import qualified Data.ByteString.Lazy as LBS
42+
import Data.Maybe (isNothing)
4143
import Data.Void (Void, absurd)
4244
import Data.Word (Word16)
4345
import qualified Network.Mux as Mux
@@ -75,7 +77,12 @@ initForwardingDelayed :: forall m. (MonadIO m)
7577
-> Maybe (FilePath, ForwarderMode)
7678
-> m (ForwardSink TraceObject, DataPointStore, IO ())
7779
initForwardingDelayed iomgr config magic ekgStore tracerSocketMode = liftIO $ do
78-
forwardSink <- initForwardSink tfConfig handleOverflow
80+
let ignoreOverflow, onOverflow :: [TraceObject] -> IO ()
81+
ignoreOverflow _ =
82+
pure ()
83+
onOverflow | isNothing tracerSocketMode = ignoreOverflow
84+
| otherwise = handleOverflow
85+
forwardSink <- initForwardSink tfConfig onOverflow
7986
dpStore <- initDataPointStore
8087
let
8188
kickoffForwarder = launchForwarders

0 commit comments

Comments
 (0)