1111{-# LANGUAGE NamedFieldPuns #-}
1212{-# LANGUAGE PatternSynonyms #-}
1313{-# LANGUAGE RankNTypes #-}
14+ {-# LANGUAGE RecursiveDo #-}
1415{-# LANGUAGE ScopedTypeVariables #-}
1516{-# LANGUAGE TypeApplications #-}
1617{-# LANGUAGE TypeOperators #-}
@@ -37,6 +38,7 @@ import Cardano.Node.Startup
3738import Cardano.Node.Tracing.NodeInfo ()
3839import Ouroboros.Network.IOManager (IOManager )
3940
41+ import Control.Exception (SomeException (.. ))
4042import Control.Monad (forM , guard )
4143import Data.Aeson as A
4244import qualified Data.Aeson.KeyMap as KeyMap
@@ -85,9 +87,9 @@ initNullTracers = BenchTracers
8587-- if the first argument isJust, we assume we have a socket path
8688-- and want to use trace-dispatcher, so we'll create a forwarding tracer
8789initTxGenTracers :: Maybe (IOManager , NetworkId , FilePath ) -> IO BenchTracers
88- initTxGenTracers mbForwarding = do
90+ initTxGenTracers mbForwarding = mdo
8991 mbStdoutTracer <- fmap Just standardTracer
90- mbForwardingTracer <- prepareForwardingTracer
92+ mbForwardingTracer <- prepareForwardingTracer tracers
9193 confState <- emptyConfigReflection
9294
9395 let
@@ -108,26 +110,30 @@ initTxGenTracers mbForwarding = do
108110 connectTracer <- mkTracer TracerNameConnect mbStdoutTracer mbForwardingTracer
109111 submitTracer <- mkTracer TracerNameSubmit mbStdoutTracer mbForwardingTracer
110112
111- traceWith benchTracer (TraceTxGeneratorVersion Version. txGeneratorVersion)
112-
113- return $ BenchTracers
114- { btTxSubmit_ = benchTracer
115- , btConnect_ = connectTracer
116- , btSubmission2_ = submitTracer
117- , btN2N_ = n2nSubmitTracer
118- }
113+ let
114+ tracers = BenchTracers
115+ { btTxSubmit_ = benchTracer
116+ , btConnect_ = connectTracer
117+ , btSubmission2_ = submitTracer
118+ , btN2N_ = n2nSubmitTracer
119+ }
120+
121+ traceWith (btTxSubmit_ tracers) (TraceTxGeneratorVersion Version. txGeneratorVersion)
122+ return tracers
119123 where
120- prepareForwardingTracer :: IO (Maybe (Trace IO FormattedMessage ))
121- prepareForwardingTracer = forM mbForwarding $
124+ prepareForwardingTracer :: BenchTracers -> IO (Maybe (Trace IO FormattedMessage ))
125+ prepareForwardingTracer benchTracer = forM mbForwarding $
122126 \ (iomgr, networkId, tracerSocket) -> do
123127 let
124128 forwardingConf = fromMaybe defaultForwarder (tcForwarder initialTraceConfig)
129+ howToConnect = Net. LocalPipe tracerSocket
125130 initForwConf = InitForwardingWith
126131 { initNetworkMagic = toNetworkMagic networkId
127132 , initEKGStore = Nothing
128- , initHowToConnect = Net. LocalPipe tracerSocket
133+ , initHowToConnect = howToConnect
129134 , initForwarderMode = Initiator
130- , initOnForwardInterruption = Nothing
135+ , initOnForwardInterruption = Just $ \ (SomeException e) ->
136+ traceWith (btTxSubmit_ benchTracer) (TraceBenchForwardingInterrupted howToConnect $ show e)
131137 , initOnQueueOverflow = Nothing
132138 }
133139 (forwardSink, dpStore, kickoffForwarder) <-
@@ -214,8 +220,14 @@ instance (ConstructorsOf f, ConstructorsOf g) => ConstructorsOf (f :+: g) where
214220instance (Constructor ('MetaCons n f r )) => ConstructorsOf (C1 ('MetaCons n f r ) x ) where
215221 constructorsOf _ = [ conName @ ('MetaCons n f r ) undefined ]
216222
223+
217224instance LogFormatting (TraceBenchTxSubmit TxId ) where
218- forHuman = Text. pack . show
225+ forHuman = \ case
226+ TraceBenchForwardingInterrupted howToConnect errMsg ->
227+ Text. pack $ " trace forwarding connection with " <> show howToConnect <> " failed: " <> errMsg
228+ _
229+ -> " "
230+
219231 forMachine DMinimal _ = mempty
220232 forMachine DNormal t = mconcat [ " kind" .= A. String (genericName t) ]
221233 forMachine DDetailed t = forMachine DMaximum t
@@ -285,6 +297,11 @@ instance LogFormatting (TraceBenchTxSubmit TxId) where
285297 mconcat [ " kind" .= A. String " TraceBenchPlutusBudgetSummary"
286298 , " summary" .= toJSON summary
287299 ]
300+ TraceBenchForwardingInterrupted howToConnect msg ->
301+ mconcat [ " kind" .= A. String " TraceBenchForwardingInterrupted"
302+ , " conn" .= howToConnect
303+ , " msg" .= msg
304+ ]
288305
289306instance MetaTrace (TraceBenchTxSubmit TxId ) where
290307 namespaceFor TraceTxGeneratorVersion {} = Namespace [] [" TxGeneratorVersion" ]
@@ -304,6 +321,7 @@ instance MetaTrace (TraceBenchTxSubmit TxId) where
304321 namespaceFor TraceBenchTxSubDebug {} = Namespace [] [" BenchTxSubDebug" ]
305322 namespaceFor TraceBenchTxSubError {} = Namespace [] [" BenchTxSubError" ]
306323 namespaceFor TraceBenchPlutusBudgetSummary {} = Namespace [] [" BenchPlutusBudgetSummary" ]
324+ namespaceFor TraceBenchForwardingInterrupted {} = Namespace [] [" ForwardingInterrupted" ]
307325
308326 severityFor _ _ = Just Info
309327
@@ -327,6 +345,7 @@ instance MetaTrace (TraceBenchTxSubmit TxId) where
327345 , Namespace [] [" BenchTxSubDebug" ]
328346 , Namespace [] [" BenchTxSubError" ]
329347 , Namespace [] [" BenchPlutusBudgetSummary" ]
348+ , Namespace [] [" ForwardingInterrupted" ]
330349 ]
331350
332351instance LogFormatting NodeToNodeSubmissionTrace where
0 commit comments