@@ -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
@@ -388,7 +392,7 @@ mkTracers blockConfig tOpts@(TracingOnLegacy trSel) tr nodeKern ekgDirect = do
388392
389393 diffusionTracers :: Cardano.Diffusion. CardanoTracers IO
390394 diffusionTracers = Cardano.Diffusion. Tracers
391- { Diffusion. dtMuxTracer = muxTracer
395+ { Diffusion. dtMuxTracer = muxTracer ekgDirect trSel tr
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,32 @@ mkTracers _ _ _ _ _ =
537539 , ledgerMetricsTracer = nullTracer
538540 }
539541
542+ --------------------------------------------------------------------------------
543+ -- Diffusion Layer Tracers
544+ --------------------------------------------------------------------------------
545+
546+ notifyTxsMempoolTimeoutHard :: Maybe EKGDirect -> Tracer IO Mux. Trace
547+ notifyTxsMempoolTimeoutHard mbEKGDirect = case mbEKGDirect of
548+ Nothing -> nullTracer
549+ Just ekgDirect -> Tracer $ \ ev -> do
550+ when (DiffusionTracers. impliesMempoolTimeoutHard ev) $ do
551+ sendEKGDirectCounter ekgDirect DiffusionTracers. txsMempoolTimeoutHardCounterName
552+
553+ muxTracer
554+ :: Maybe EKGDirect
555+ -> TraceSelection
556+ -> Trace IO Text
557+ -> Tracer IO (Mux. WithBearer (ConnectionId RemoteAddress ) Mux. Trace )
558+ muxTracer mbEKGDirect trSel tracer = Tracer $ \ ev -> do
559+ -- Update the EKG metric even when this tracer is turned off.
560+ flip traceWith (Mux. wbEvent ev) $
561+ notifyTxsMempoolTimeoutHard mbEKGDirect
562+ whenOn (traceMux trSel) $ do
563+ flip traceWith ev $
564+ annotateSeverity $
565+ toLogObject' (traceVerbosity trSel) $
566+ appendName " Mux" tracer
567+
540568--------------------------------------------------------------------------------
541569-- Chain DB Tracers
542570--------------------------------------------------------------------------------
@@ -796,7 +824,7 @@ mkConsensusTracers mbEKGDirect trSel verb tr nodeKern fStats = do
796824
797825 , Consensus. txOutboundTracer = tracerOnOff (traceTxOutbound trSel) verb " TxOutbound" tr
798826 , Consensus. localTxSubmissionServerTracer = tracerOnOff (traceLocalTxSubmissionServer trSel) verb " LocalTxSubmissionServer" tr
799- , Consensus. mempoolTracer = tracerOnOff' (traceMempool trSel) $ mempoolTracer trSel tr fStats
827+ , Consensus. mempoolTracer = mempoolTracer mbEKGDirect trSel tr fStats
800828 , Consensus. forgeTracer = tracerOnOff' (traceForge trSel) $
801829 Tracer $ \ tlcev@ Consensus. TraceLabelCreds {} -> do
802830 traceWith (annotateSeverity
@@ -1243,6 +1271,15 @@ notifyBlockForging fStats tr = Tracer $ \case
12431271-- Mempool Tracers
12441272--------------------------------------------------------------------------------
12451273
1274+ notifyTxsMempoolTimeoutSoft ::
1275+ Maybe EKGDirect
1276+ -> Tracer IO (TraceEventMempool blk )
1277+ notifyTxsMempoolTimeoutSoft mbEKGDirect = case mbEKGDirect of
1278+ Nothing -> nullTracer
1279+ Just ekgDirect -> Tracer $ \ ev -> do
1280+ when (ConsensusTracers. impliesMempoolTimeoutSoft ev) $ do
1281+ sendEKGDirectCounter ekgDirect ConsensusTracers. txsMempoolTimeoutSoftCounterName
1282+
12461283notifyTxsProcessed :: ForgingStats -> Trace IO Text -> Tracer IO (TraceEventMempool blk )
12471284notifyTxsProcessed fStats tr = Tracer $ \ case
12481285 TraceMempoolRemoveTxs [] _ -> return ()
@@ -1263,9 +1300,9 @@ mempoolMetricsTraceTransformer :: Trace IO a -> Tracer IO (TraceEventMempool blk
12631300mempoolMetricsTraceTransformer tr = Tracer $ \ mempoolEvent -> do
12641301 let tr' = appendName " metrics" tr
12651302 (_n, tot_m) = case mempoolEvent of
1266- TraceMempoolAddedTx _tx0 _ tot0 -> (1 , Just tot0)
1303+ TraceMempoolAddedTx _tx0 _ tot0 -> (1 , Just tot0)
12671304 TraceMempoolRejectedTx _tx0 _ _ tot0 -> (1 , Just tot0)
1268- TraceMempoolRemoveTxs txs0 tot0 -> (length txs0, Just tot0)
1305+ TraceMempoolRemoveTxs txs0 tot0 -> (length txs0, Just tot0)
12691306 TraceMempoolManuallyRemovedTxs txs0 txs1 tot0 -> ( length txs0 + length txs1, Just tot0)
12701307 TraceMempoolSynced _ -> (0 , Nothing )
12711308 _ -> (0 , Nothing )
@@ -1287,15 +1324,19 @@ mempoolTracer
12871324 , LedgerSupportsMempool blk
12881325 , ConvertRawHash blk
12891326 )
1290- => TraceSelection
1327+ => Maybe EKGDirect
1328+ -> TraceSelection
12911329 -> Trace IO Text
12921330 -> ForgingStats
12931331 -> Tracer IO (TraceEventMempool blk )
1294- mempoolTracer tc tracer fStats = Tracer $ \ ev -> do
1295- traceWith (mempoolMetricsTraceTransformer tracer) ev
1296- traceWith (notifyTxsProcessed fStats tracer) ev
1297- let tr = appendName " Mempool" tracer
1298- traceWith (mpTracer tc tr) ev
1332+ mempoolTracer mbEKGDirect tc tracer fStats = Tracer $ \ ev -> do
1333+ -- Update the EKG metric even when this tracer is turned off.
1334+ traceWith (notifyTxsMempoolTimeoutSoft mbEKGDirect) ev
1335+ whenOn (traceMempool tc) $ do
1336+ traceWith (mempoolMetricsTraceTransformer tracer) ev
1337+ traceWith (notifyTxsProcessed fStats tracer) ev
1338+ let tr = appendName " Mempool" tracer
1339+ traceWith (mpTracer tc tr) ev
12991340
13001341mpTracer :: ( ToJSON (GenTxId blk )
13011342 , ToObject (ApplyTxErr blk )
@@ -1788,6 +1829,9 @@ tracerOnOff'
17881829tracerOnOff' (OnOff False ) _ = nullTracer
17891830tracerOnOff' (OnOff True ) tr = tr
17901831
1832+ whenOn :: Monad m => OnOff b -> m () -> m ()
1833+ whenOn (OnOff b) = when b
1834+
17911835instance Show a => Show (WithSeverity a ) where
17921836 show (WithSeverity _sev a) = show a
17931837
0 commit comments