Skip to content

Commit 095fe61

Browse files
lehinsneilmayhew
authored andcommitted
Merge pull request #6059 from IntersectMBO/js/nm/release-srp
Fix some tracing instances
2 parents c5bf041 + e6fd702 commit 095fe61

File tree

32 files changed

+2436
-1895
lines changed

32 files changed

+2436
-1895
lines changed

bench/tx-generator/src/Cardano/Benchmarking/Command.hs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ import GHC.Weak as Weak (deRefWeak)
5858
import System.Posix.Signals as Sig (Handler (CatchInfo),
5959
SignalInfo (..), SignalSpecificInfo (..), installHandler,
6060
sigINT, sigTERM)
61-
import Foreign.C (Errno(..))
6261
#if MIN_VERSION_base(4,18,0)
6362
import Data.Maybe as Maybe (fromMaybe)
6463
import GHC.Conc.Sync as Conc (threadLabel)

cabal.project

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,7 @@ package plutus-scripts-bench
6060
constraints:
6161
, wai-extra < 3.1.15
6262
, Cabal < 3.14
63-
, hedgehog-extras ==0.6.4.0
64-
, io-sim ==1.5.1.0
63+
, hedgehog-extras <0.6.5.1
6564

6665
allow-newer:
6766
, katip:Win32
@@ -94,8 +93,8 @@ source-repository-package
9493
source-repository-package
9594
type: git
9695
location: https://github.com/IntersectMBO/ouroboros-consensus.git
97-
tag: a50e092b71daef360c5d86bbbb45e26733797b42
98-
--sha256: sha256-aEXe5LuU1i6NXadSF3ULdKp0l/+gT2a96nWPVPTqBHU=
96+
tag: f2d134da6d6d4f7bcbfb85ba94b30f49b3f2b7c6
97+
--sha256: sha256-4Lu716WX9S+5dguxa8lUjAgeCQYsxj9QZZ9xLyyjivQ=
9998
subdir:
10099
ouroboros-consensus
101100
ouroboros-consensus-cardano

cardano-node/src/Cardano/Node/Configuration/TopologyP2P.hs

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
{-# LANGUAGE PackageImports #-}
12
{-# LANGUAGE FlexibleContexts #-}
23
{-# LANGUAGE FlexibleInstances #-}
34
{-# LANGUAGE NamedFieldPuns #-}
@@ -28,7 +29,6 @@ import Cardano.Node.Configuration.POM (NodeConfiguration (..))
2829
import Cardano.Node.Configuration.Topology (TopologyError (..))
2930
import Cardano.Node.Startup (StartupTrace (..))
3031
import Cardano.Node.Types
31-
import Cardano.Logging (traceWith)
3232
import Cardano.Tracing.OrphanInstances.Network ()
3333
import Ouroboros.Network.ConsensusMode
3434
import Ouroboros.Network.NodeToNode (DiffusionMode (..), PeerAdvertise (..))
@@ -45,6 +45,7 @@ import Control.Exception (IOException)
4545
import qualified Control.Exception as Exception
4646
import Control.Exception.Base (Exception (..))
4747
import Control.Monad.Trans.Except.Extra
48+
import qualified "contra-tracer" Control.Tracer as CT
4849
import Data.Aeson
4950
import qualified Data.ByteString as BS
5051
import qualified Data.ByteString.Lazy.Char8 as LBS
@@ -213,26 +214,26 @@ instance ToJSON NetworkTopology where
213214

214215
-- | Read the `NetworkTopology` configuration from the specified file.
215216
--
216-
readTopologyFile :: NodeConfiguration -> IO (Either Text NetworkTopology)
217-
readTopologyFile nc = do
217+
readTopologyFile :: NodeConfiguration -> CT.Tracer IO (StartupTrace blk) -> IO (Either Text NetworkTopology)
218+
readTopologyFile nc tr = do
218219
eBs <- Exception.try $ BS.readFile (unTopology $ ncTopologyFile nc)
219220

220221
case eBs of
221222
Left e -> return . Left $ handler e
222223
Right bs ->
223224
let bs' = LBS.fromStrict bs in
224-
return $ case eitherDecode bs' of
225-
Left err -> Left (handlerJSON err)
225+
case eitherDecode bs' of
226+
Left err -> return $ Left (handlerJSON err)
226227
Right t
227228
| isValidTrustedPeerConfiguration t ->
228229
if isGenesisCompatible (ncConsensusMode nc) (ntUseBootstrapPeers t)
229230
then return (Right t)
230231
else do
231-
traceWith (ncTraceConfig nc) $
232+
CT.traceWith tr $
232233
NetworkConfigUpdateError genesisIncompatible
233234
return . Right $ t { ntUseBootstrapPeers = DontUseBootstrapPeers }
234235
| otherwise ->
235-
Left handlerBootstrap
236+
pure $ Left handlerBootstrap
236237
where
237238
handler :: IOException -> Text
238239
handler e = Text.pack $ "Cardano.Node.Configuration.Topology.readTopologyFile: "
@@ -260,9 +261,9 @@ readTopologyFile nc = do
260261
isGenesisCompatible GenesisMode (UseBootstrapPeers{}) = False
261262
isGenesisCompatible _ _ = True
262263

263-
readTopologyFileOrError :: NodeConfiguration -> IO NetworkTopology
264-
readTopologyFileOrError nc =
265-
readTopologyFile nc
264+
readTopologyFileOrError :: NodeConfiguration -> CT.Tracer IO (StartupTrace blk) -> IO NetworkTopology
265+
readTopologyFileOrError nc tr =
266+
readTopologyFile nc tr
266267
>>= either (\err -> error $ "Cardano.Node.Configuration.TopologyP2P.readTopologyFile: "
267268
<> Text.unpack err)
268269
pure

cardano-node/src/Cardano/Node/Run.hs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -437,7 +437,7 @@ handleSimpleNode blockType runP p2pMode tracers nc onKernel = do
437437
{ ntUseLedgerPeers
438438
, ntUseBootstrapPeers
439439
, ntPeerSnapshotPath
440-
} <- TopologyP2P.readTopologyFileOrError nc
440+
} <- TopologyP2P.readTopologyFileOrError nc (startupTracer tracers)
441441
let (localRoots, publicRoots) = producerAddresses nt
442442
traceWith (startupTracer tracers)
443443
$ NetworkConfig localRoots
@@ -789,7 +789,7 @@ updateTopologyConfiguration :: Tracer IO (StartupTrace blk)
789789
updateTopologyConfiguration startupTracer nc localRootsVar publicRootsVar useLedgerVar
790790
useBootsrapPeersVar ledgerPeerSnapshotPathVar = do
791791
traceWith startupTracer NetworkConfigUpdate
792-
result <- try $ readTopologyFileOrError nc
792+
result <- try $ readTopologyFileOrError nc startupTracer
793793
case result of
794794
Left (FatalError err) ->
795795
traceWith startupTracer
@@ -922,8 +922,6 @@ mkP2PArguments NodeConfiguration {
922922
, P2P.daReadUseLedgerPeers
923923
, P2P.daReadUseBootstrapPeers
924924
, P2P.daReadLedgerPeerSnapshot
925-
, P2P.daConsensusMode = ncConsensusMode
926-
, P2P.daMinBigLedgerPeersForTrustedState = ncMinBigLedgerPeersForTrustedState
927925
, P2P.daProtocolIdleTimeout = ncProtocolIdleTimeout
928926
, P2P.daTimeWaitTimeout = ncTimeWaitTimeout
929927
, P2P.daDeadlineChurnInterval = Configuration.defaultDeadlineChurnInterval

cardano-node/src/Cardano/Node/Tracing/Tracers.hs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -335,6 +335,11 @@ mkConsensusTracers configReflection trBase trForward mbTrEKG _trDataPoint trConf
335335
["Consensus", "GSM"]
336336
configureTracers configReflection trConfig [consensusGsmTr]
337337

338+
!consensusCsjTr <- mkCardanoTracer
339+
trBase trForward mbTrEKG
340+
["Consensus", "CSJ"]
341+
configureTracers configReflection trConfig [consensusCsjTr]
342+
338343
pure $ Consensus.Tracers
339344
{ Consensus.chainSyncClientTracer = Tracer $
340345
traceWith chainSyncClientTr
@@ -377,6 +382,8 @@ mkConsensusTracers configReflection trBase trForward mbTrEKG _trDataPoint trConf
377382
traceWith consensusStartupErrorTr . ConsensusStartupException
378383
, Consensus.gsmTracer = Tracer $
379384
traceWith consensusGsmTr
385+
, Consensus.csjTracer = Tracer $
386+
traceWith consensusCsjTr
380387
}
381388

382389
mkNodeToClientTracers :: forall blk.

cardano-node/src/Cardano/Node/Tracing/Tracers/ChainDB.hs

Lines changed: 34 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -96,10 +96,20 @@ instance ( LogFormatting (Header blk)
9696
forHuman (ChainDB.TraceLedgerReplayEvent v) = forHumanOrMachine v
9797
forHuman (ChainDB.TraceImmutableDBEvent v) = forHumanOrMachine v
9898
forHuman (ChainDB.TraceVolatileDBEvent v) = forHumanOrMachine v
99-
forHuman (ChainDB.TraceChainSelStarvationEvent v)= forHumanOrMachine v
99+
forHuman (ChainDB.TraceChainSelStarvationEvent ev) = case ev of
100+
ChainDB.ChainSelStarvation RisingEdge ->
101+
"Chain Selection was starved."
102+
ChainDB.ChainSelStarvation (FallingEdgeWith pt) ->
103+
"Chain Selection was unstarved by " <> renderRealPoint pt
100104

101105
forMachine _ ChainDB.TraceLastShutdownUnclean =
102106
mconcat [ "kind" .= String "LastShutdownUnclean" ]
107+
forMachine dtal (ChainDB.TraceChainSelStarvationEvent (ChainDB.ChainSelStarvation edge)) =
108+
mconcat [ "kind" .= String "ChainSelStarvation"
109+
, case edge of
110+
RisingEdge -> "risingEdge" .= True
111+
FallingEdgeWith pt -> "fallingEdge" .= forMachine dtal pt
112+
]
103113
forMachine details (ChainDB.TraceAddBlockEvent v) =
104114
forMachine details v
105115
forMachine details (ChainDB.TraceFollowerEvent v) =
@@ -122,27 +132,27 @@ instance ( LogFormatting (Header blk)
122132
forMachine details v
123133
forMachine details (ChainDB.TraceVolatileDBEvent v) =
124134
forMachine details v
125-
forMachine details (ChainDB.TraceChainSelStarvationEvent v) =
126-
forMachine details v
127135

128-
asMetrics ChainDB.TraceLastShutdownUnclean = []
129-
asMetrics (ChainDB.TraceAddBlockEvent v) = asMetrics v
130-
asMetrics (ChainDB.TraceFollowerEvent v) = asMetrics v
131-
asMetrics (ChainDB.TraceCopyToImmutableDBEvent v) = asMetrics v
132-
asMetrics (ChainDB.TraceGCEvent v) = asMetrics v
133-
asMetrics (ChainDB.TraceInitChainSelEvent v) = asMetrics v
134-
asMetrics (ChainDB.TraceOpenEvent v) = asMetrics v
135-
asMetrics (ChainDB.TraceIteratorEvent v) = asMetrics v
136-
asMetrics (ChainDB.TraceSnapshotEvent v) = asMetrics v
137-
asMetrics (ChainDB.TraceLedgerReplayEvent v) = asMetrics v
138-
asMetrics (ChainDB.TraceImmutableDBEvent v) = asMetrics v
139-
asMetrics (ChainDB.TraceVolatileDBEvent v) = asMetrics v
140-
asMetrics (ChainDB.TraceChainSelStarvationEvent v)= asMetrics v
136+
asMetrics ChainDB.TraceLastShutdownUnclean = []
137+
asMetrics (ChainDB.TraceChainSelStarvationEvent _) = []
138+
asMetrics (ChainDB.TraceAddBlockEvent v) = asMetrics v
139+
asMetrics (ChainDB.TraceFollowerEvent v) = asMetrics v
140+
asMetrics (ChainDB.TraceCopyToImmutableDBEvent v) = asMetrics v
141+
asMetrics (ChainDB.TraceGCEvent v) = asMetrics v
142+
asMetrics (ChainDB.TraceInitChainSelEvent v) = asMetrics v
143+
asMetrics (ChainDB.TraceOpenEvent v) = asMetrics v
144+
asMetrics (ChainDB.TraceIteratorEvent v) = asMetrics v
145+
asMetrics (ChainDB.TraceSnapshotEvent v) = asMetrics v
146+
asMetrics (ChainDB.TraceLedgerReplayEvent v) = asMetrics v
147+
asMetrics (ChainDB.TraceImmutableDBEvent v) = asMetrics v
148+
asMetrics (ChainDB.TraceVolatileDBEvent v) = asMetrics v
141149

142150

143151
instance MetaTrace (ChainDB.TraceEvent blk) where
144152
namespaceFor ChainDB.TraceLastShutdownUnclean =
145153
Namespace [] ["LastShutdownUnclean"]
154+
namespaceFor ChainDB.TraceChainSelStarvationEvent{} =
155+
Namespace [] ["ChainSelStarvationEvent"]
146156
namespaceFor (ChainDB.TraceAddBlockEvent ev) =
147157
nsPrependInner "AddBlockEvent" (namespaceFor ev)
148158
namespaceFor (ChainDB.TraceFollowerEvent ev) =
@@ -165,10 +175,9 @@ instance MetaTrace (ChainDB.TraceEvent blk) where
165175
nsPrependInner "ImmDbEvent" (namespaceFor ev)
166176
namespaceFor (ChainDB.TraceVolatileDBEvent ev) =
167177
nsPrependInner "VolatileDbEvent" (namespaceFor ev)
168-
namespaceFor (ChainDB.TraceChainSelStarvationEvent ev) =
169-
nsPrependInner "ChainSelStarvationEvent" (namespaceFor ev)
170178

171179
severityFor (Namespace _ ["LastShutdownUnclean"]) _ = Just Info
180+
severityFor (Namespace _ ["ChainSelStarvationEvent"]) _ = Just Debug
172181
severityFor (Namespace out ("AddBlockEvent" : tl)) (Just (ChainDB.TraceAddBlockEvent ev')) =
173182
severityFor (Namespace out tl) (Just ev')
174183
severityFor (Namespace out ("AddBlockEvent" : tl)) Nothing =
@@ -216,6 +225,7 @@ instance MetaTrace (ChainDB.TraceEvent blk) where
216225
severityFor _ns _ = Nothing
217226

218227
privacyFor (Namespace _ ["LastShutdownUnclean"]) _ = Just Public
228+
privacyFor (Namespace _ ["ChainSelStarvationEvent"]) _ = Just Public
219229
privacyFor (Namespace out ("AddBlockEvent" : tl)) (Just (ChainDB.TraceAddBlockEvent ev')) =
220230
privacyFor (Namespace out tl) (Just ev')
221231
privacyFor (Namespace out ("AddBlockEvent" : tl)) Nothing =
@@ -263,6 +273,7 @@ instance MetaTrace (ChainDB.TraceEvent blk) where
263273
privacyFor _ _ = Nothing
264274

265275
detailsFor (Namespace _ ["LastShutdownUnclean"]) _ = Just DNormal
276+
detailsFor (Namespace _ ["ChainSelStarvationEvent"]) _ = Just DNormal
266277
detailsFor (Namespace out ("AddBlockEvent" : tl)) (Just (ChainDB.TraceAddBlockEvent ev')) =
267278
detailsFor (Namespace out tl) (Just ev')
268279
detailsFor (Namespace out ("AddBlockEvent" : tl)) Nothing =
@@ -338,6 +349,10 @@ instance MetaTrace (ChainDB.TraceEvent blk) where
338349
, " state. Therefore, revalidating all the immutable chunks is necessary to"
339350
, " ensure the correctness of the chain."
340351
]
352+
documentFor (Namespace _ ["ChainSelStarvationEvent"]) = Just $ mconcat
353+
[ "ChainSel is waiting for a next block to process, but there is no block in the queue."
354+
, " Despite the name, it is a pretty normal (and frequent) event."
355+
]
341356
documentFor (Namespace out ("AddBlockEvent" : tl)) =
342357
documentFor (Namespace out tl :: Namespace (ChainDB.TraceAddBlockEvent blk))
343358
documentFor (Namespace out ("FollowerEvent" : tl)) =
@@ -364,7 +379,7 @@ instance MetaTrace (ChainDB.TraceEvent blk) where
364379

365380
allNamespaces =
366381
Namespace [] ["LastShutdownUnclean"]
367-
382+
: Namespace [] ["ChainSelStarvationEvent"]
368383
: (map (nsPrependInner "AddBlockEvent")
369384
(allNamespaces :: [Namespace (ChainDB.TraceAddBlockEvent blk)])
370385
++ map (nsPrependInner "FollowerEvent")

0 commit comments

Comments
 (0)