Skip to content

Commit e794fe4

Browse files
committed
tx-submission: added counters
1 parent aeacd43 commit e794fe4

File tree

4 files changed

+49
-2
lines changed

4 files changed

+49
-2
lines changed

ouroboros-network/src/Ouroboros/Network/TxSubmission/Inbound/V2/Registry.hs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -461,11 +461,12 @@ decisionLogicThread
461461
, Hashable peeraddr
462462
)
463463
=> Tracer m (TraceTxLogic peeraddr txid tx)
464+
-> Tracer m TxSubmissionCounters
464465
-> TxDecisionPolicy
465466
-> TxChannelsVar m peeraddr txid tx
466467
-> SharedTxStateVar m peeraddr txid tx
467468
-> m Void
468-
decisionLogicThread tracer policy txChannelsVar sharedStateVar = do
469+
decisionLogicThread tracer counterTracer policy txChannelsVar sharedStateVar = do
469470
labelThisThread "tx-decision"
470471
go
471472
where
@@ -493,6 +494,7 @@ decisionLogicThread tracer policy txChannelsVar sharedStateVar = do
493494
(Map.intersectionWith (,)
494495
txChannelMap
495496
decisions)
497+
traceWith counterTracer (mkTxSubmissionCounters st)
496498
go
497499

498500
-- Variant of modifyMVar_ that puts a default value if the MVar is empty.

ouroboros-network/src/Ouroboros/Network/TxSubmission/Inbound/V2/Types.hs

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,17 @@ module Ouroboros.Network.TxSubmission.Inbound.V2.Types
2626
, TxSubmissionMempoolWriter (..)
2727
-- ** Traces
2828
, TraceTxSubmissionInbound (..)
29+
, TxSubmissionCounters (..)
30+
, mkTxSubmissionCounters
2931
-- ** Protocol Error
3032
, TxSubmissionProtocolError (..)
3133
) where
3234

3335
import Control.Exception (Exception (..))
3436
import Control.Monad.Class.MonadTime.SI
3537
import Data.Map.Strict (Map)
38+
import Data.Map.Strict qualified as Map
39+
import Data.Monoid (Sum (..))
3640
import Data.Sequence.Strict (StrictSeq)
3741
import Data.Set (Set)
3842
import Data.Set qualified as Set
@@ -376,6 +380,43 @@ data TraceTxSubmissionInbound txid tx =
376380
deriving (Eq, Show)
377381

378382

383+
data TxSubmissionCounters =
384+
TxSubmissionCounters {
385+
numOfOutstandingTxIds :: Int,
386+
-- ^ txids which are not yet downloaded. This is a diff of keys sets of
387+
-- `referenceCounts` and a sum of `bufferedTxs` and
388+
-- `inbubmissionToMempoolTxs` maps.
389+
numOfBufferedTxs :: Int,
390+
-- ^ number of all buffered txs (downloaded or not available)
391+
numOfInSubmissionToMempoolTxs :: Int,
392+
-- ^ number of all tx's which were submitted to the mempool
393+
numOfTxIdsInflight :: Int
394+
-- ^ number of all in-flight txid's.
395+
}
396+
deriving (Eq, Show)
397+
398+
mkTxSubmissionCounters
399+
:: Ord txid
400+
=> SharedTxState peeraddr txid tx
401+
-> TxSubmissionCounters
402+
mkTxSubmissionCounters
403+
SharedTxState {
404+
inflightTxs,
405+
bufferedTxs,
406+
referenceCounts,
407+
inSubmissionToMempoolTxs
408+
}
409+
=
410+
TxSubmissionCounters {
411+
numOfOutstandingTxIds = Set.size $ Map.keysSet referenceCounts
412+
Set.\\ Map.keysSet bufferedTxs
413+
Set.\\ Map.keysSet inSubmissionToMempoolTxs,
414+
numOfBufferedTxs = Map.size bufferedTxs,
415+
numOfInSubmissionToMempoolTxs = Map.size inSubmissionToMempoolTxs,
416+
numOfTxIdsInflight = getSum $ foldMap Sum inflightTxs
417+
}
418+
419+
379420
data TxSubmissionProtocolError =
380421
ProtocolErrorTxNotRequested
381422
| ProtocolErrorTxIdsNotRequested

ouroboros-network/testlib/Test/Ouroboros/Network/Diffusion/Node.hs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,8 @@ import Test.Ouroboros.Network.PeerSelection.RootPeersDNS (DNSLookupDelay,
128128
DNSTimeout, DomainAccessPoint (..), MockDNSLookupResult,
129129
mockDNSActions)
130130
import Test.Ouroboros.Network.TxSubmission.Types (Tx)
131+
import Test.Ouroboros.Network.Utils
132+
131133

132134

133135
data Interfaces extraAPI m = Interfaces
@@ -367,6 +369,7 @@ run blockGeneratorArgs limits ni na
367369

368370
withAsync (decisionLogicThread
369371
tracerTxLogic
372+
sayTracer
370373
(aTxDecisionPolicy na)
371374
(nkTxChannelsVar nodeKernel)
372375
(nkSharedTxStateVar nodeKernel)) $ \decLogicThread ->

ouroboros-network/testlib/Test/Ouroboros/Network/TxSubmission/AppV2.hs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,8 @@ runTxSubmission tracer tracerTxLogic state txDecisionPolicy = do
190190
-> m b
191191
run st txChannelsVar txMempoolSem sharedTxStateVar
192192
inboundMempool k =
193-
withAsync (decisionLogicThread tracerTxLogic txDecisionPolicy txChannelsVar sharedTxStateVar) $ \a -> do
193+
withAsync (decisionLogicThread tracerTxLogic sayTracer
194+
txDecisionPolicy txChannelsVar sharedTxStateVar) $ \a -> do
194195
-- Construct txSubmission outbound client
195196
let clients = (\(addr, (mempool, ctrlMsgSTM, outDelay, _, outChannel, _)) -> do
196197
let client = txSubmissionOutbound (Tracer $ say . show)

0 commit comments

Comments
 (0)