Skip to content

Commit bc51d09

Browse files
committed
connection-manager: counters
* Added `terminating` connections; * Fixed an issue when we trace counters, but they haven't changed.
1 parent 5db7495 commit bc51d09

File tree

2 files changed

+16
-13
lines changed
  • ouroboros-network-framework/src/Ouroboros/Network/ConnectionManager

2 files changed

+16
-13
lines changed

ouroboros-network-framework/src/Ouroboros/Network/ConnectionManager/Core.hs

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,12 @@ import Data.Typeable (Typeable)
4343
import GHC.Stack (CallStack, HasCallStack, callStack)
4444
import System.Random (StdGen, split)
4545

46+
import Data.List qualified as List
4647
import Data.Map.Strict (Map)
4748
import Data.Map.Strict qualified as Map
48-
import Data.Set qualified as Set
49-
5049
import Data.Monoid.Synchronisation
5150
import Data.Set (Set)
51+
import Data.Set qualified as Set
5252
import Data.Tuple (swap)
5353
import Data.Wedge
5454
import Data.Word (Word32)
@@ -209,14 +209,15 @@ connectionStateToCounters state =
209209
<> inboundConn
210210
<> outboundConn
211211

212-
TerminatingState {} -> mempty
212+
TerminatingState {} -> terminatingConn
213213
TerminatedState {} -> mempty
214214
where
215-
fullDuplexConn = ConnectionManagerCounters 1 0 0 0 0
216-
duplexConn = ConnectionManagerCounters 0 1 0 0 0
217-
unidirectionalConn = ConnectionManagerCounters 0 0 1 0 0
218-
inboundConn = ConnectionManagerCounters 0 0 0 1 0
219-
outboundConn = ConnectionManagerCounters 0 0 0 0 1
215+
fullDuplexConn = ConnectionManagerCounters 1 0 0 0 0 0
216+
duplexConn = ConnectionManagerCounters 0 1 0 0 0 0
217+
unidirectionalConn = ConnectionManagerCounters 0 0 1 0 0 0
218+
inboundConn = ConnectionManagerCounters 0 0 0 1 0 0
219+
outboundConn = ConnectionManagerCounters 0 0 0 0 1 0
220+
terminatingConn = ConnectionManagerCounters 0 0 0 0 0 1
220221

221222

222223
getConnThread :: ConnectionState peerAddr handle handleError version m
@@ -781,7 +782,8 @@ with args@Arguments {
781782
else return [ ]
782783

783784
traverse_ (traceWith trTracer . TransitionTrace connStateId) trs
784-
traceCounters stateVar
785+
when (not $ List.null trs) $
786+
traceCounters stateVar
785787

786788
-- Pruning is done in two stages:
787789
-- * an STM transaction which selects which connections to prune, and sets

ouroboros-network-framework/src/Ouroboros/Network/ConnectionManager/Types.hs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -695,16 +695,17 @@ data ConnectionManagerCounters = ConnectionManagerCounters {
695695
-- (including DuplexState connections)
696696
unidirectionalConns :: !Int, -- ^ number of negotiated unidirectional connections
697697
inboundConns :: !Int, -- ^ number of inbound connections
698-
outboundConns :: !Int -- ^ number of outbound connections
698+
outboundConns :: !Int, -- ^ number of outbound connections
699+
terminatingConns :: !Int -- ^ number of terminating connections
699700
}
700701
deriving (Show, Eq, Ord)
701702

702703
instance Semigroup ConnectionManagerCounters where
703-
ConnectionManagerCounters fd1 d1 s1 i1 o1 <> ConnectionManagerCounters fd2 d2 s2 i2 o2 =
704-
ConnectionManagerCounters (fd1 + fd2) (d1 + d2) (s1 + s2) (i1 + i2) (o1 + o2)
704+
ConnectionManagerCounters fd1 d1 s1 i1 o1 t1 <> ConnectionManagerCounters fd2 d2 s2 i2 o2 t2 =
705+
ConnectionManagerCounters (fd1 + fd2) (d1 + d2) (s1 + s2) (i1 + i2) (o1 + o2) (t1 + t2)
705706

706707
instance Monoid ConnectionManagerCounters where
707-
mempty = ConnectionManagerCounters 0 0 0 0 0
708+
mempty = ConnectionManagerCounters 0 0 0 0 0 0
708709

709710
-- | Exceptions used by 'ConnectionManager'.
710711
--

0 commit comments

Comments
 (0)