From 0e18acce4f5224201e66d24600fa4ac67b4b89d7 Mon Sep 17 00:00:00 2001 From: Marcin Szamotulski Date: Fri, 14 Jan 2022 12:58:19 +0100 Subject: [PATCH 1/8] Changed import of TracePeerLabel --- cardano-node/src/Cardano/Node/Tracing/Tracers.hs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cardano-node/src/Cardano/Node/Tracing/Tracers.hs b/cardano-node/src/Cardano/Node/Tracing/Tracers.hs index 1e4b473d72d..dce5aeae530 100644 --- a/cardano-node/src/Cardano/Node/Tracing/Tracers.hs +++ b/cardano-node/src/Cardano/Node/Tracing/Tracers.hs @@ -51,7 +51,7 @@ import qualified Ouroboros.Consensus.Node.Tracers as Consensus import qualified Ouroboros.Consensus.Storage.ChainDB as ChainDB import qualified Ouroboros.Consensus.Storage.LedgerDB.OnDisk as LedgerDB -import qualified Ouroboros.Network.BlockFetch.ClientState as BlockFetch +import Network.Mux.Trace (TraceLabelPeer (..)) import Ouroboros.Network.ConnectionId (ConnectionId) import qualified Ouroboros.Network.Diffusion as Diffusion import qualified Ouroboros.Network.Diffusion.NonP2P as NonP2P @@ -68,7 +68,7 @@ mkDispatchTracers , LogFormatting (LedgerEvent blk) , LogFormatting - (BlockFetch.TraceLabelPeer + (TraceLabelPeer (ConnectionId RemoteAddress) (TraceChainSyncClientEvent blk)) ) => NodeKernelData blk @@ -198,7 +198,7 @@ mkConsensusTracers :: forall blk. ( Consensus.RunNode blk , LogFormatting (ChainDB.InvalidBlockReason blk) , TraceConstraints blk - , LogFormatting (BlockFetch.TraceLabelPeer + , LogFormatting (TraceLabelPeer (ConnectionId RemoteAddress) (TraceChainSyncClientEvent blk)) ) => Trace IO FormattedMessage From 8b14b43f279b44dfe4c2ea9b00023749fdd345b3 Mon Sep 17 00:00:00 2001 From: Marcin Szamotulski Date: Fri, 14 Jan 2022 12:58:25 +0100 Subject: [PATCH 2/8] Fixed a typo in the new tracing system --- cardano-node/src/Cardano/Node/Tracing/Tracers/NodeToClient.hs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cardano-node/src/Cardano/Node/Tracing/Tracers/NodeToClient.hs b/cardano-node/src/Cardano/Node/Tracing/Tracers/NodeToClient.hs index d80b58dda67..7543d0bf6f3 100644 --- a/cardano-node/src/Cardano/Node/Tracing/Tracers/NodeToClient.hs +++ b/cardano-node/src/Cardano/Node/Tracing/Tracers/NodeToClient.hs @@ -84,7 +84,7 @@ namesForTChainSync (BlockFetch.TraceLabelPeer _ v) = "NodeToClient" : namesTChai where namesTChainSync (TraceSendMsg msg) = "Send" : namesTChainSync' msg - namesTChainSync (TraceRecvMsg msg) = "Recieve" : namesTChainSync' msg + namesTChainSync (TraceRecvMsg msg) = "Receive" : namesTChainSync' msg namesTChainSync' (AnyMessageAndAgency _agency msg) = namesTChainSync'' msg @@ -242,7 +242,7 @@ namesForTTxSubmission :: BlockFetch.TraceLabelPeer peer namesForTTxSubmission (BlockFetch.TraceLabelPeer _ v) = namesTTxSubmission v where namesTTxSubmission (TraceSendMsg msg) = "Send" : namesTTxSubmission' msg - namesTTxSubmission (TraceRecvMsg msg) = "Recieve" : namesTTxSubmission' msg + namesTTxSubmission (TraceRecvMsg msg) = "Receive" : namesTTxSubmission' msg namesTTxSubmission' (AnyMessageAndAgency _agency msg) = namesTTxSubmission'' msg From cc8aef4a9cc2a3217f1895410a4fdfd512c59814 Mon Sep 17 00:00:00 2001 From: Marcin Szamotulski Date: Fri, 14 Jan 2022 12:58:26 +0100 Subject: [PATCH 3/8] Updated ouroboros-network version This change integrates the new `LocalTxMonitor` mini-protocol for `node-to-client` connections. --- cabal.project | 4 +- cardano-api/src/Cardano/Api/IPC.hs | 7 + cardano-node-chairman/app/Cardano/Chairman.hs | 9 + .../src/Cardano/Node/Tracing/Tracers.hs | 9 + .../Node/Tracing/Tracers/NodeToClient.hs | 157 +++++++++++++++++- .../src/Cardano/Node/Tracing/Tracers/P2P.hs | 41 +++++ cardano-node/src/Cardano/Tracing/Config.hs | 5 + .../Tracing/OrphanInstances/Network.hs | 59 +++++++ cardano-node/src/Cardano/Tracing/Tracers.hs | 4 + 9 files changed, 292 insertions(+), 3 deletions(-) diff --git a/cabal.project b/cabal.project index db1a9b7745a..5103197c4a1 100644 --- a/cabal.project +++ b/cabal.project @@ -240,8 +240,8 @@ source-repository-package source-repository-package type: git location: https://github.com/input-output-hk/ouroboros-network - tag: d2d219a86cda42787325bb8c20539a75c2667132 - --sha256: 18xk7r0h2pxrbx76d6flsxifh0a9rz1cj1rjqs1pbs5kdmy8b7kx + tag: 4fac197b6f0d2ff60dc3486c593b68dc00969fbf + --sha256: 1b43vbdsr9m3ry1kgag2p2ixpv54gw7a4vvmndxl6knqg8qbsb8b subdir: io-sim io-classes diff --git a/cardano-api/src/Cardano/Api/IPC.hs b/cardano-api/src/Cardano/Api/IPC.hs index 189fb9650e3..152b22c07cd 100644 --- a/cardano-api/src/Cardano/Api/IPC.hs +++ b/cardano-api/src/Cardano/Api/IPC.hs @@ -291,10 +291,17 @@ mkVersionedProtocols networkid ptcl unversionedClients = (maybe Net.localStateQueryPeerNull Net.Query.localStateQueryClientPeer localStateQueryClientForBlock) + , localTxMonitorProtocol = + Net.InitiatorProtocolOnly $ + Net.MuxPeer + nullTracer + cTxMonitorCodec + Net.localTxMonitorPeerNull } where Consensus.Codecs { Consensus.cChainSyncCodec, + Consensus.cTxMonitorCodec, Consensus.cTxSubmissionCodec, Consensus.cStateQueryCodec } = Consensus.clientCodecs codecConfig ptclBlockVersion ptclVersion diff --git a/cardano-node-chairman/app/Cardano/Chairman.hs b/cardano-node-chairman/app/Cardano/Chairman.hs index f1b5929a335..b9ede8ae2fb 100644 --- a/cardano-node-chairman/app/Cardano/Chairman.hs +++ b/cardano-node-chairman/app/Cardano/Chairman.hs @@ -477,12 +477,20 @@ localInitiatorNetworkApplication (chainSyncClientPeer $ chainSyncClient chairmanTracer sockPath chainsVar securityParam) + , localTxMonitorProtocol = + InitiatorProtocolOnly $ + MuxPeer + nullTracer + cTxMonitorCodec + localTxMonitorPeerNull + , localTxSubmissionProtocol = InitiatorProtocolOnly $ MuxPeer localTxSubmissionTracer cTxSubmissionCodec localTxSubmissionPeerNull + , localStateQueryProtocol = InitiatorProtocolOnly $ MuxPeer @@ -493,6 +501,7 @@ localInitiatorNetworkApplication where Codecs { cChainSyncCodec + , cTxMonitorCodec , cTxSubmissionCodec , cStateQueryCodec } = diff --git a/cardano-node/src/Cardano/Node/Tracing/Tracers.hs b/cardano-node/src/Cardano/Node/Tracing/Tracers.hs index dce5aeae530..3e44fc001bf 100644 --- a/cardano-node/src/Cardano/Node/Tracing/Tracers.hs +++ b/cardano-node/src/Cardano/Node/Tracing/Tracers.hs @@ -363,6 +363,13 @@ mkNodeToClientTracers trBase trForward mbTrEKG _trDataPoint trConfig = do severityTChainSync allPublic configureTracers trConfig docTChainSync [chainSyncTr] + txMonitorTr <- mkCardanoTracer + trBase trForward mbTrEKG + "TxMonitorClient" + namesForTTxMonitor + severityTTxMonitor + allPublic + configureTracers trConfig docTTxMonitor [txMonitorTr] txSubmissionTr <- mkCardanoTracer trBase trForward mbTrEKG "TxSubmissionClient" @@ -380,6 +387,8 @@ mkNodeToClientTracers trBase trForward mbTrEKG _trDataPoint trConfig = do pure $ NtC.Tracers { NtC.tChainSyncTracer = Tracer $ traceWith chainSyncTr + , NtC.tTxMonitorTracer = Tracer $ + traceWith txMonitorTr , NtC.tTxSubmissionTracer = Tracer $ traceWith txSubmissionTr , NtC.tStateQueryTracer = Tracer $ diff --git a/cardano-node/src/Cardano/Node/Tracing/Tracers/NodeToClient.hs b/cardano-node/src/Cardano/Node/Tracing/Tracers/NodeToClient.hs index 7543d0bf6f3..053b79d4ff8 100644 --- a/cardano-node/src/Cardano/Node/Tracing/Tracers/NodeToClient.hs +++ b/cardano-node/src/Cardano/Node/Tracing/Tracers/NodeToClient.hs @@ -12,6 +12,10 @@ module Cardano.Node.Tracing.Tracers.NodeToClient , namesForTChainSync , docTChainSync + , severityTTxMonitor + , namesForTTxMonitor + , docTTxMonitor + , severityTTxSubmission , namesForTTxSubmission , docTTxSubmission @@ -28,14 +32,19 @@ import Data.Text (pack) import Network.TypedProtocol.Codec (AnyMessageAndAgency (..)) import Text.Show +import Cardano.Slotting.Slot (SlotNo) + +import Network.Mux.Trace (TraceLabelPeer (..)) + import Ouroboros.Consensus.Ledger.Query (Query) -import Ouroboros.Consensus.Ledger.SupportsMempool (ApplyTxErr, GenTx) +import Ouroboros.Consensus.Ledger.SupportsMempool (ApplyTxErr, GenTx, GenTxId) import Ouroboros.Network.Block (Point, Serialised, Tip) import qualified Ouroboros.Network.BlockFetch.ClientState as BlockFetch import Ouroboros.Network.Driver.Simple (TraceSendRecv (..)) import Ouroboros.Network.Protocol.ChainSync.Type as ChainSync import qualified Ouroboros.Network.Protocol.LocalStateQuery.Type as LSQ +import qualified Ouroboros.Network.Protocol.LocalTxMonitor.Type as LTM import qualified Ouroboros.Network.Protocol.LocalTxSubmission.Type as LTS @@ -213,6 +222,152 @@ docTChainSync = Documented [ \busy states are where the server is expected to send a reply." ] +-------------------------------------------------------------------------------- +-- LocalTxMonitor Tracer +-------------------------------------------------------------------------------- + +severityTTxMonitor + :: TraceLabelPeer peer + (TraceSendRecv (LTM.LocalTxMonitor (GenTxId blk) (GenTx blk) SlotNo)) + -> SeverityS +severityTTxMonitor _ = Info + +namesForTTxMonitor + :: TraceLabelPeer peer + (TraceSendRecv (LTM.LocalTxMonitor (GenTxId blk) (GenTx blk) SlotNo)) + -> [Text] +namesForTTxMonitor (TraceLabelPeer _ v) = namesForTTxMonitor' v + where + namesForTTxMonitor' (TraceSendMsg msg) = "Send" : namesForTTxMonitor'' msg + namesForTTxMonitor' (TraceRecvMsg msg) = "Receive" : namesForTTxMonitor'' msg + + namesForTTxMonitor'' (AnyMessageAndAgency _agency msg) = namesForTTxMonitor''' msg + + namesForTTxMonitor''' :: Message (LTM.LocalTxMonitor (GenTxId blk) (GenTx blk) SlotNo) + from to + -> [Text] + namesForTTxMonitor''' LTM.MsgAcquire {} = ["Acquire"] + namesForTTxMonitor''' LTM.MsgAcquired {} = ["Acquired"] + namesForTTxMonitor''' LTM.MsgAwaitAcquire {} = ["AwaitAcquire"] + namesForTTxMonitor''' LTM.MsgNextTx {} = ["NextTx"] + namesForTTxMonitor''' LTM.MsgReplyNextTx {} = ["ReplyNextTx"] + namesForTTxMonitor''' LTM.MsgHasTx {} = ["HasTx"] + namesForTTxMonitor''' LTM.MsgReplyHasTx {} = ["ReplyHasTx"] + namesForTTxMonitor''' LTM.MsgGetSizes {} = ["GetSizes"] + namesForTTxMonitor''' LTM.MsgReplyGetSizes {} = ["ReplyGetSizes"] + namesForTTxMonitor''' LTM.MsgRelease {} = ["Release"] + namesForTTxMonitor''' LTM.MsgDone {} = ["Done"] + +instance LogFormatting (AnyMessageAndAgency (LTM.LocalTxMonitor txid tx slotNo)) where + forMachine _dtal (AnyMessageAndAgency stok LTM.MsgAcquire {}) = + mkObject [ "kind" .= String "MsgAcquire" + , "agency" .= String (pack $ show stok) + ] + forMachine _dtal (AnyMessageAndAgency stok LTM.MsgAcquired {}) = + mkObject [ "kind" .= String "MsgAcquired" + , "agency" .= String (pack $ show stok) + ] + forMachine _dtal (AnyMessageAndAgency stok LTM.MsgAwaitAcquire {}) = + mkObject [ "kind" .= String "MsgAwaitAcquire" + , "agency" .= String (pack $ show stok) + ] + forMachine _dtal (AnyMessageAndAgency stok LTM.MsgNextTx {}) = + mkObject [ "kind" .= String "MsgNextTx" + , "agency" .= String (pack $ show stok) + ] + forMachine _dtal (AnyMessageAndAgency stok LTM.MsgReplyNextTx {}) = + mkObject [ "kind" .= String "MsgReplyNextTx" + , "agency" .= String (pack $ show stok) + ] + forMachine _dtal (AnyMessageAndAgency stok LTM.MsgHasTx {}) = + mkObject [ "kind" .= String "MsgHasTx" + , "agency" .= String (pack $ show stok) + ] + forMachine _dtal (AnyMessageAndAgency stok LTM.MsgReplyHasTx {}) = + mkObject [ "kind" .= String "MsgReplyHasTx" + , "agency" .= String (pack $ show stok) + ] + forMachine _dtal (AnyMessageAndAgency stok LTM.MsgGetSizes {}) = + mkObject [ "kind" .= String "MsgGetSizes" + , "agency" .= String (pack $ show stok) + ] + forMachine _dtal (AnyMessageAndAgency stok LTM.MsgReplyGetSizes {}) = + mkObject [ "kind" .= String "MsgReplyGetSizes" + , "agency" .= String (pack $ show stok) + ] + forMachine _dtal (AnyMessageAndAgency stok LTM.MsgRelease {}) = + mkObject [ "kind" .= String "MsgRelease" + , "agency" .= String (pack $ show stok) + ] + forMachine _dtal (AnyMessageAndAgency stok LTM.MsgDone {}) = + mkObject [ "kind" .= String "MsgDone" + , "agency" .= String (pack $ show stok) + ] + +docTTxMonitor :: Documented + (TraceLabelPeer + localPeer + (TraceSendRecv + (LTM.LocalTxMonitor + (GenTxId blk) (GenTx blk) SlotNo))) +docTTxMonitor = Documented + [ DocMsg + (TraceLabelPeer anyProto + (TraceSendMsg (AnyMessageAndAgency anyProto LTM.MsgAcquire))) + [] + "" + , DocMsg + (TraceLabelPeer anyProto + (TraceSendMsg (AnyMessageAndAgency anyProto (LTM.MsgAcquired anyProto)))) + [] + "" + , DocMsg + (TraceLabelPeer anyProto + (TraceSendMsg (AnyMessageAndAgency anyProto LTM.MsgAwaitAcquire))) + [] + "" + , DocMsg + (TraceLabelPeer anyProto + (TraceSendMsg (AnyMessageAndAgency anyProto LTM.MsgNextTx))) + [] + "" + , DocMsg + (TraceLabelPeer anyProto + (TraceSendMsg (AnyMessageAndAgency anyProto (LTM.MsgReplyNextTx anyProto)))) + [] + "" + , DocMsg + (TraceLabelPeer anyProto + (TraceSendMsg (AnyMessageAndAgency anyProto (LTM.MsgHasTx anyProto)))) + [] + "" + , DocMsg + (TraceLabelPeer anyProto + (TraceSendMsg (AnyMessageAndAgency anyProto (LTM.MsgReplyHasTx anyProto)))) + [] + "" + , DocMsg + (TraceLabelPeer anyProto + (TraceSendMsg (AnyMessageAndAgency anyProto LTM.MsgGetSizes))) + [] + "" + , DocMsg + (TraceLabelPeer anyProto + (TraceSendMsg (AnyMessageAndAgency anyProto (LTM.MsgReplyGetSizes anyProto)))) + [] + "" + , DocMsg + (TraceLabelPeer anyProto + (TraceSendMsg (AnyMessageAndAgency anyProto LTM.MsgRelease))) + [] + "" + , DocMsg + (TraceLabelPeer anyProto + (TraceSendMsg (AnyMessageAndAgency anyProto LTM.MsgDone))) + [] + "" + ] + -------------------------------------------------------------------------------- -- LocalTxSubmission Tracer -------------------------------------------------------------------------------- diff --git a/cardano-node/src/Cardano/Node/Tracing/Tracers/P2P.hs b/cardano-node/src/Cardano/Node/Tracing/Tracers/P2P.hs index b4490bb57da..e24167444c9 100644 --- a/cardano-node/src/Cardano/Node/Tracing/Tracers/P2P.hs +++ b/cardano-node/src/Cardano/Node/Tracing/Tracers/P2P.hs @@ -239,6 +239,7 @@ namesForPeerSelection TracePromoteWarmPeers {} = ["PromoteWarmPeers"] namesForPeerSelection TracePromoteWarmLocalPeers {} = ["PromoteWarmLocalPeers"] namesForPeerSelection TracePromoteWarmFailed {} = ["PromoteWarmFailed"] namesForPeerSelection TracePromoteWarmDone {} = ["PromoteWarmDone"] +namesForPeerSelection TracePromoteWarmAborted {} = ["PromoteWarmAborted"] namesForPeerSelection TraceDemoteWarmPeers {} = ["DemoteWarmPeers"] namesForPeerSelection TraceDemoteWarmFailed {} = ["DemoteWarmFailed"] namesForPeerSelection TraceDemoteWarmDone {} = ["DemoteWarmDone"] @@ -269,6 +270,7 @@ severityPeerSelection TracePromoteWarmPeers {} = Info severityPeerSelection TracePromoteWarmLocalPeers {} = Info severityPeerSelection TracePromoteWarmFailed {} = Info severityPeerSelection TracePromoteWarmDone {} = Info +severityPeerSelection TracePromoteWarmAborted {} = Info severityPeerSelection TraceDemoteWarmPeers {} = Info severityPeerSelection TraceDemoteWarmFailed {} = Info severityPeerSelection TraceDemoteWarmDone {} = Info @@ -376,6 +378,12 @@ instance LogFormatting (TracePeerSelection SockAddr) where , "actualActive" .= aActive , "peer" .= toJSON p ] + forMachine _dtal (TracePromoteWarmAborted tActive aActive p) = + mkObject [ "kind" .= String "PromoteWarmAborted" + , "targetActive" .= tActive + , "actualActive" .= aActive + , "peer" .= toJSON p + ] forMachine _dtal (TraceDemoteWarmPeers tEst aEst sp) = mkObject [ "kind" .= String "DemoteWarmPeers" , "targetEstablished" .= tEst @@ -1373,3 +1381,36 @@ docInboundGovernor peerAddr = Documented -- [] -- "" ] + +-------------------------------------------------------------------------------- +-- InboundGovernor Transition Tracer +-------------------------------------------------------------------------------- + +namesForInboundGovernorTransition + :: InboundGovernor.RemoteTransitionTrace peerAddr -> [Text] +namesForInboundGovernorTransition _ = ["InboundGovernorTransition"] + +severityInboundGovernorTransition + :: InboundGovernor.RemoteTransitionTrace peerAddr -> SeverityS +severityInboundGovernorTransition _ = Debug + +instance (Show peerAddr, ToJSON peerAddr) + => LogFormatting (InboundGovernor.RemoteTransitionTrace peerAddr) where + forMachine _dtal (ConnectionManager.TransitionTrace peerAddr tr) = + mkObject $ reverse + [ "kind" .= String "ConnectionManagerTransition" + , "address" .= toJSON peerAddr + , "from" .= toJSON (ConnectionManager.fromState tr) + , "to" .= toJSON (ConnectionManager.toState tr) + ] + forHuman = pack . show + asMetrics _ = [] + +docInboundGovernorTransition + :: Documented (InboundGovernor.RemoteTransitionTrace peerAddr) +docInboundGovernorTransition = Documented + [ DocMsg + anyProto + [] + "" + ] diff --git a/cardano-node/src/Cardano/Tracing/Config.hs b/cardano-node/src/Cardano/Tracing/Config.hs index dcf6a113e2e..1c3db0b98ee 100644 --- a/cardano-node/src/Cardano/Tracing/Config.hs +++ b/cardano-node/src/Cardano/Tracing/Config.hs @@ -66,6 +66,7 @@ type TraceLocalInboundGovernor = ("TraceLocalInboundGovernor" :: Symbol) type TraceLocalRootPeers = ("TraceLocalRootPeers" :: Symbol) type TraceLocalServer = ("TraceLocalServer" :: Symbol) type TraceLocalStateQueryProtocol = ("TraceLocalStateQueryProtocol" :: Symbol) +type TraceLocalTxMonitorProtocol = ("TraceLocalTxMonitorProtocol" :: Symbol) type TraceLocalTxSubmissionProtocol = ("TraceLocalTxSubmissionProtocol" :: Symbol) type TraceLocalTxSubmissionServer = ("TraceLocalTxSubmissionServer" :: Symbol) type TraceMempool = ("TraceMempool" :: Symbol) @@ -134,6 +135,7 @@ data TraceSelection , traceLocalRootPeers :: OnOff TraceLocalRootPeers , traceLocalServer :: OnOff TraceLocalServer , traceLocalStateQueryProtocol :: OnOff TraceLocalStateQueryProtocol + , traceLocalTxMonitorProtocol :: OnOff TraceLocalTxMonitorProtocol , traceLocalTxSubmissionProtocol :: OnOff TraceLocalTxSubmissionProtocol , traceLocalTxSubmissionServer :: OnOff TraceLocalTxSubmissionServer , traceMempool :: OnOff TraceMempool @@ -226,6 +228,8 @@ traceConfigParser v ctor = localServer = OnOff False localStateQueryProtocol :: OnOff TraceLocalStateQueryProtocol localStateQueryProtocol = OnOff False + localTxMonitorProtocol :: OnOff TraceLocalTxMonitorProtocol + localTxMonitorProtocol = OnOff False localTxSubmissionProtocol :: OnOff TraceLocalTxSubmissionProtocol localTxSubmissionProtocol = OnOff False localTxSubmissionServer :: OnOff TraceLocalTxSubmissionServer @@ -295,6 +299,7 @@ traceConfigParser v ctor = <*> v .:? getName localRootPeers .!= localRootPeers <*> v .:? getName localServer .!= localServer <*> v .:? getName localStateQueryProtocol .!= localStateQueryProtocol + <*> v .:? getName localTxMonitorProtocol .!= localTxMonitorProtocol <*> v .:? getName localTxSubmissionProtocol .!= localTxSubmissionProtocol <*> v .:? getName localTxSubmissionServer .!= localTxSubmissionServer <*> v .:? getName mempool .!= mempool diff --git a/cardano-node/src/Cardano/Tracing/OrphanInstances/Network.hs b/cardano-node/src/Cardano/Tracing/OrphanInstances/Network.hs index 567d70e384f..36a67ea8a9f 100644 --- a/cardano-node/src/Cardano/Tracing/OrphanInstances/Network.hs +++ b/cardano-node/src/Cardano/Tracing/OrphanInstances/Network.hs @@ -87,6 +87,8 @@ import Ouroboros.Network.Protocol.Handshake (HandshakeException (..), HandshakeProtocolError (..), RefuseReason (..)) import Ouroboros.Network.Protocol.LocalStateQuery.Type (LocalStateQuery) import qualified Ouroboros.Network.Protocol.LocalStateQuery.Type as LocalStateQuery +import Ouroboros.Network.Protocol.LocalTxMonitor.Type (LocalTxMonitor) +import qualified Ouroboros.Network.Protocol.LocalTxMonitor.Type as LocalTxMonitor import Ouroboros.Network.Protocol.LocalTxSubmission.Type (LocalTxSubmission) import qualified Ouroboros.Network.Protocol.LocalTxSubmission.Type as LocalTxSub import Ouroboros.Network.Protocol.Trans.Hello.Type (Hello) @@ -396,6 +398,7 @@ instance HasSeverityAnnotation (TracePeerSelection addr) where TracePromoteWarmLocalPeers {} -> Info TracePromoteWarmFailed {} -> Info TracePromoteWarmDone {} -> Info + TracePromoteWarmAborted {} -> Info TraceDemoteWarmPeers {} -> Info TraceDemoteWarmFailed {} -> Info TraceDemoteWarmDone {} -> Info @@ -557,6 +560,10 @@ instance ToObject localPeer => Transformable Text IO (TraceLabelPeer localPeer (NtN.TraceSendRecv (ChainSync (Serialised blk) (Point blk) (Tip blk)))) where trTransformer = trStructured +instance (applyTxErr ~ ApplyTxErr blk, ToObject localPeer) + => Transformable Text IO (TraceLabelPeer localPeer (NtN.TraceSendRecv (LocalTxMonitor (GenTxId blk) (GenTx blk) SlotNo))) where + trTransformer = trStructured + instance (applyTxErr ~ ApplyTxErr blk, ToObject localPeer) => Transformable Text IO (TraceLabelPeer localPeer (NtN.TraceSendRecv (LocalTxSubmission (GenTx blk) applyTxErr))) where trTransformer = trStructured @@ -809,6 +816,52 @@ instance (forall result. Show (query result)) , "agency" .= String (pack $ show stok) ] +instance ToObject (AnyMessageAndAgency (LocalTxMonitor txid tx slotno)) where + toObject _verb (AnyMessageAndAgency stok LocalTxMonitor.MsgAcquire {}) = + mkObject [ "kind" .= String "MsgAcuire" + , "agency" .= String (pack $ show stok) + ] + toObject _verb (AnyMessageAndAgency stok LocalTxMonitor.MsgAcquired {}) = + mkObject [ "kind" .= String "MsgAcuired" + , "agency" .= String (pack $ show stok) + ] + toObject _verb (AnyMessageAndAgency stok LocalTxMonitor.MsgAwaitAcquire {}) = + mkObject [ "kind" .= String "MsgAwaitAcuire" + , "agency" .= String (pack $ show stok) + ] + toObject _verb (AnyMessageAndAgency stok LocalTxMonitor.MsgNextTx {}) = + mkObject [ "kind" .= String "MsgNextTx" + , "agency" .= String (pack $ show stok) + ] + toObject _verb (AnyMessageAndAgency stok LocalTxMonitor.MsgReplyNextTx {}) = + mkObject [ "kind" .= String "MsgReplyNextTx" + , "agency" .= String (pack $ show stok) + ] + toObject _verb (AnyMessageAndAgency stok LocalTxMonitor.MsgHasTx {}) = + mkObject [ "kind" .= String "MsgHasTx" + , "agency" .= String (pack $ show stok) + ] + toObject _verb (AnyMessageAndAgency stok LocalTxMonitor.MsgReplyHasTx {}) = + mkObject [ "kind" .= String "MsgReplyHasTx" + , "agency" .= String (pack $ show stok) + ] + toObject _verb (AnyMessageAndAgency stok LocalTxMonitor.MsgGetSizes {}) = + mkObject [ "kind" .= String "MsgGetSizes" + , "agency" .= String (pack $ show stok) + ] + toObject _verb (AnyMessageAndAgency stok LocalTxMonitor.MsgReplyGetSizes {}) = + mkObject [ "kind" .= String "MsgReplyGetSizes" + , "agency" .= String (pack $ show stok) + ] + toObject _verb (AnyMessageAndAgency stok LocalTxMonitor.MsgRelease {}) = + mkObject [ "kind" .= String "MsgRelease" + , "agency" .= String (pack $ show stok) + ] + toObject _verb (AnyMessageAndAgency stok LocalTxMonitor.MsgDone {}) = + mkObject [ "kind" .= String "MsgDone" + , "agency" .= String (pack $ show stok) + ] + instance ToObject (AnyMessageAndAgency (LocalTxSubmission tx err)) where toObject _verb (AnyMessageAndAgency stok LocalTxSub.MsgSubmitTx{}) = mkObject [ "kind" .= String "MsgSubmitTx" @@ -1454,6 +1507,12 @@ instance ToObject (TracePeerSelection SockAddr) where , "actualActive" .= aActive , "peer" .= toJSON p ] + toObject _verb (TracePromoteWarmAborted tActive aActive p) = + mkObject [ "kind" .= String "PromoteWarmAborted" + , "targetActive" .= tActive + , "actualActive" .= aActive + , "peer" .= toJSON p + ] toObject _verb (TraceDemoteWarmPeers tEst aEst sp) = mkObject [ "kind" .= String "DemoteWarmPeers" , "targetEstablished" .= tEst diff --git a/cardano-node/src/Cardano/Tracing/Tracers.hs b/cardano-node/src/Cardano/Tracing/Tracers.hs index d110dd5f947..efec35b608e 100644 --- a/cardano-node/src/Cardano/Tracing/Tracers.hs +++ b/cardano-node/src/Cardano/Tracing/Tracers.hs @@ -444,6 +444,7 @@ mkTracers _ _ _ _ _ enableP2P = } , nodeToClientTracers = NodeToClient.Tracers { NodeToClient.tChainSyncTracer = nullTracer + , NodeToClient.tTxMonitorTracer = nullTracer , NodeToClient.tTxSubmissionTracer = nullTracer , NodeToClient.tStateQueryTracer = nullTracer } @@ -1267,6 +1268,9 @@ nodeToClientTracers' trSel verb tr = { NodeToClient.tChainSyncTracer = tracerOnOff (traceLocalChainSyncProtocol trSel) verb "LocalChainSyncProtocol" tr + , NodeToClient.tTxMonitorTracer = + tracerOnOff (traceLocalTxMonitorProtocol trSel) + verb "LocalTxMonitorProtocol" tr , NodeToClient.tTxSubmissionTracer = tracerOnOff (traceLocalTxSubmissionProtocol trSel) verb "LocalTxSubmissionProtocol" tr From 05255365d537ee1e068b0682d441c969418e0d12 Mon Sep 17 00:00:00 2001 From: Marcin Szamotulski Date: Fri, 14 Jan 2022 12:58:27 +0100 Subject: [PATCH 4/8] Turn some p2p traces on by default * TraceConnectionManager * TraceInboundGovernor * TracePeerSelection * TracePeerSelectionActions All of them are not chatty if network conditions are stable. --- cardano-node/src/Cardano/Tracing/Config.hs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cardano-node/src/Cardano/Tracing/Config.hs b/cardano-node/src/Cardano/Tracing/Config.hs index 1c3db0b98ee..78986219f07 100644 --- a/cardano-node/src/Cardano/Tracing/Config.hs +++ b/cardano-node/src/Cardano/Tracing/Config.hs @@ -179,7 +179,7 @@ traceConfigParser v ctor = chainSyncProtocol :: OnOff TraceChainSyncProtocol chainSyncProtocol = OnOff False connectionManager :: OnOff TraceConnectionManager - connectionManager = OnOff False + connectionManager = OnOff True connectionManagerCounters :: OnOff TraceConnectionManagerCounters connectionManagerCounters = OnOff True debugPeerSelectionInitiator :: OnOff DebugPeerSelectionInitiator @@ -201,7 +201,7 @@ traceConfigParser v ctor = handshake :: OnOff TraceHandshake handshake = OnOff False inboundGovernor :: OnOff TraceInboundGovernor - inboundGovernor = OnOff False + inboundGovernor = OnOff True inboundGovernorCounters :: OnOff TraceInboundGovernorCounters inboundGovernorCounters = OnOff True ipSubscription :: OnOff TraceIpSubscription @@ -239,11 +239,11 @@ traceConfigParser v ctor = mux :: OnOff TraceMux mux = OnOff True peerSelection :: OnOff TracePeerSelection - peerSelection = OnOff False + peerSelection = OnOff True peerSelectionCounters :: OnOff TracePeerSelectionCounters peerSelectionCounters = OnOff True peerSelectionActions :: OnOff TracePeerSelectionActions - peerSelectionActions = OnOff False + peerSelectionActions = OnOff True publicRootPeers :: OnOff TracePublicRootPeers publicRootPeers = OnOff False server :: OnOff TraceServer From 086e3b64c37efe97adc75ed1b7796ef48ab543ca Mon Sep 17 00:00:00 2001 From: Marcin Szamotulski Date: Fri, 14 Jan 2022 12:58:28 +0100 Subject: [PATCH 5/8] Fixed peer selection counters misconfiguration Peer selection counters should be logged if `tracePeerSelectionCounters` is set, not `tracePeerSelection`. Their name space should be `PeerSelectionCounters` not `PeerSelection`. --- cardano-node/src/Cardano/Tracing/Tracers.hs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cardano-node/src/Cardano/Tracing/Tracers.hs b/cardano-node/src/Cardano/Tracing/Tracers.hs index efec35b608e..9401a6f5da1 100644 --- a/cardano-node/src/Cardano/Tracing/Tracers.hs +++ b/cardano-node/src/Cardano/Tracing/Tracers.hs @@ -361,8 +361,8 @@ mkTracers blockConfig tOpts@(TracingOnLegacy trSel) tr nodeKern ekgDirect enable tracePeerSelectionCountersMetrics (tracePeerSelectionCounters trSel) ekgDirect - <> tracerOnOff (tracePeerSelection trSel) - verb "PeerSelection" tr + <> tracerOnOff (tracePeerSelectionCounters trSel) + verb "PeerSelectionCounters" tr , P2P.dtPeerSelectionActionsTracer = tracerOnOff (tracePeerSelectionActions trSel) verb "PeerSelectionActions" tr From 2ff57671aed8e1a83a3e94e7e3a22ae9c209c9dd Mon Sep 17 00:00:00 2001 From: Marcin Szamotulski Date: Fri, 14 Jan 2022 12:58:29 +0100 Subject: [PATCH 6/8] connection-manager & inbound governor transition tracers --- .../src/Cardano/Node/Tracing/Tracers.hs | 22 ++++++-- .../src/Cardano/Node/Tracing/Tracers/P2P.hs | 44 ++++++++++++++- cardano-node/src/Cardano/Tracing/Config.hs | 10 ++++ .../Tracing/OrphanInstances/Network.hs | 56 +++++++++++++++++++ cardano-node/src/Cardano/Tracing/Tracers.hs | 8 ++- 5 files changed, 133 insertions(+), 7 deletions(-) diff --git a/cardano-node/src/Cardano/Node/Tracing/Tracers.hs b/cardano-node/src/Cardano/Node/Tracing/Tracers.hs index 3e44fc001bf..8d54190d5f9 100644 --- a/cardano-node/src/Cardano/Node/Tracing/Tracers.hs +++ b/cardano-node/src/Cardano/Node/Tracing/Tracers.hs @@ -593,6 +593,13 @@ mkDiffusionTracersExtra trBase trForward mbTrEKG _trDataPoint trConfig EnabledP2 severityConnectionManager allPublic configureTracers trConfig docConnectionManager [connectionManagerTr] + connectionManagerTransitionsTr <- mkCardanoTracer + trBase trForward mbTrEKG + "ConnectionManagerTransition" + (namesForConnectionManagerTransition @RemoteAddress) + severityConnectionManagerTransition + allPublic + configureTracers trConfig docConnectionManagerTransition [connectionManagerTransitionsTr] serverTr <- mkCardanoTracer trBase trForward mbTrEKG "Server" @@ -607,6 +614,13 @@ mkDiffusionTracersExtra trBase trForward mbTrEKG _trDataPoint trConfig EnabledP2 severityInboundGovernor allPublic configureTracers trConfig docInboundGovernorRemote [inboundGovernorTr] + inboundGovernorTransitionsTr <- mkCardanoTracer + trBase trForward mbTrEKG + "InboundGovernorTransition" + namesForInboundGovernorTransition + severityInboundGovernorTransition + allPublic + configureTracers trConfig docInboundGovernorRemote [inboundGovernorTr] localConnectionManagerTr <- mkCardanoTracer trBase trForward mbTrEKG "LocalConnectionManager" @@ -645,14 +659,14 @@ mkDiffusionTracersExtra trBase trForward mbTrEKG _trDataPoint trConfig EnabledP2 traceWith peerSelectionActionsTr , P2P.dtConnectionManagerTracer = Tracer $ traceWith connectionManagerTr - , P2P.dtConnectionManagerTransitionTracer = mempty - --TODO Add transition tracers later + , P2P.dtConnectionManagerTransitionTracer = Tracer $ + traceWith connectionManagerTransitionsTr , P2P.dtServerTracer = Tracer $ traceWith serverTr , P2P.dtInboundGovernorTracer = Tracer $ traceWith inboundGovernorTr - , P2P.dtInboundGovernorTransitionTracer = mempty - --TODO Add transition tracers later + , P2P.dtInboundGovernorTransitionTracer = Tracer $ + traceWith inboundGovernorTransitionsTr , P2P.dtLocalConnectionManagerTracer = Tracer $ traceWith localConnectionManagerTr , P2P.dtLocalServerTracer = Tracer $ diff --git a/cardano-node/src/Cardano/Node/Tracing/Tracers/P2P.hs b/cardano-node/src/Cardano/Node/Tracing/Tracers/P2P.hs index e24167444c9..2a3216cc623 100644 --- a/cardano-node/src/Cardano/Node/Tracing/Tracers/P2P.hs +++ b/cardano-node/src/Cardano/Node/Tracing/Tracers/P2P.hs @@ -38,6 +38,10 @@ module Cardano.Node.Tracing.Tracers.P2P , severityConnectionManager , docConnectionManager + , namesForConnectionManagerTransition + , severityConnectionManagerTransition + , docConnectionManagerTransition + , namesForServer , severityServer , docServer @@ -47,6 +51,10 @@ module Cardano.Node.Tracing.Tracers.P2P , docInboundGovernorLocal , docInboundGovernorRemote + , namesForInboundGovernorTransition + , severityInboundGovernorTransition + , docInboundGovernorTransition + ) where import Cardano.Logging @@ -1055,6 +1063,40 @@ docConnectionManager = Documented "" ] +-------------------------------------------------------------------------------- +-- Connection Manager Transition Tracer +-------------------------------------------------------------------------------- + +namesForConnectionManagerTransition + :: ConnectionManager.AbstractTransitionTrace peerAddr -> [Text] +namesForConnectionManagerTransition ConnectionManager.TransitionTrace {} = + ["ConnectionManagerTransition" ] + +severityConnectionManagerTransition + :: ConnectionManager.AbstractTransitionTrace peerAddr -> SeverityS +severityConnectionManagerTransition _ = Debug + +instance (Show peerAddr, ToJSON peerAddr) + => LogFormatting (ConnectionManager.AbstractTransitionTrace peerAddr) where + forMachine _dtal (ConnectionManager.TransitionTrace peerAddr tr) = + mkObject $ reverse + [ "kind" .= String "ConnectionManagerTransition" + , "address" .= toJSON peerAddr + , "from" .= toJSON (ConnectionManager.fromState tr) + , "to" .= toJSON (ConnectionManager.toState tr) + ] + forHuman = pack . show + asMetrics _ = [] + +docConnectionManagerTransition + :: Documented (ConnectionManager.AbstractTransitionTrace peerAddr) +docConnectionManagerTransition = Documented + [ DocMsg + (ConnectionManager.TransitionTrace anyProto anyProto) + [] + "" + ] + -------------------------------------------------------------------------------- -- Server Tracer -------------------------------------------------------------------------------- @@ -1396,7 +1438,7 @@ severityInboundGovernorTransition _ = Debug instance (Show peerAddr, ToJSON peerAddr) => LogFormatting (InboundGovernor.RemoteTransitionTrace peerAddr) where - forMachine _dtal (ConnectionManager.TransitionTrace peerAddr tr) = + forMachine _dtal (InboundGovernor.TransitionTrace peerAddr tr) = mkObject $ reverse [ "kind" .= String "ConnectionManagerTransition" , "address" .= toJSON peerAddr diff --git a/cardano-node/src/Cardano/Tracing/Config.hs b/cardano-node/src/Cardano/Tracing/Config.hs index 78986219f07..d144e8c2a91 100644 --- a/cardano-node/src/Cardano/Tracing/Config.hs +++ b/cardano-node/src/Cardano/Tracing/Config.hs @@ -46,6 +46,7 @@ type TraceChainSyncHeaderServer = ("TraceChainSyncHeaderServer" :: Symbol) type TraceChainSyncProtocol = ("TraceChainSyncProtocol" :: Symbol) type TraceConnectionManager = ("TraceConnectionManager" :: Symbol) type TraceConnectionManagerCounters = ("TraceConnectionManagerCounters" :: Symbol) +type TraceConnectionManagerTransitions = ("TraceConnectionManagerTransitions" :: Symbol) type DebugPeerSelectionInitiator = ("DebugPeerSelectionInitiator" :: Symbol) type DebugPeerSelectionInitiatorResponder = ("DebugPeerSelectionInitiatorResponder" :: Symbol) type TraceDiffusionInitialization = ("TraceDiffusionInitialization" :: Symbol) @@ -79,6 +80,7 @@ type TracePublicRootPeers = ("TracePublicRootPeers" :: Symbol) type TraceServer = ("TraceServer" :: Symbol) type TraceInboundGovernor = ("TraceInboundGovernor" :: Symbol) type TraceInboundGovernorCounters = ("TraceInboundGovernorCounters" :: Symbol) +type TraceInboundGovernorTransitions = ("TraceInboundGovernorTransitions" :: Symbol) type TraceTxInbound = ("TraceTxInbound" :: Symbol) type TraceTxOutbound = ("TraceTxOutbound" :: Symbol) type TraceTxSubmissionProtocol = ("TraceTxSubmissionProtocol" :: Symbol) @@ -112,6 +114,7 @@ data TraceSelection , traceChainSyncProtocol :: OnOff TraceChainSyncProtocol , traceConnectionManager :: OnOff TraceConnectionManager , traceConnectionManagerCounters :: OnOff TraceConnectionManagerCounters + , traceConnectionManagerTransitions :: OnOff TraceConnectionManagerTransitions , traceDebugPeerSelectionInitiatorTracer :: OnOff DebugPeerSelectionInitiator , traceDebugPeerSelectionInitiatorResponderTracer :: OnOff DebugPeerSelectionInitiatorResponder , traceDiffusionInitialization :: OnOff TraceDiffusionInitialization @@ -123,6 +126,7 @@ data TraceSelection , traceHandshake :: OnOff TraceHandshake , traceInboundGovernor :: OnOff TraceInboundGovernor , traceInboundGovernorCounters :: OnOff TraceInboundGovernorCounters + , traceInboundGovernorTransitions :: OnOff TraceInboundGovernorTransitions , traceIpSubscription :: OnOff TraceIpSubscription , traceKeepAliveClient :: OnOff TraceKeepAliveClient , traceLedgerPeers :: OnOff TraceLedgerPeers @@ -182,6 +186,8 @@ traceConfigParser v ctor = connectionManager = OnOff True connectionManagerCounters :: OnOff TraceConnectionManagerCounters connectionManagerCounters = OnOff True + connectionManagerTransitions :: OnOff TraceConnectionManagerTransitions + connectionManagerTransitions = OnOff False debugPeerSelectionInitiator :: OnOff DebugPeerSelectionInitiator debugPeerSelectionInitiator = OnOff False debugPeerSelectionInitiatorResponder :: OnOff DebugPeerSelectionInitiatorResponder @@ -204,6 +210,8 @@ traceConfigParser v ctor = inboundGovernor = OnOff True inboundGovernorCounters :: OnOff TraceInboundGovernorCounters inboundGovernorCounters = OnOff True + inboundGovernorTransitions :: OnOff TraceInboundGovernorTransitions + inboundGovernorTransitions = OnOff False ipSubscription :: OnOff TraceIpSubscription ipSubscription = OnOff True keepAliveClient :: OnOff TraceKeepAliveClient @@ -274,6 +282,7 @@ traceConfigParser v ctor = <*> v .:? getName chainSyncProtocol .!= chainSyncProtocol <*> v .:? getName connectionManager .!= connectionManager <*> v .:? getName connectionManagerCounters .!= connectionManagerCounters + <*> v .:? getName connectionManagerTransitions .!= connectionManagerTransitions <*> v .:? getName debugPeerSelectionInitiator .!= debugPeerSelectionInitiator <*> v .:? getName debugPeerSelectionInitiatorResponder @@ -287,6 +296,7 @@ traceConfigParser v ctor = <*> v .:? getName handshake .!= handshake <*> v .:? getName inboundGovernor .!= inboundGovernor <*> v .:? getName inboundGovernorCounters .!= inboundGovernorCounters + <*> v .:? getName inboundGovernorTransitions .!= inboundGovernorTransitions <*> v .:? getName ipSubscription .!= ipSubscription <*> v .:? getName keepAliveClient .!= keepAliveClient <*> v .:? getName ledgerPeers .!= ledgerPeers diff --git a/cardano-node/src/Cardano/Tracing/OrphanInstances/Network.hs b/cardano-node/src/Cardano/Tracing/OrphanInstances/Network.hs index 36a67ea8a9f..48591684ebf 100644 --- a/cardano-node/src/Cardano/Tracing/OrphanInstances/Network.hs +++ b/cardano-node/src/Cardano/Tracing/OrphanInstances/Network.hs @@ -462,6 +462,10 @@ instance HasSeverityAnnotation (ConnectionManagerTrace addr (ConnectionHandlerTr TrState {} -> Info ConnMgr.TrUnexpectedlyFalseAssertion {} -> Error +instance HasPrivacyAnnotation (ConnMgr.AbstractTransitionTrace addr) +instance HasSeverityAnnotation (ConnMgr.AbstractTransitionTrace addr) where + getSeverityAnnotation _ = Debug + instance HasPrivacyAnnotation (ServerTrace addr) instance HasSeverityAnnotation (ServerTrace addr) where getSeverityAnnotation ev = @@ -495,6 +499,10 @@ instance HasSeverityAnnotation (InboundGovernorTrace addr) where InboundGovernor.TrUnexpectedlyFalseAssertion {} -> Error +instance HasPrivacyAnnotation (Server.RemoteTransitionTrace addr) +instance HasSeverityAnnotation (Server.RemoteTransitionTrace addr) where + getSeverityAnnotation _ = Debug + -- -- | instances of @Transformable@ -- @@ -692,6 +700,13 @@ instance (Show addr, Show versionNumber, Show agreedOptions) (ConnectionHandlerTrace versionNumber agreedOptions)) where formatText a _ = pack (show a) +instance (Show addr, ToJSON addr, ToObject addr) + => Transformable Text IO (ConnMgr.AbstractTransitionTrace addr) where + trTransformer = trStructuredText +instance Show addr + => HasTextFormatter (ConnMgr.AbstractTransitionTrace addr) where + formatText a _ = pack (show a) + instance (Show addr, ToObject addr, ToJSON addr) => Transformable Text IO (ServerTrace addr) where trTransformer = trStructuredText @@ -706,6 +721,13 @@ instance Show addr => HasTextFormatter (InboundGovernorTrace addr) where formatText a _ = pack (show a) +instance (Show addr, ToJSON addr) + => Transformable Text IO (Server.RemoteTransitionTrace addr) where + trTransformer = trStructuredText +instance Show addr + => HasTextFormatter (Server.RemoteTransitionTrace addr) where + formatText a _ = pack (show a) + -- -- | instances of @ToObject@ -- @@ -1921,6 +1943,31 @@ instance (Show addr, Show versionNumber, Show agreedOptions, ToObject addr, , "info" .= String (pack . show $ info) ] +instance ToJSON state => ToJSON (ConnMgr.MaybeUnknown state) where + toJSON (ConnMgr.Known st) = + Aeson.object + [ "state" .= toJSON st + , "type" .= String "known" + ] + toJSON (ConnMgr.Race st) = + Aeson.object + [ "state" .= toJSON st + , "type" .= String "race" + ] + toJSON ConnMgr.Unknown = + Aeson.object + [ "type" .= String "unknown" ] + + +instance (Show addr, ToObject addr, ToJSON addr) + => ToObject (ConnMgr.AbstractTransitionTrace addr) where + toObject _verb (ConnMgr.TransitionTrace addr tr) = + mkObject [ "kind" .= String "ConnectionManagerTransition" + , "address" .= toJSON addr + , "from" .= toJSON (ConnMgr.fromState tr) + , "to" .= toJSON (ConnMgr.toState tr) + ] + instance (Show addr, ToObject addr, ToJSON addr) => ToObject (ServerTrace addr) where toObject verb (TrAcceptConnection peerAddr) = @@ -2083,3 +2130,12 @@ instance (ToJSON addr, Show addr) mkObject [ "kind" .= String "UnexpectedlyFalseAssertion" , "remoteSt" .= String (pack . show $ info) ] + +instance ToJSON addr + => ToObject (Server.RemoteTransitionTrace addr) where + toObject _verb (ConnMgr.TransitionTrace addr tr) = + mkObject [ "kind" .= String "InboundGovernorTransition" + , "address" .= toJSON addr + , "from" .= toJSON (ConnMgr.fromState tr) + , "to" .= toJSON (ConnMgr.toState tr) + ] diff --git a/cardano-node/src/Cardano/Tracing/Tracers.hs b/cardano-node/src/Cardano/Tracing/Tracers.hs index 9401a6f5da1..5b20b70cc03 100644 --- a/cardano-node/src/Cardano/Tracing/Tracers.hs +++ b/cardano-node/src/Cardano/Tracing/Tracers.hs @@ -372,7 +372,9 @@ mkTracers blockConfig tOpts@(TracingOnLegacy trSel) tr nodeKern ekgDirect enable ekgDirect <> tracerOnOff (traceConnectionManager trSel) verb "ConnectionManager" tr - , P2P.dtConnectionManagerTransitionTracer = nullTracer -- TODO + , P2P.dtConnectionManagerTransitionTracer = + tracerOnOff (traceConnectionManagerTransitions trSel) + verb "ConnectionManagerTransition" tr , P2P.dtServerTracer = tracerOnOff (traceServer trSel) verb "Server" tr , P2P.dtInboundGovernorTracer = @@ -381,7 +383,9 @@ mkTracers blockConfig tOpts@(TracingOnLegacy trSel) tr nodeKern ekgDirect enable ekgDirect <> tracerOnOff (traceInboundGovernor trSel) verb "InboundGovernor" tr - , P2P.dtInboundGovernorTransitionTracer = nullTracer -- TODO + , P2P.dtInboundGovernorTransitionTracer = + tracerOnOff (traceInboundGovernorTransitions trSel) + verb "InboundGovernorTransition" tr , P2P.dtLocalConnectionManagerTracer = tracerOnOff (traceLocalConnectionManager trSel) verb "LocalConnectionManager" tr From 6b8f8162187a642937ebaa736a01d3f652ae85a9 Mon Sep 17 00:00:00 2001 From: Marcin Szamotulski Date: Fri, 21 Jan 2022 12:51:22 +0100 Subject: [PATCH 7/8] cardano-node: fix code formatting --- .../src/Cardano/Node/Tracing/Tracers.hs | 52 ++++++++++--------- 1 file changed, 28 insertions(+), 24 deletions(-) diff --git a/cardano-node/src/Cardano/Node/Tracing/Tracers.hs b/cardano-node/src/Cardano/Node/Tracing/Tracers.hs index 8d54190d5f9..538522ff28d 100644 --- a/cardano-node/src/Cardano/Node/Tracing/Tracers.hs +++ b/cardano-node/src/Cardano/Node/Tracing/Tracers.hs @@ -356,33 +356,37 @@ mkNodeToClientTracers :: forall blk. -> TraceConfig -> IO (NodeToClient.Tracers IO (ConnectionId LocalAddress) blk DeserialiseFailure) mkNodeToClientTracers trBase trForward mbTrEKG _trDataPoint trConfig = do - chainSyncTr <- mkCardanoTracer - trBase trForward mbTrEKG - "ChainSyncClient" - namesForTChainSync - severityTChainSync - allPublic + chainSyncTr <- + mkCardanoTracer + trBase trForward mbTrEKG + "ChainSyncClient" + namesForTChainSync + severityTChainSync + allPublic configureTracers trConfig docTChainSync [chainSyncTr] - txMonitorTr <- mkCardanoTracer - trBase trForward mbTrEKG - "TxMonitorClient" - namesForTTxMonitor - severityTTxMonitor - allPublic + txMonitorTr <- + mkCardanoTracer + trBase trForward mbTrEKG + "TxMonitorClient" + namesForTTxMonitor + severityTTxMonitor + allPublic configureTracers trConfig docTTxMonitor [txMonitorTr] - txSubmissionTr <- mkCardanoTracer - trBase trForward mbTrEKG - "TxSubmissionClient" - namesForTTxSubmission - severityTTxSubmission - allPublic + txSubmissionTr <- + mkCardanoTracer + trBase trForward mbTrEKG + "TxSubmissionClient" + namesForTTxSubmission + severityTTxSubmission + allPublic configureTracers trConfig docTTxSubmission [txSubmissionTr] - stateQueryTr <- mkCardanoTracer - trBase trForward mbTrEKG - "StateQueryClient" - namesForTStateQuery - severityTStateQuery - allPublic + stateQueryTr <- + mkCardanoTracer + trBase trForward mbTrEKG + "StateQueryClient" + namesForTStateQuery + severityTStateQuery + allPublic configureTracers trConfig docTStateQuery [stateQueryTr] pure $ NtC.Tracers { NtC.tChainSyncTracer = Tracer $ From cfe3da0be075b210c362a0e09d73461f257b73a0 Mon Sep 17 00:00:00 2001 From: Marcin Szamotulski Date: Fri, 21 Jan 2022 12:57:23 +0100 Subject: [PATCH 8/8] update CODEOWNERS for network tracers The network related tracers, has been codeowned by the networking team; let's preserve this for the new tracing system. --- CODEOWNERS | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CODEOWNERS b/CODEOWNERS index cedb1c63d6b..68ec9919ea1 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -41,4 +41,10 @@ cardano-node/src/Cardano/Tracing/OrphanInstances/Network.hs @devops @coot @kar cardano-node/src/Cardano/Node/Configuration/Logging.hs @devops cardano-node/src/Cardano/Node/Configuration/Socket.hs @devops cardano-node/src/Cardano/Node/Tracing @deepfire @denisshevchenko @jutaro +cardano-node/src/Cardano/Node/Tracing/Tracers/Diffusion.hs @deepfire @denisshevchenko @jutaro @coot @karknu +cardano-node/src/Cardano/Node/Tracing/Tracers/NodeToClient.hs @deepfire @denisshevchenko @jutaro @coot @karknu +cardano-node/src/Cardano/Node/Tracing/Tracers/NodeToServer.hs @deepfire @denisshevchenko @jutaro @coot @karknu +cardano-node/src/Cardano/Node/Tracing/Tracers/NonP2P.hs @deepfire @denisshevchenko @jutaro @coot @karknu +cardano-node/src/Cardano/Node/Tracing/Tracers/P2P.hs @deepfire @denisshevchenko @jutaro @coot @karknu +cardano-node/src/Cardano/Node/Tracing/Tracers/Peer.hs @deepfire @denisshevchenko @jutaro @coot @karknu cardano-node/src/Cardano/Node/Run.hs @devops