Safe Haskell | None |
---|---|
Language | Haskell2010 |
Ouroboros.Consensus.Node.Tracers
Synopsis
- type Tracers m remotePeer localPeer blk = Tracers' remotePeer localPeer blk ( Tracer m)
-
data
Tracers'
remotePeer localPeer blk f =
Tracers
{
- chainSyncClientTracer :: f ( TraceLabelPeer remotePeer ( TraceChainSyncClientEvent blk))
- chainSyncServerHeaderTracer :: f ( TraceChainSyncServerEvent blk)
- chainSyncServerBlockTracer :: f ( TraceChainSyncServerEvent blk)
- blockFetchDecisionTracer :: f [ TraceLabelPeer remotePeer ( FetchDecision [ Point ( Header blk)])]
- blockFetchClientTracer :: f ( TraceLabelPeer remotePeer ( TraceFetchClientState ( Header blk)))
- blockFetchServerTracer :: f ( TraceBlockFetchServerEvent blk)
- txInboundTracer :: f ( TraceLabelPeer remotePeer ( TraceTxSubmissionInbound ( GenTxId blk) ( GenTx blk)))
- txOutboundTracer :: f ( TraceLabelPeer remotePeer ( TraceTxSubmissionOutbound ( GenTxId blk) ( GenTx blk)))
- localTxSubmissionServerTracer :: f ( TraceLocalTxSubmissionServerEvent blk)
- mempoolTracer :: f ( TraceEventMempool blk)
- forgeTracer :: f ( TraceLabelCreds ( TraceForgeEvent blk))
- blockchainTimeTracer :: f ( TraceBlockchainTimeEvent UTCTime )
- forgeStateInfoTracer :: f ( TraceLabelCreds ( ForgeStateInfo blk))
- keepAliveClientTracer :: f ( TraceKeepAliveClient remotePeer)
- nullTracers :: Monad m => Tracers m remotePeer localPeer blk
- showTracers :: ( Show blk, Show ( GenTx blk), Show ( Validated ( GenTx blk)), Show ( GenTxId blk), Show ( ApplyTxErr blk), Show ( Header blk), Show ( ForgeStateInfo blk), Show ( ForgeStateUpdateError blk), Show ( CannotForge blk), Show remotePeer, LedgerSupportsProtocol blk) => Tracer m String -> Tracers m remotePeer localPeer blk
-
data
TraceForgeEvent
blk
- = TraceStartLeadershipCheck SlotNo
- | TraceSlotIsImmutable SlotNo ( Point blk) BlockNo
- | TraceBlockFromFuture SlotNo SlotNo
- | TraceBlockContext SlotNo BlockNo ( Point blk)
- | TraceNoLedgerState SlotNo ( Point blk)
- | TraceLedgerState SlotNo ( Point blk)
- | TraceNoLedgerView SlotNo OutsideForecastRange
- | TraceLedgerView SlotNo
- | TraceForgeStateUpdateError SlotNo ( ForgeStateUpdateError blk)
- | TraceNodeCannotForge SlotNo ( CannotForge blk)
- | TraceNodeNotLeader SlotNo
- | TraceNodeIsLeader SlotNo
- | TraceForgeTickedLedgerState SlotNo ( Point blk)
- | TraceForgingMempoolSnapshot SlotNo ( Point blk) ( ChainHash blk) SlotNo
- | TraceForgedBlock SlotNo ( Point blk) blk MempoolSize
- | TraceDidntAdoptBlock SlotNo blk
- | TraceForgedInvalidBlock SlotNo blk ( InvalidBlockReason blk)
- | TraceAdoptedBlock SlotNo blk [ Validated ( GenTx blk)]
- data TraceLabelCreds a = TraceLabelCreds Text a
All tracers of a node bundled together
type Tracers m remotePeer localPeer blk = Tracers' remotePeer localPeer blk ( Tracer m) Source #
A record of
Tracer
s for the node.
data Tracers' remotePeer localPeer blk f Source #
Constructors
Instances
( forall a. Semigroup (f a)) => Semigroup ( Tracers' remotePeer localPeer blk f) Source # | |
Defined in Ouroboros.Consensus.Node.Tracers Methods (<>) :: Tracers' remotePeer localPeer blk f -> Tracers' remotePeer localPeer blk f -> Tracers' remotePeer localPeer blk f Source # sconcat :: NonEmpty ( Tracers' remotePeer localPeer blk f) -> Tracers' remotePeer localPeer blk f Source # stimes :: Integral b => b -> Tracers' remotePeer localPeer blk f -> Tracers' remotePeer localPeer blk f Source # |
nullTracers :: Monad m => Tracers m remotePeer localPeer blk Source #
Use a
nullTracer
for each of the
Tracer
s in
Tracers
showTracers :: ( Show blk, Show ( GenTx blk), Show ( Validated ( GenTx blk)), Show ( GenTxId blk), Show ( ApplyTxErr blk), Show ( Header blk), Show ( ForgeStateInfo blk), Show ( ForgeStateUpdateError blk), Show ( CannotForge blk), Show remotePeer, LedgerSupportsProtocol blk) => Tracer m String -> Tracers m remotePeer localPeer blk Source #
Specific tracers
data TraceForgeEvent blk Source #
Trace the forging of a block as a slot leader.
The flow of trace events here can be visualized as follows:
TraceStartLeadershipCheck | +--- TraceSlotIsImmutable (leadership check failed) | +--- TraceBlockFromFuture (leadership check failed) | TraceBlockContext | +--- TraceNoLedgerState (leadership check failed) | TraceLedgerState | +--- TraceNoLedgerView (leadership check failed) | TraceLedgerView | +--- TraceForgeStateUpdateError (leadership check failed) | +--- TraceNodeCannotForge (leadership check failed) | +--- TraceNodeNotLeader | TraceNodeIsLeader | TraceForgedBlock | +--- TraceDidntAdoptBlock | +--- TraceForgedInvalidBlock | TraceAdoptedBlock
Constructors
TraceStartLeadershipCheck SlotNo |
Start of the leadership check We record the current slot number. |
TraceSlotIsImmutable SlotNo ( Point blk) BlockNo |
Leadership check failed: the tip of the ImmutableDB inhabits the current slot This might happen in two cases.
We record both the current slot number as well as the tip of the ImmutableDB. See also https://github.com/input-output-hk/ouroboros-network/issues/1462 |
TraceBlockFromFuture SlotNo SlotNo |
Leadership check failed: the current chain contains a block from a slot after the current slot This can only happen if the system is under heavy load. We record both the current slot number as well as the slot number of the block at the tip of the chain. See also https://github.com/input-output-hk/ouroboros-network/issues/1462 |
TraceBlockContext SlotNo BlockNo ( Point blk) |
We found out to which block we are going to connect the block we are about to forge. We record the current slot number, the block number of the block to connect to and its point. Note that block number of the block we will try to forge is one more than the recorded block number. |
TraceNoLedgerState SlotNo ( Point blk) |
Leadership check failed: we were unable to get the ledger state for the point of the block we want to connect to This can happen if after choosing which block to connect to the node switched to a different fork. We expect this to happen only rather rarely, so this certainly merits a warning; if it happens a lot, that merits an investigation. We record both the current slot number as well as the point of the block we attempt to connect the new block to (that we requested the ledger state for). |
TraceLedgerState SlotNo ( Point blk) |
We obtained a ledger state for the point of the block we want to connect to We record both the current slot number as well as the point of the block we attempt to connect the new block to (that we requested the ledger state for). |
TraceNoLedgerView SlotNo OutsideForecastRange |
Leadership check failed: we were unable to get the ledger view for the current slot number This will only happen if there are many missing blocks between the tip of our chain and the current slot.
We record also the failure returned by
|
TraceLedgerView SlotNo |
We obtained a ledger view for the current slot number We record the current slot number. |
TraceForgeStateUpdateError SlotNo ( ForgeStateUpdateError blk) |
Updating the forge state failed. For example, the KES key could not be evolved anymore.
We record the error returned by
|
TraceNodeCannotForge SlotNo ( CannotForge blk) |
We did the leadership check and concluded that we should lead and forge a block, but cannot. This should only happen rarely and should be logged with warning severity. Records why we cannot forge a block. |
TraceNodeNotLeader SlotNo |
We did the leadership check and concluded we are not the leader We record the current slot number |
TraceNodeIsLeader SlotNo |
We did the leadership check and concluded we are the leader The node will soon forge; it is about to read its transactions from the Mempool. This will be followed by TraceForgedBlock. |
TraceForgeTickedLedgerState SlotNo ( Point blk) |
We ticked the ledger state for the slot of the to-be-forged block. We record the current slot number and the point of the block we attempt to connect the new block to. |
TraceForgingMempoolSnapshot SlotNo ( Point blk) ( ChainHash blk) SlotNo |
We acquired a mempool snapshot.
We record the the point of the state we are starting from (ie the point
from
|
TraceForgedBlock SlotNo ( Point blk) blk MempoolSize |
We forged a block We record the current slot number, the point of the predecessor, the block itself, and the total size of the mempool snapshot at the time we produced the block (which may be significantly larger than the block, due to maximum block size) This will be followed by one of three messages:
|
TraceDidntAdoptBlock SlotNo blk |
We did not adopt the block we produced, but the block was valid. We must have adopted a block that another leader of the same slot produced before we got the chance of adopting our own block. This is very rare, this warrants a warning. |
TraceForgedInvalidBlock SlotNo blk ( InvalidBlockReason blk) |
We forged a block that is invalid according to the ledger in the ChainDB. This means there is an inconsistency between the mempool validation and the ledger validation. This is a serious error! |
TraceAdoptedBlock SlotNo blk [ Validated ( GenTx blk)] |
We adopted the block we produced, we also trace the transactions that were adopted. |
Instances
( LedgerSupportsProtocol blk, Eq blk, Eq ( Validated ( GenTx blk)), Eq ( ForgeStateUpdateError blk), Eq ( CannotForge blk)) => Eq ( TraceForgeEvent blk) Source # | |
Defined in Ouroboros.Consensus.Node.Tracers Methods (==) :: TraceForgeEvent blk -> TraceForgeEvent blk -> Bool Source # (/=) :: TraceForgeEvent blk -> TraceForgeEvent blk -> Bool Source # |
|
( LedgerSupportsProtocol blk, Show blk, Show ( Validated ( GenTx blk)), Show ( ForgeStateUpdateError blk), Show ( CannotForge blk)) => Show ( TraceForgeEvent blk) Source # | |
Defined in Ouroboros.Consensus.Node.Tracers |
data TraceLabelCreds a Source #
Label a forge-related trace event with the label associated with its credentials.
This is useful when a node is running with multiple sets of credentials.
Constructors
TraceLabelCreds Text a |
Instances
Functor TraceLabelCreds Source # | |
Defined in Ouroboros.Consensus.Node.Tracers Methods fmap :: (a -> b) -> TraceLabelCreds a -> TraceLabelCreds b Source # (<$) :: a -> TraceLabelCreds b -> TraceLabelCreds a Source # |
|
Eq a => Eq ( TraceLabelCreds a) Source # | |
Defined in Ouroboros.Consensus.Node.Tracers Methods (==) :: TraceLabelCreds a -> TraceLabelCreds a -> Bool Source # (/=) :: TraceLabelCreds a -> TraceLabelCreds a -> Bool Source # |
|
Show a => Show ( TraceLabelCreds a) Source # | |
Defined in Ouroboros.Consensus.Node.Tracers |