Skip to content

Commit 90f1a01

Browse files
Merge #3435
3435: Makes AcceptedConnectionsLimit configurable r=bolt12 a=bolt12 Co-authored-by: Armando Santos <[email protected]>
2 parents e31455e + 67c14d1 commit 90f1a01

File tree

4 files changed

+61
-2
lines changed

4 files changed

+61
-2
lines changed

cardano-node/src/Cardano/Node/Configuration/POM.hs

+25-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ import Cardano.Tracing.Config
4444
import Ouroboros.Consensus.Mempool.API (MempoolCapacityBytesOverride (..), MempoolCapacityBytes (..))
4545
import Ouroboros.Consensus.Storage.LedgerDB.DiskPolicy (SnapshotInterval (..))
4646
import Ouroboros.Network.Block (MaxSlotNo (..))
47-
import Ouroboros.Network.NodeToNode (DiffusionMode (..))
47+
import Ouroboros.Network.NodeToNode (DiffusionMode (..), AcceptedConnectionsLimit (..))
4848
import qualified Ouroboros.Consensus.Node as Consensus ( NetworkP2PMode (..) )
4949

5050
data NetworkP2PMode = EnabledP2PMode | DisabledP2PMode
@@ -127,6 +127,9 @@ data NodeConfiguration
127127
--
128128
, ncTimeWaitTimeout :: DiffTime
129129

130+
-- | Node AcceptedConnectionsLimit
131+
, ncAcceptedConnectionsLimit :: !AcceptedConnectionsLimit
132+
130133
-- P2P governor targets
131134
, ncTargetNumberOfRootPeers :: Int
132135
, ncTargetNumberOfKnownPeers :: Int
@@ -179,6 +182,9 @@ data PartialNodeConfiguration
179182
, pncProtocolIdleTimeout :: !(Last DiffTime)
180183
, pncTimeWaitTimeout :: !(Last DiffTime)
181184

185+
-- AcceptedConnectionsLimit
186+
, pncAcceptedConnectionsLimit :: !(Last AcceptedConnectionsLimit)
187+
182188
-- P2P governor targets
183189
, pncTargetNumberOfRootPeers :: !(Last Int)
184190
, pncTargetNumberOfKnownPeers :: !(Last Int)
@@ -241,6 +247,11 @@ instance FromJSON PartialNodeConfiguration where
241247
pncProtocolIdleTimeout <- Last <$> v .:? "ProtocolIdleTimeout"
242248
pncTimeWaitTimeout <- Last <$> v .:? "TimeWaitTimeout"
243249

250+
251+
-- AcceptedConnectionsLimit
252+
pncAcceptedConnectionsLimit
253+
<- Last <$> v .:? "AcceptedConnectionsLimit"
254+
244255
-- P2P Governor parameters, with conservative defaults.
245256
pncTargetNumberOfRootPeers <- Last <$> v .:? "TargetNumberOfRootPeers"
246257
pncTargetNumberOfKnownPeers <- Last <$> v .:? "TargetNumberOfKnownPeers"
@@ -279,6 +290,7 @@ instance FromJSON PartialNodeConfiguration where
279290
, pncMaybeMempoolCapacityOverride
280291
, pncProtocolIdleTimeout
281292
, pncTimeWaitTimeout
293+
, pncAcceptedConnectionsLimit
282294
, pncTargetNumberOfRootPeers
283295
, pncTargetNumberOfKnownPeers
284296
, pncTargetNumberOfEstablishedPeers
@@ -420,6 +432,14 @@ defaultPartialNodeConfiguration =
420432
, pncMaybeMempoolCapacityOverride = mempty
421433
, pncProtocolIdleTimeout = Last (Just 5)
422434
, pncTimeWaitTimeout = Last (Just 60)
435+
, pncAcceptedConnectionsLimit =
436+
Last
437+
$ Just
438+
$ AcceptedConnectionsLimit
439+
{ acceptedConnectionsHardLimit = 512
440+
, acceptedConnectionsSoftLimit = 384
441+
, acceptedConnectionsDelay = 5
442+
}
423443
, pncTargetNumberOfRootPeers = Last (Just 100)
424444
, pncTargetNumberOfKnownPeers = Last (Just 100)
425445
, pncTargetNumberOfEstablishedPeers = Last (Just 50)
@@ -467,6 +487,9 @@ makeNodeConfiguration pnc = do
467487
ncTimeWaitTimeout <-
468488
lastToEither "Missing TimeWaitTimeout"
469489
$ pncTimeWaitTimeout pnc
490+
ncAcceptedConnectionsLimit <-
491+
lastToEither "Missing AcceptedConnectionsLimit" $
492+
pncAcceptedConnectionsLimit pnc
470493
enableP2P <-
471494
lastToEither "Missing EnableP2P"
472495
$ pncEnableP2P pnc
@@ -499,6 +522,7 @@ makeNodeConfiguration pnc = do
499522
, ncMaybeMempoolCapacityOverride = getLast $ pncMaybeMempoolCapacityOverride pnc
500523
, ncProtocolIdleTimeout
501524
, ncTimeWaitTimeout
525+
, ncAcceptedConnectionsLimit
502526
, ncTargetNumberOfRootPeers
503527
, ncTargetNumberOfKnownPeers
504528
, ncTargetNumberOfEstablishedPeers

cardano-node/src/Cardano/Node/Orphans.hs

+25
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
{-# LANGUAGE FlexibleInstances #-}
22
{-# LANGUAGE StandaloneDeriving #-}
3+
{-# LANGUAGE NamedFieldPuns #-}
34

45
{-# OPTIONS_GHC -Wno-orphans #-}
56

@@ -17,6 +18,7 @@ import Cardano.BM.Data.Tracer (TracingVerbosity (..))
1718
import qualified Cardano.Chain.Update as Update
1819
import Cardano.Ledger.Crypto (StandardCrypto)
1920
import qualified Cardano.Ledger.Shelley.CompactAddr as Shelley
21+
import Ouroboros.Network.NodeToNode (AcceptedConnectionsLimit (..))
2022

2123
instance FromJSON TracingVerbosity where
2224
parseJSON (String str) = case str of
@@ -42,3 +44,26 @@ instance FromJSON Update.ApplicationName where
4244
parseJSON invalid =
4345
fail $ "Parsing of application name failed due to type mismatch. "
4446
<> "Encountered: " <> show invalid
47+
48+
instance ToJSON AcceptedConnectionsLimit where
49+
toJSON AcceptedConnectionsLimit
50+
{ acceptedConnectionsHardLimit
51+
, acceptedConnectionsSoftLimit
52+
, acceptedConnectionsDelay
53+
} =
54+
object [ "AcceptedConnectionsLimit" .=
55+
object [ "hardLimit" .=
56+
toJSON acceptedConnectionsHardLimit
57+
, "softLimit" .=
58+
toJSON acceptedConnectionsSoftLimit
59+
, "delay" .=
60+
toJSON acceptedConnectionsDelay
61+
]
62+
]
63+
64+
instance FromJSON AcceptedConnectionsLimit where
65+
parseJSON = withObject "AcceptedConnectionsLimit" $ \v ->
66+
AcceptedConnectionsLimit
67+
<$> v .: "hardLimit"
68+
<*> v .: "softLimit"
69+
<*> v .: "delay"

cardano-node/src/Cardano/Node/Parsers.hs

+1
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ nodeRunParser = do
9797
, pncMaybeMempoolCapacityOverride = maybeMempoolCapacityOverride
9898
, pncProtocolIdleTimeout = mempty
9999
, pncTimeWaitTimeout = mempty
100+
, pncAcceptedConnectionsLimit = mempty
100101
, pncTargetNumberOfRootPeers = mempty
101102
, pncTargetNumberOfKnownPeers = mempty
102103
, pncTargetNumberOfEstablishedPeers = mempty

cardano-node/test/Test/Cardano/Node/POM.hs

+10-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ import Cardano.Node.Configuration.POM
1313
import Cardano.Node.Types
1414
import Cardano.Tracing.Config (TraceOptions (..))
1515
import Ouroboros.Network.Block (MaxSlotNo (..), SlotNo (..))
16-
import Ouroboros.Network.NodeToNode (DiffusionMode (InitiatorAndResponderDiffusionMode))
16+
import Ouroboros.Network.NodeToNode (DiffusionMode (InitiatorAndResponderDiffusionMode),
17+
AcceptedConnectionsLimit(..))
1718
import Ouroboros.Consensus.Storage.LedgerDB.DiskPolicy (SnapshotInterval (..))
1819
import qualified Ouroboros.Consensus.Node as Consensus ( NetworkP2PMode (..) )
1920

@@ -69,6 +70,7 @@ testPartialYamlConfig =
6970
, pncMaybeMempoolCapacityOverride = mempty
7071
, pncProtocolIdleTimeout = mempty
7172
, pncTimeWaitTimeout = mempty
73+
, pncAcceptedConnectionsLimit = mempty
7274
, pncTargetNumberOfRootPeers = mempty
7375
, pncTargetNumberOfKnownPeers = mempty
7476
, pncTargetNumberOfEstablishedPeers = mempty
@@ -104,6 +106,7 @@ testPartialCliConfig =
104106
, pncMaybeMempoolCapacityOverride = mempty
105107
, pncProtocolIdleTimeout = mempty
106108
, pncTimeWaitTimeout = mempty
109+
, pncAcceptedConnectionsLimit = mempty
107110
, pncTargetNumberOfRootPeers = mempty
108111
, pncTargetNumberOfKnownPeers = mempty
109112
, pncTargetNumberOfEstablishedPeers = mempty
@@ -140,6 +143,12 @@ expectedConfig =
140143
, ncMaybeMempoolCapacityOverride = Nothing
141144
, ncProtocolIdleTimeout = 5
142145
, ncTimeWaitTimeout = 60
146+
, ncAcceptedConnectionsLimit =
147+
AcceptedConnectionsLimit
148+
{ acceptedConnectionsHardLimit = 512
149+
, acceptedConnectionsSoftLimit = 384
150+
, acceptedConnectionsDelay = 5
151+
}
143152
, ncTargetNumberOfRootPeers = 100
144153
, ncTargetNumberOfKnownPeers = 100
145154
, ncTargetNumberOfEstablishedPeers = 50

0 commit comments

Comments
 (0)