@@ -43,6 +43,8 @@ import Cardano.Node.Startup
4343import qualified Cardano.Node.STM as STM
4444import Cardano.Node.TraceConstraints
4545import Cardano.Node.Tracing
46+ import qualified Cardano.Node.Tracing.Tracers.Consensus as ConsensusTracers
47+ import qualified Cardano.Node.Tracing.Tracers.Diffusion as DiffusionTracers
4648import Cardano.Node.Tracing.Tracers.NodeVersion
4749import Cardano.Network.Diffusion (CardanoPeerSelectionCounters )
4850import Cardano.Protocol.TPraos.OCert (KESPeriod (.. ))
@@ -80,6 +82,8 @@ import qualified Ouroboros.Consensus.Storage.ChainDB as ChainDB
8082import qualified Ouroboros.Consensus.Storage.LedgerDB as LedgerDB
8183import Ouroboros.Consensus.Util.Enclose
8284
85+ import qualified Network.Mux as Mux
86+
8387import qualified Cardano.Network.Diffusion.Types as Cardano.Diffusion
8488import qualified Cardano.Network.PeerSelection.Governor.Types as Cardano
8589
@@ -345,7 +349,7 @@ mkTracers blockConfig tOpts@(TracingOnLegacy trSel) tr nodeKern ekgDirect = do
345349 , consensusTracers = consensusTracers
346350 , nodeToClientTracers = nodeToClientTracers' trSel verb tr
347351 , nodeToNodeTracers = nodeToNodeTracers' trSel verb tr
348- , diffusionTracers
352+ , diffusionTracers = diffusionTracers fStats
349353 , churnModeTracer
350354 -- TODO: startupTracer should ignore severity level (i.e. it should always
351355 -- be printed)!
@@ -386,9 +390,9 @@ mkTracers blockConfig tOpts@(TracingOnLegacy trSel) tr nodeKern ekgDirect = do
386390 (getCardanoBuildInfo ev)
387391 Nothing -> pure ()
388392
389- diffusionTracers :: Cardano.Diffusion. CardanoTracers IO
390- diffusionTracers = Cardano.Diffusion. Tracers
391- { Diffusion. dtMuxTracer = muxTracer
393+ diffusionTracers :: ForgingStats -> Cardano.Diffusion. CardanoTracers IO
394+ diffusionTracers fStats = Cardano.Diffusion. Tracers
395+ { Diffusion. dtMuxTracer = muxTracer ekgDirect trSel tr fStats
392396 , Diffusion. dtChannelTracer = channelTracer
393397 , Diffusion. dtBearerTracer = bearerTracer
394398 , Diffusion. dtHandshakeTracer = handshakeTracer
@@ -464,8 +468,6 @@ mkTracers blockConfig tOpts@(TracingOnLegacy trSel) tr nodeKern ekgDirect = do
464468 }
465469 verb :: TracingVerbosity
466470 verb = traceVerbosity trSel
467- muxTracer =
468- tracerOnOff (traceMux trSel) verb " Mux" tr
469471 channelTracer =
470472 tracerOnOff (traceMux trSel) verb " MuxChannel" tr
471473 bearerTracer =
@@ -537,6 +539,26 @@ mkTracers _ _ _ _ _ =
537539 , ledgerMetricsTracer = nullTracer
538540 }
539541
542+ --------------------------------------------------------------------------------
543+ -- Diffusion Layer Tracers
544+ --------------------------------------------------------------------------------
545+
546+ muxTracer
547+ :: Maybe EKGDirect
548+ -> TraceSelection
549+ -> Trace IO Text
550+ -> ForgingStats
551+ -> Tracer IO (Mux. WithBearer (ConnectionId RemoteAddress ) Mux. Trace )
552+ muxTracer mbEKGDirect trSel tracer fStats = Tracer $ \ ev -> do
553+ -- Update the EKG tracer even when this tracer is turned off.
554+ flip traceWith (Mux. wbEvent ev) $
555+ notifyTxsMempoolTimeoutHard mbEKGDirect fStats tracer
556+ whenOn (traceMux trSel) $ do
557+ flip traceWith ev $
558+ annotateSeverity $
559+ toLogObject' (traceVerbosity trSel) $
560+ appendName " Mux" tracer
561+
540562--------------------------------------------------------------------------------
541563-- Chain DB Tracers
542564--------------------------------------------------------------------------------
@@ -796,7 +818,7 @@ mkConsensusTracers mbEKGDirect trSel verb tr nodeKern fStats = do
796818
797819 , Consensus. txOutboundTracer = tracerOnOff (traceTxOutbound trSel) verb " TxOutbound" tr
798820 , Consensus. localTxSubmissionServerTracer = tracerOnOff (traceLocalTxSubmissionServer trSel) verb " LocalTxSubmissionServer" tr
799- , Consensus. mempoolTracer = tracerOnOff' (traceMempool trSel) $ mempoolTracer trSel tr fStats
821+ , Consensus. mempoolTracer = mempoolTracer mbEKGDirect trSel tr fStats
800822 , Consensus. forgeTracer = tracerOnOff' (traceForge trSel) $
801823 Tracer $ \ tlcev@ Consensus. TraceLabelCreds {} -> do
802824 traceWith (annotateSeverity
@@ -1243,6 +1265,35 @@ notifyBlockForging fStats tr = Tracer $ \case
12431265-- Mempool Tracers
12441266--------------------------------------------------------------------------------
12451267
1268+ notifyTxsMempoolTimeoutSoft ::
1269+ LedgerSupportsMempool blk
1270+ => Maybe EKGDirect
1271+ -> ForgingStats
1272+ -> Trace IO Text
1273+ -> Tracer IO (TraceEventMempool blk )
1274+ notifyTxsMempoolTimeoutSoft mbEKGDirect fStats tr = case mbEKGDirect of
1275+ Nothing -> nullTracer
1276+ Just ekgDirect -> Tracer $ \ ev -> do
1277+ when (ConsensusTracers. impliesMempoolTimeoutSoft ev) $ do
1278+ n <- incrForgingStatsTxsMempoolTimeoutSoft fStats
1279+ let nm = ConsensusTracers. txsMempoolTimeoutSoftCounterName
1280+ sendEKGDirectCounter ekgDirect nm
1281+ traceCounter nm tr (fromIntegral n)
1282+
1283+ notifyTxsMempoolTimeoutHard ::
1284+ Maybe EKGDirect
1285+ -> ForgingStats
1286+ -> Trace IO Text
1287+ -> Tracer IO Mux. Trace
1288+ notifyTxsMempoolTimeoutHard mbEKGDirect fStats tr = case mbEKGDirect of
1289+ Nothing -> nullTracer
1290+ Just ekgDirect -> Tracer $ \ ev -> do
1291+ when (DiffusionTracers. impliesMempoolTimeoutHard ev) $ do
1292+ n <- incrForgingStatsTxsMempoolTimeoutHard fStats
1293+ let nm = DiffusionTracers. txsMempoolTimeoutHardCounterName
1294+ sendEKGDirectCounter ekgDirect nm
1295+ traceCounter nm tr (fromIntegral n)
1296+
12461297notifyTxsProcessed :: ForgingStats -> Trace IO Text -> Tracer IO (TraceEventMempool blk )
12471298notifyTxsProcessed fStats tr = Tracer $ \ case
12481299 TraceMempoolRemoveTxs [] _ -> return ()
@@ -1287,13 +1338,17 @@ mempoolTracer
12871338 , LedgerSupportsMempool blk
12881339 , ConvertRawHash blk
12891340 )
1290- => TraceSelection
1341+ => Maybe EKGDirect
1342+ -> TraceSelection
12911343 -> Trace IO Text
12921344 -> ForgingStats
12931345 -> Tracer IO (TraceEventMempool blk )
1294- mempoolTracer tc tracer fStats = Tracer $ \ ev -> do
1295- traceWith (mempoolMetricsTraceTransformer tracer) ev
1296- traceWith (notifyTxsProcessed fStats tracer) ev
1346+ mempoolTracer mbEKGDirect tc tracer fStats = Tracer $ \ ev -> do
1347+ -- Update the EKG tracer even when this tracer is turned off.
1348+ traceWith (notifyTxsMempoolTimeoutSoft mbEKGDirect fStats tracer) ev
1349+ whenOn (traceMempool tc) $ do
1350+ traceWith (mempoolMetricsTraceTransformer tracer) ev
1351+ traceWith (notifyTxsProcessed fStats tracer) ev
12971352 let tr = appendName " Mempool" tracer
12981353 traceWith (mpTracer tc tr) ev
12991354
@@ -1788,6 +1843,9 @@ tracerOnOff'
17881843tracerOnOff' (OnOff False ) _ = nullTracer
17891844tracerOnOff' (OnOff True ) tr = tr
17901845
1846+ whenOn :: Monad m => OnOff b -> m () -> m ()
1847+ whenOn (OnOff b) = when b
1848+
17911849instance Show a => Show (WithSeverity a ) where
17921850 show (WithSeverity _sev a) = show a
17931851
0 commit comments