Skip to content

Commit

Permalink
policies: declare {min,max}ChainSyncTimeout in the policies module
Browse files Browse the repository at this point in the history
  • Loading branch information
coot committed May 7, 2024
1 parent 44899a7 commit 5e23bb4
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,8 @@ import Ouroboros.Network.ConnectionManager.Core (defaultProtocolIdleTimeout,
defaultResetTimeout, defaultTimeWaitTimeout)
import Ouroboros.Network.Diffusion (P2P (..))
import Ouroboros.Network.Diffusion.Policies (closeConnectionTimeout,
deactivateTimeout, peerMetricsConfiguration)
deactivateTimeout, maxChainSyncTimeout, minChainSyncTimeout,
peerMetricsConfiguration)
import Ouroboros.Network.NodeToNode (MiniProtocolParameters (..),
defaultMiniProtocolParameters)
import Ouroboros.Network.PeerSelection.Governor.Types
Expand Down Expand Up @@ -115,7 +116,9 @@ defaultChainSyncTimeout = do
-- enters the must reply state. A static per connection timeout
-- leads to selection preassure for connections with a large
-- timeout, see #4244.
mustReplyTimeout <- Just . realToFrac <$> randomRIO (135,269 :: Double)
mustReplyTimeout <- Just . realToFrac <$> randomRIO ( realToFrac minChainSyncTimeout :: Double
, realToFrac maxChainSyncTimeout :: Double
)
return ChainSyncTimeout { canAwaitTimeout = shortWait,
intersectTimeout = shortWait,
mustReplyTimeout,
Expand Down
17 changes: 15 additions & 2 deletions ouroboros-network/src/Ouroboros/Network/Diffusion/Policies.hs
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,10 @@ import Ouroboros.Network.PeerSelection.Governor.Types
import Ouroboros.Network.PeerSelection.PeerMetric


-- | Timeout for 'spsDeactivateTimeout'.
-- | Timeout for 'spsDeactivateTimeout' and churn hot to warm demotions.
--
-- The maximal timeout on 'ChainSync' (in 'StMustReply' state) is @269s@.
-- The maximal timeout on 'ChainSync' (in 'StMustReply' state) is @269s@,
-- see `maxChainSyncTimeout` below.
--
deactivateTimeout :: DiffTime
deactivateTimeout = 300
Expand All @@ -41,6 +42,18 @@ closeConnectionTimeout :: DiffTime
closeConnectionTimeout = 120


-- | Chain sync `mustReplayTimeout` lower bound.
--
minChainSyncTimeout :: DiffTime
minChainSyncTimeout = 135


-- | Chain sync `mustReplayTimeout` upper bound.
--
maxChainSyncTimeout :: DiffTime
maxChainSyncTimeout = 269


-- | Number of events tracked by 'PeerMetrics'. This corresponds to one hour of
-- blocks on mainnet.
--
Expand Down

0 comments on commit 5e23bb4

Please sign in to comment.