Skip to content

Commit

Permalink
connection-manager & inbound governor transition tracers
Browse files Browse the repository at this point in the history
  • Loading branch information
coot committed Jan 26, 2022
1 parent 086e3b6 commit 2ff5767
Show file tree
Hide file tree
Showing 5 changed files with 133 additions and 7 deletions.
22 changes: 18 additions & 4 deletions cardano-node/src/Cardano/Node/Tracing/Tracers.hs
Expand Up @@ -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"
Expand All @@ -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"
Expand Down Expand Up @@ -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 $
Expand Down
44 changes: 43 additions & 1 deletion cardano-node/src/Cardano/Node/Tracing/Tracers/P2P.hs
Expand Up @@ -38,6 +38,10 @@ module Cardano.Node.Tracing.Tracers.P2P
, severityConnectionManager
, docConnectionManager

, namesForConnectionManagerTransition
, severityConnectionManagerTransition
, docConnectionManagerTransition

, namesForServer
, severityServer
, docServer
Expand All @@ -47,6 +51,10 @@ module Cardano.Node.Tracing.Tracers.P2P
, docInboundGovernorLocal
, docInboundGovernorRemote

, namesForInboundGovernorTransition
, severityInboundGovernorTransition
, docInboundGovernorTransition

) where

import Cardano.Logging
Expand Down Expand Up @@ -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
--------------------------------------------------------------------------------
Expand Down Expand Up @@ -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
Expand Down
10 changes: 10 additions & 0 deletions cardano-node/src/Cardano/Tracing/Config.hs
Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand Down
56 changes: 56 additions & 0 deletions cardano-node/src/Cardano/Tracing/OrphanInstances/Network.hs
Expand Up @@ -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 =
Expand Down Expand Up @@ -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@
--
Expand Down Expand Up @@ -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
Expand All @@ -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@
--
Expand Down Expand Up @@ -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) =
Expand Down Expand Up @@ -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)
]
8 changes: 6 additions & 2 deletions cardano-node/src/Cardano/Tracing/Tracers.hs
Expand Up @@ -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 =
Expand All @@ -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
Expand Down

0 comments on commit 2ff5767

Please sign in to comment.