Skip to content

Commit 0b9d9c0

Browse files
committed
LedgerMetrics with delay, comments and defaults
1 parent 61b93bb commit 0b9d9c0

File tree

4 files changed

+30
-17
lines changed

4 files changed

+30
-17
lines changed

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ initTraceDispatcher nc p networkMagic nodeKernel p2pMode = do
8989

9090
startLedgerMetricsTracer
9191
(ledgerMetricsTracer tracers)
92-
(fromMaybe 1000 (tcLedgerMetricsFrequency trConfig))
92+
(fromMaybe 1 (tcLedgerMetricsFrequency trConfig)) -- default is every slot
9393
nodeKernel
9494

9595
startPeerTracer

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -394,8 +394,8 @@ mkConsensusTracers configReflection trBase trForward mbTrEKG _trDataPoint trConf
394394
traceWith mempoolTr
395395
, Consensus.forgeTracer =
396396
Tracer (\(Consensus.TraceLabelCreds _ x) -> traceWith forgeTr x)
397-
-- <>
398-
-- Tracer (\(Consensus.TraceLabelCreds _ x) -> traceWith forgeStatsTr x)
397+
<>
398+
Tracer (\(Consensus.TraceLabelCreds _ x) -> traceWith forgeStatsTr x)
399399
, Consensus.blockchainTimeTracer = Tracer $
400400
traceWith blockchainTimeTr
401401
, Consensus.keepAliveClientTracer = Tracer $

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

+26-13
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,13 @@ import qualified Ouroboros.Network.AnchoredFragment as AF
2929

3030
import Control.Concurrent (threadDelay)
3131
import Control.Concurrent.Async (async)
32+
import Control.Concurrent.STM.TVar (readTVar, registerDelay)
3233
import Control.Monad.Class.MonadAsync (link)
33-
import Control.Monad.STM (atomically, retry)
34+
import Control.Monad.STM (STM, atomically, check, retry)
3435
import "contra-tracer" Control.Tracer (Tracer, traceWith)
3536
import Data.Aeson (Value (Number, String), toJSON, (.=))
37+
import Data.Text as Text
38+
import GHC.Conc (unsafeIOToSTM)
3639

3740
startLedgerMetricsTracer
3841
:: forall blk
@@ -65,14 +68,21 @@ startLedgerMetricsTracer tr everyNThSlot nodeKernelData = do
6568
SNothing -> go i prevSlot
6669

6770
waitForDifferentSlot :: StrictMaybe SlotNo -> IO (StrictMaybe SlotNo)
68-
waitForDifferentSlot prev =
71+
waitForDifferentSlot prev = do
6972
mapNodeKernelDataIO (\nk -> atomically $ do
7073
mSlot <- getCurrentSlot (getBlockchainTime nk)
7174
case mSlot of
72-
CurrentSlot s'
73-
| SJust s' /= prev -> return s'
74-
_ -> retry
75-
) nodeKernelData
75+
CurrentSlot s' | SJust s' /= prev -> return s'
76+
_ -> do
77+
delaySTM $ 5 * 1000 -- 5 milliseconds
78+
retry
79+
) nodeKernelData
80+
81+
-- STM action that completes after a given delay (in microseconds)
82+
delaySTM :: Int -> STM ()
83+
delaySTM micros = do
84+
tvar <- unsafeIOToSTM (registerDelay micros) -- gives you a TVar Bool
85+
readTVar tvar >>= check
7686

7787
data LedgerMetrics =
7888
LedgerMetrics {
@@ -151,16 +161,19 @@ instance MetaTrace LedgerMetrics where
151161
severityFor _ _ = Nothing
152162

153163
metricsDocFor (Namespace _ ["LedgerMetrics"]) =
154-
[ ("utxoSize", "UTxO set size")
155-
, ("delegMapSize", "Delegation map size")
156-
, ("drepCount", "")
157-
, ("drepMapSize", "")
164+
[ ("utxoSize", "Size of the current UTxO set (number of entries)")
165+
, ("delegMapSize", "Size of the delegation map (number of delegators)")
166+
, ("drepCount", "Number of active DReps (Delegated Representatives)")
167+
, ("drepMapSize", "Size of the DRep map (number of stake keys mapped to DReps)")
158168
]
159169
metricsDocFor _ = []
160170

161-
documentFor (Namespace _ ["LedgerMetrics"]) = Just $ mconcat
162-
[ "" -- TODO YUP
163-
]
171+
documentFor (Namespace _ ["LedgerMetrics"]) = Just $ Text.unlines
172+
[ "Periodic trace emitted every Nth slot, approximately 700 milliseconds after slot start."
173+
, "It queries the current ledger state to report metrics such as UTxO size, delegation map size,"
174+
, "and DRep participation. This trace helps monitor ledger growth and governance dynamics over time."
175+
]
176+
164177

165178
documentFor _ = Nothing
166179

trace-dispatcher/src/Cardano/Logging/Types.hs

+1-1
Original file line numberDiff line numberDiff line change
@@ -546,7 +546,7 @@ emptyTraceConfig = TraceConfig {
546546
, tcMetricsPrefix = Nothing
547547
, tcPeerFrequency = Just 2000 -- Every 2 seconds
548548
, tcResourceFrequency = Just 5000 -- Every five seconds
549-
, tcLedgerMetricsFrequency = Just 1000
549+
, tcLedgerMetricsFrequency = Just 1 -- Every slot
550550
}
551551

552552
---------------------------------------------------------------------------

0 commit comments

Comments
 (0)