Safe Haskell | None |
---|---|
Language | Haskell2010 |
Ouroboros.Network.PeerSelection.Churn
Description
This subsystem manages the discovery and selection of upstream peers.
Synopsis
- data PeerChurnArgs (m :: Type -> Type) extraArgs extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr = PeerChurnArgs {
- pcaPeerSelectionTracer :: Tracer m (TracePeerSelection extraDebugState extraFlags extraPeers peeraddr)
- pcaChurnTracer :: Tracer m ChurnCounters
- pcaDeadlineInterval :: DiffTime
- pcaBulkInterval :: DiffTime
- pcaPeerRequestTimeout :: DiffTime
- pcaMetrics :: PeerMetrics m peeraddr
- pcaRng :: StdGen
- pcaPeerSelectionVar :: StrictTVar m PeerSelectionTargets
- pcaReadCounters :: STM m (PeerSelectionCounters extraCounters)
- getLedgerStateCtx :: LedgerPeersConsensusInterface extraAPI m
- getLocalRootHotTarget :: STM m HotValency
- getOriginalPeerTargets :: PeerSelectionTargets
- getExtraArgs :: extraArgs
- data ChurnCounters = ChurnCounter ChurnAction Int
- type ModifyPeerSelectionTargets = PeerSelectionTargets -> PeerSelectionTargets
- type CheckPeerSelectionCounters extraCounters = PeerSelectionCounters extraCounters -> PeerSelectionTargets -> Bool
- peerChurnGovernor :: (MonadDelay m, Alternative (STM m), MonadTimer m, MonadCatch m) => PeerChurnArgs m extraArgs extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr -> m Void
Documentation
data PeerChurnArgs (m :: Type -> Type) extraArgs extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr Source #
Record of arguments for peer churn governor
Constructors
PeerChurnArgs | |
Fields
|
data ChurnCounters Source #
Constructors
ChurnCounter ChurnAction Int |
type ModifyPeerSelectionTargets = PeerSelectionTargets -> PeerSelectionTargets Source #
Facilitates composing updates to various targets via back-to-back pipeline
type CheckPeerSelectionCounters extraCounters = PeerSelectionCounters extraCounters -> PeerSelectionTargets -> Bool Source #
peerChurnGovernor :: (MonadDelay m, Alternative (STM m), MonadTimer m, MonadCatch m) => PeerChurnArgs m extraArgs extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr -> m Void Source #
Churn governor.
At every churn interval decrease active peers for a short while (1s), so that we can pick new ones. Then we churn non-active peers.
On startup the churn governor gives a head start to local root peers over root peers.