diff --git a/cardano-node/src/Cardano/Node/Run.hs b/cardano-node/src/Cardano/Node/Run.hs index 02aa10bbc6a..a5c615bc17f 100644 --- a/cardano-node/src/Cardano/Node/Run.hs +++ b/cardano-node/src/Cardano/Node/Run.hs @@ -127,11 +127,14 @@ runNode cmdPc = do tracers <- mkTracers (ncTraceConfig nc) trace nodeKernelData - peersThread <- Async.async $ handlePeersListSimple trace nodeKernelData - handleSimpleNode p trace tracers nc (setNodeKernel nodeKernelData) - Async.uninterruptibleCancel peersThread + Async.withAsync (handlePeersListSimple trace nodeKernelData) + $ \_peerLogingThread -> + -- We ignore peer loging thread if it dies, but it will be killed + -- when 'handleSimpleNode' terminates. + handleSimpleNode p trace tracers nc (setNodeKernel nodeKernelData) + `finally` + shutdownLoggingLayer loggingLayer - shutdownLoggingLayer loggingLayer logTracingVerbosity :: NodeConfiguration -> Tracer IO String -> IO () logTracingVerbosity nc tracer =