From cf13ae712ba0db15f7cb8503bcd70a3b7e02f633 Mon Sep 17 00:00:00 2001 From: Marcin Szamotulski Date: Thu, 6 Feb 2025 22:40:32 +0100 Subject: [PATCH] diffusion: removed extraAPI It can be passed directly, no need to clutter types with it. --- .../Network/PeerSelection/LedgerPeers/Type.hs | 9 +--- .../Network/Diffusion/Node/MiniProtocols.hs | 10 ++--- .../Diffusion/Testnet/Cardano/Simulation.hs | 29 ++++++------- .../Network/Diffusion/Testnet/P2P/Node.hs | 20 +++++---- .../Test/Ouroboros/Network/LedgerPeers.hs | 9 +--- .../Test/Ouroboros/Network/PeerSelection.hs | 22 +++++----- .../PeerSelection/Cardano/MockEnvironment.hs | 43 ++++++++++--------- .../Network/PeerSelection/Governor/Monitor.hs | 22 +++------- .../Network/PeerSelection/Governor/Types.hs | 13 ++++-- .../Ouroboros/Cardano/PeerSelection/Churn.hs | 15 +++---- .../src/Ouroboros/Network/Diffusion.hs | 24 +++++------ .../src/Ouroboros/Network/Diffusion/Common.hs | 15 +++---- .../src/Ouroboros/Network/Diffusion/NonP2P.hs | 2 +- .../src/Ouroboros/Network/Diffusion/P2P.hs | 13 +++--- .../Ouroboros/Network/PeerSelection/Churn.hs | 12 +++--- .../Network/PeerSelection/Governor.hs | 10 ++--- .../PeerSelection/Governor/ActivePeers.hs | 30 +++++-------- .../PeerSelection/Governor/BigLedgerPeers.hs | 9 ++-- .../Governor/EstablishedPeers.hs | 32 ++++++-------- .../PeerSelection/Governor/KnownPeers.hs | 6 +-- .../Network/PeerSelection/Governor/Monitor.hs | 14 +++--- .../PeerSelection/Governor/RootPeers.hs | 4 +- .../Network/PeerSelection/Governor/Types.hs | 23 +++++----- .../Network/PeerSelection/LedgerPeers.hs | 14 +++--- .../PeerSelection/PeerSelectionActions.hs | 8 ++-- 25 files changed, 183 insertions(+), 225 deletions(-) diff --git a/ouroboros-network-api/src/Ouroboros/Network/PeerSelection/LedgerPeers/Type.hs b/ouroboros-network-api/src/Ouroboros/Network/PeerSelection/LedgerPeers/Type.hs index 553378d0e74..d77fd83c5fe 100644 --- a/ouroboros-network-api/src/Ouroboros/Network/PeerSelection/LedgerPeers/Type.hs +++ b/ouroboros-network-api/src/Ouroboros/Network/PeerSelection/LedgerPeers/Type.hs @@ -19,7 +19,6 @@ module Ouroboros.Network.PeerSelection.LedgerPeers.Type , AccPoolStake (..) , IsBigLedgerPeer (..) , LedgerPeersConsensusInterface (..) - , mapExtraAPI , UseLedgerPeers (..) , AfterSlot (..) , LedgerPeersKind (..) @@ -225,17 +224,11 @@ data IsBigLedgerPeer -- | Return ledger state information and ledger peers. -- -data LedgerPeersConsensusInterface extraAPI m = LedgerPeersConsensusInterface { +data LedgerPeersConsensusInterface m = LedgerPeersConsensusInterface { lpGetLatestSlot :: STM m (WithOrigin SlotNo) , lpGetLedgerPeers :: STM m [(PoolStake, NonEmpty RelayAccessPoint)] - -- | Extension point so that third party users can add more actions - , lpExtraAPI :: extraAPI } -mapExtraAPI :: (a -> b) -> LedgerPeersConsensusInterface a m -> LedgerPeersConsensusInterface b m -mapExtraAPI f lpci@LedgerPeersConsensusInterface{ lpExtraAPI = api } = - lpci { lpExtraAPI = f api } - instance ToJSON RelayAccessPointCoded where toJSON (RelayAccessPointCoded (RelayAccessDomain domain port)) = object diff --git a/ouroboros-network/sim-tests-lib/Test/Ouroboros/Network/Diffusion/Node/MiniProtocols.hs b/ouroboros-network/sim-tests-lib/Test/Ouroboros/Network/Diffusion/Node/MiniProtocols.hs index 2fce1d6a43e..d88e8efcc3b 100644 --- a/ouroboros-network/sim-tests-lib/Test/Ouroboros/Network/Diffusion/Node/MiniProtocols.hs +++ b/ouroboros-network/sim-tests-lib/Test/Ouroboros/Network/Diffusion/Node/MiniProtocols.hs @@ -184,9 +184,9 @@ data LimitsAndTimeouts header block = LimitsAndTimeouts -- | Arguments for protocol handlers required by 'nodeApplications'. -- -data AppArgs extraAPI header block m = AppArgs +data AppArgs header block m = AppArgs { aaLedgerPeersConsensusInterface - :: LedgerPeersConsensusInterface extraAPI m + :: LedgerPeersConsensusInterface m , aaKeepAliveStdGen :: StdGen , aaDiffusionMode @@ -212,7 +212,7 @@ data AppArgs extraAPI header block m = AppArgs -- | Protocol handlers. -- -applications :: forall extraAPI block header s m. +applications :: forall block header s m. ( Alternative (STM m) , MonadAsync m , MonadFork m @@ -235,11 +235,11 @@ applications :: forall extraAPI block header s m. -> NodeKernel header block s m -> Codecs NtNAddr header block m -> LimitsAndTimeouts header block - -> AppArgs extraAPI header block m + -> AppArgs header block m -> (block -> header) -> Common.Applications NtNAddr NtNVersion NtNVersionData NtCAddr NtCVersion NtCVersionData - extraAPI m () + m () applications debugTracer nodeKernel Codecs { chainSyncCodec, blockFetchCodec , keepAliveCodec, pingPongCodec diff --git a/ouroboros-network/sim-tests-lib/Test/Ouroboros/Network/Diffusion/Testnet/Cardano/Simulation.hs b/ouroboros-network/sim-tests-lib/Test/Ouroboros/Network/Diffusion/Testnet/Cardano/Simulation.hs index c75d4adb73c..76c2a266ee1 100644 --- a/ouroboros-network/sim-tests-lib/Test/Ouroboros/Network/Diffusion/Testnet/Cardano/Simulation.hs +++ b/ouroboros-network/sim-tests-lib/Test/Ouroboros/Network/Diffusion/Testnet/Cardano/Simulation.hs @@ -1162,7 +1162,7 @@ diffusionSimulation } - interfaces :: Node.Interfaces (Cardano.LedgerPeersConsensusInterface m) m + interfaces :: Node.Interfaces m interfaces = Node.Interfaces { Node.iNtnSnocket = ntnSnocket @@ -1173,8 +1173,7 @@ diffusionSimulation , Node.iNtcBearer = makeFDBearer , Node.iRng = rng , Node.iDomainMap = dMapVar - , Node.iLedgerPeersConsensusInterface - = + , Node.iLedgerPeersConsensusInterface = LedgerPeersConsensusInterface (pure maxBound) (do @@ -1183,14 +1182,15 @@ diffusionSimulation $ accPoolStake $ getLedgerPools $ ledgerPools) - Cardano.LedgerPeersConsensusInterface { - Cardano.getLedgerStateJudgement = pure TooOld - , Cardano.updateOutboundConnectionsState = - \a -> do - a' <- readTVar onlyOutboundConnectionsStateVar - when (a /= a') $ - writeTVar onlyOutboundConnectionsStateVar a - } + , Node.iLedgerPeersConsensusCardanoInterface = + Cardano.LedgerPeersConsensusInterface { + Cardano.getLedgerStateJudgement = pure TooOld + , Cardano.updateOutboundConnectionsState = + \a -> do + a' <- readTVar onlyOutboundConnectionsStateVar + when (a /= a') $ + writeTVar onlyOutboundConnectionsStateVar a + } , Node.iConnStateIdSupply = connStateIdSupply } @@ -1269,17 +1269,14 @@ diffusionSimulation Cardano.cardanoPublicRootPeersAPI (Cardano.cardanoPeerSelectionGovernorArgs (Cardano.cardanoExtraArgsToPeerSelectionActions cardanoExtraArgs) + (Node.iLedgerPeersConsensusCardanoInterface interfaces) readUseLedgerPeers peerSharing - ( Cardano.updateOutboundConnectionsState - $ lpExtraAPI - $ Node.iLedgerPeersConsensusInterface - $ interfaces) ) Cardano.cardanoPeerSelectionStatetoCounters (flip Cardano.ExtraPeers Set.empty) requestPublicRootPeers' - peerChurnGovernor + (peerChurnGovernor $ Node.iLedgerPeersConsensusCardanoInterface interfaces) tracersExtraAddr ( contramap (DiffusionFetchTrace . (\(TraceLabelPeer _ a) -> a)) . tracerWithName addr diff --git a/ouroboros-network/sim-tests-lib/Test/Ouroboros/Network/Diffusion/Testnet/P2P/Node.hs b/ouroboros-network/sim-tests-lib/Test/Ouroboros/Network/Diffusion/Testnet/P2P/Node.hs index 6674096f030..0446bde1185 100644 --- a/ouroboros-network/sim-tests-lib/Test/Ouroboros/Network/Diffusion/Testnet/P2P/Node.hs +++ b/ouroboros-network/sim-tests-lib/Test/Ouroboros/Network/Diffusion/Testnet/P2P/Node.hs @@ -63,6 +63,8 @@ import Ouroboros.Network.Mock.ConcreteBlock (Block (..), BlockHeader (..), convertSlotToTimeForTestsAssumingNoHardFork) import Ouroboros.Network.Mock.ProducerState (ChainProducerState (..)) +import Ouroboros.Cardano.Network.LedgerPeerConsensusInterface qualified as Cardano + import Ouroboros.Network.AnchoredFragment qualified as AF import Ouroboros.Network.Block (MaxSlotNo (..), maxSlotNoFromWithOrigin, pointSlot) @@ -123,7 +125,7 @@ import Test.Ouroboros.Network.PeerSelection.RootPeersDNS (DNSLookupDelay, DNSTimeout, mockDNSActions) -data Interfaces extraAPI m = Interfaces +data Interfaces m = Interfaces { iNtnSnocket :: Snocket m (NtNFD m) NtNAddr , iNtnBearer :: MakeBearer m (NtNFD m) , iAcceptVersion :: NtNVersionData -> NtNVersionData -> Accept NtNVersionData @@ -133,7 +135,9 @@ data Interfaces extraAPI m = Interfaces , iRng :: StdGen , iDomainMap :: StrictTVar m (Map Domain [(IP, TTL)]) , iLedgerPeersConsensusInterface - :: LedgerPeersConsensusInterface extraAPI m + :: LedgerPeersConsensusInterface m + , iLedgerPeersConsensusCardanoInterface + :: Cardano.LedgerPeersConsensusInterface m , iConnStateIdSupply :: ConnStateIdSupply m } @@ -169,7 +173,7 @@ data Arguments extraChurnArgs extraFlags m = Arguments -- type ResolverException = SomeException -run :: forall extraState extraDebugState extraAPI +run :: forall extraState extraDebugState extraPeers extraFlags extraChurnArgs extraCounters exception resolver resolverError m. ( Alternative (STM m) @@ -199,7 +203,7 @@ run :: forall extraState extraDebugState extraAPI ) => Node.BlockGeneratorArgs Block StdGen -> Node.LimitsAndTimeouts BlockHeader Block - -> Interfaces extraAPI m + -> Interfaces m -> Arguments extraChurnArgs extraFlags m -> extraState -> extraCounters @@ -210,7 +214,6 @@ run :: forall extraState extraDebugState extraAPI extraDebugState extraFlags extraPeers - extraAPI extraCounters NtNAddr (PeerConnectionHandle @@ -240,7 +243,6 @@ run :: forall extraState extraDebugState extraAPI extraDebugState extraFlags extraPeers - extraAPI extraCounters NtNAddr -> m Void) @@ -264,7 +266,7 @@ run blockGeneratorArgs limits ni na let -- diffusion interfaces interfaces :: Common.Interfaces (NtNFD m) NtNAddr NtNVersion NtNVersionData (NtCFD m) NtCAddr NtCVersion NtCVersionData - resolver ResolverException extraState extraFlags extraPeers extraAPI m + resolver ResolverException extraState extraFlags extraPeers m interfaces = Common.Interfaces { Common.diNtnSnocket = iNtnSnocket ni , Common.diNtnBearer = iNtnBearer ni @@ -455,7 +457,7 @@ run blockGeneratorArgs limits ni na argsExtra :: Common.ArgumentsExtra extraState extraDebugState - extraFlags extraPeers extraAPI + extraFlags extraPeers extraChurnArgs extraCounters exception NtNAddr resolver resolverError m argsExtra = Common.ArgumentsExtra @@ -480,7 +482,7 @@ run blockGeneratorArgs limits ni na , Common.daPeerSelectionStateToExtraCounters = psToExtraCounters } - appArgs :: Node.AppArgs extraAPI BlockHeader Block m + appArgs :: Node.AppArgs BlockHeader Block m appArgs = Node.AppArgs { Node.aaLedgerPeersConsensusInterface = iLedgerPeersConsensusInterface ni diff --git a/ouroboros-network/sim-tests-lib/Test/Ouroboros/Network/LedgerPeers.hs b/ouroboros-network/sim-tests-lib/Test/Ouroboros/Network/LedgerPeers.hs index 62ada7b7417..e6f161cf22a 100644 --- a/ouroboros-network/sim-tests-lib/Test/Ouroboros/Network/LedgerPeers.hs +++ b/ouroboros-network/sim-tests-lib/Test/Ouroboros/Network/LedgerPeers.hs @@ -64,8 +64,6 @@ tests = testGroup "Ouroboros.Network.LedgerPeers" , testProperty "LedgerPeerSnapshot JSON version 1" prop_ledgerPeerSnapshotJSONV1 ] -type ExtraTestInterface = () - newtype ArbitraryPortNumber = ArbitraryPortNumber { getArbitraryPortNumber :: PortNumber } instance Arbitrary ArbitraryPortNumber where @@ -297,7 +295,6 @@ prop_pick100 seed (NonNegative n) (ArbLedgerPeersKind ledgerPeersKind) (MockRoot LedgerPeersConsensusInterface (pure $ At slot) (pure (Map.elems accumulatedStakeMap)) - () in counterexample (show accumulatedStakeMap) $ ioProperty $ do tr' <- evaluateTrace (runSimTrace sim) @@ -355,11 +352,10 @@ prop_pick (LedgerPools lps) (ArbLedgerPeersKind ledgerPeersKind) count seed (Moc ] ) where - interface :: LedgerPeersConsensusInterface ExtraTestInterface (IOSim s) + interface :: LedgerPeersConsensusInterface (IOSim s) interface = LedgerPeersConsensusInterface (pure $ At slot) (pure lps) - () domainMap :: Map Domain (Set IP) domainMap = Map.fromList [("relay.iohk.example", Set.singleton (read "2.2.2.2"))] @@ -480,11 +476,10 @@ prop_getLedgerPeers (ArbitrarySlotNo curSlot) then Origin else At curSlot - interface :: LedgerPeersConsensusInterface ExtraTestInterface (IOSim s) + interface :: LedgerPeersConsensusInterface (IOSim s) interface = LedgerPeersConsensusInterface (pure $ curSlotWO) (pure (Map.elems (accPoolStake lps))) - () -- | Checks validity of LedgerPeerSnapshot CBOR encoding, and whether -- round trip cycle is the identity function diff --git a/ouroboros-network/sim-tests-lib/Test/Ouroboros/Network/PeerSelection.hs b/ouroboros-network/sim-tests-lib/Test/Ouroboros/Network/PeerSelection.hs index 4c0cb31db75..ca669d08ee1 100644 --- a/ouroboros-network/sim-tests-lib/Test/Ouroboros/Network/PeerSelection.hs +++ b/ouroboros-network/sim-tests-lib/Test/Ouroboros/Network/PeerSelection.hs @@ -4002,7 +4002,15 @@ _governorFindingPublicRoots targetNumberOfRootPeers readDomains readUseBootstrap publicStateVar <- makePublicPeerSelectionStateVar debugStateVar <- newTVarIO $ emptyPeerSelectionState (mkStdGen 42) (ExtraState.empty consensusMode (NumberOfBigLedgerPeers 0)) ExtraPeers.empty dnsSemaphore <- newLedgerAndPublicRootDNSSemaphore - let interfaces = PeerSelectionInterfaces { + let ledgerPeersConsensusInterface = Cardano.LedgerPeersConsensusInterface { + getLedgerStateJudgement = readLedgerStateJudgement, + updateOutboundConnectionsState = \a -> do + a' <- readTVar olocVar + when (a /= a') $ + writeTVar olocVar a + } + + interfaces = PeerSelectionInterfaces { countersVar, publicStateVar, debugStateVar, @@ -4015,9 +4023,9 @@ _governorFindingPublicRoots targetNumberOfRootPeers readDomains readUseBootstrap genesisPeerTargets = targets, readUseBootstrapPeers = readUseBootstrapPeers } + ledgerPeersConsensusInterface (return DontUseLedgerPeers) peerSharing - (Cardano.updateOutboundConnectionsState (lpExtraAPI (getLedgerStateCtx actions))) publicRootPeersProvider @@ -4051,7 +4059,6 @@ _governorFindingPublicRoots targetNumberOfRootPeers readDomains readUseBootstrap Cardano.ExtraState PeerTrustable (Cardano.ExtraPeers SockAddr) - (Cardano.LedgerPeersConsensusInterface IO) (Cardano.ExtraPeerSelectionSetsWithSizes SockAddr) SockAddr PeerSharing @@ -4075,14 +4082,7 @@ _governorFindingPublicRoots targetNumberOfRootPeers readDomains readUseBootstrap getLedgerStateCtx = LedgerPeersConsensusInterface { lpGetLatestSlot = pure Origin, - lpGetLedgerPeers = pure [], - lpExtraAPI = Cardano.LedgerPeersConsensusInterface { - getLedgerStateJudgement = readLedgerStateJudgement, - updateOutboundConnectionsState = \a -> do - a' <- readTVar olocVar - when (a /= a') $ - writeTVar olocVar a - } + lpGetLedgerPeers = pure [] }, peerSelectionTargets = targets, readLedgerPeerSnapshot = pure Nothing, diff --git a/ouroboros-network/sim-tests-lib/Test/Ouroboros/Network/PeerSelection/Cardano/MockEnvironment.hs b/ouroboros-network/sim-tests-lib/Test/Ouroboros/Network/PeerSelection/Cardano/MockEnvironment.hs index 5d613cdf8fc..3cc0d5a73a2 100644 --- a/ouroboros-network/sim-tests-lib/Test/Ouroboros/Network/PeerSelection/Cardano/MockEnvironment.hs +++ b/ouroboros-network/sim-tests-lib/Test/Ouroboros/Network/PeerSelection/Cardano/MockEnvironment.hs @@ -235,7 +235,7 @@ runGovernorInMockEnvironment :: GovernorMockEnvironment -> SimTrace Void runGovernorInMockEnvironment mockEnv = runSimTrace $ governorAction mockEnv -governorAction :: GovernorMockEnvironment -> IOSim s Void +governorAction :: forall s. GovernorMockEnvironment -> IOSim s Void governorAction mockEnv@GovernorMockEnvironment { consensusMode, targets = Script targets', @@ -251,12 +251,12 @@ governorAction mockEnv@GovernorMockEnvironment { countersVar <- StrictTVar.newTVarIO (emptyPeerSelectionCounters ExtraSizes.empty) policy <- mockPeerSelectionPolicy mockEnv let initialPeerTargets = fst . NonEmpty.head $ targets' + lsjVar <- playTimedScript (contramap TraceEnvSetLedgerStateJudgement tracerMockEnv) + (ledgerStateJudgement mockEnv) actions <- case consensusMode of PraosMode -> do - lsjVar <- playTimedScript (contramap TraceEnvSetLedgerStateJudgement tracerMockEnv) - (ledgerStateJudgement mockEnv) targetsVar <- playTimedScript (contramap TraceEnvSetTargets tracerMockEnv) (first fst <$> targets mockEnv) mockPeerSelectionActions tracerMockEnv mockEnv @@ -285,6 +285,7 @@ governorAction mockEnv@GovernorMockEnvironment { (snd <$> readTVar tandemVar) + outboundConnectionStateVar <- newTVarIO UntrustedState let interfaces = PeerSelectionInterfaces { countersVar, publicStateVar, @@ -292,15 +293,24 @@ governorAction mockEnv@GovernorMockEnvironment { readUseLedgerPeers = (readTVar lpVar) } + ledgerPeersConsensusInterface = + Cardano.LedgerPeersConsensusInterface { + getLedgerStateJudgement = readTVar lsjVar, + updateOutboundConnectionsState = \a -> do + a' <- readTVar outboundConnectionStateVar + when (a /= a') $ + writeTVar outboundConnectionStateVar a + } + peerSelectionGovernorArgs = Cardano.cardanoPeerSelectionGovernorArgs Cardano.ExtraPeerSelectionActions { Cardano.genesisPeerTargets = snd initialPeerTargets, Cardano.readUseBootstrapPeers = readUseBootstrapPeers } + ledgerPeersConsensusInterface (readTVar lpVar) (peerSharing actions) - (Cardano.updateOutboundConnectionsState (lpExtraAPI (getLedgerStateCtx actions))) exploreRaces -- explore races within the governor @@ -367,7 +377,6 @@ mockPeerSelectionActions :: forall m. Cardano.ExtraState PeerTrustable (Cardano.ExtraPeers PeerAddr) - (Cardano.LedgerPeersConsensusInterface m) (Cardano.ExtraPeerSelectionSetsWithSizes PeerAddr) PeerAddr (PeerConn m) @@ -403,7 +412,6 @@ mockPeerSelectionActions tracer <$> snapshotPeersStatus proxy a) return v - onlyLocalOutboundConnsVar <- newTVarIO UntrustedState traceWith tracer (TraceEnvAddPeers peerGraph) traceWith tracer (TraceEnvSetLocalRoots localRootPeers) --TODO: make dynamic traceWith tracer (TraceEnvSetPublicRoots publicRootPeers) --TODO: make dynamic @@ -414,7 +422,6 @@ mockPeerSelectionActions tracer readUseLedgerPeers getLedgerStateJudgement peerConns - onlyLocalOutboundConnsVar where proxy :: Proxy m proxy = Proxy @@ -440,12 +447,10 @@ mockPeerSelectionActions' :: forall m. -> STM m UseLedgerPeers -> STM m LedgerStateJudgement -> TVar m (Map PeerAddr (TVar m PeerStatus)) - -> TVar m OutboundConnectionsState -> PeerSelectionActions Cardano.ExtraState PeerTrustable (Cardano.ExtraPeers PeerAddr) - (Cardano.LedgerPeersConsensusInterface m) (Cardano.ExtraPeerSelectionSetsWithSizes PeerAddr) PeerAddr (PeerConn m) @@ -462,8 +467,7 @@ mockPeerSelectionActions' tracer readUseBootstrapPeers readUseLedgerPeers readLedgerStateJudgement - connsVar - outboundConnectionsStateVar = + connsVar = PeerSelectionActions { readLocalRootPeersFromFile = return @@ -489,14 +493,14 @@ mockPeerSelectionActions' tracer }, getLedgerStateCtx = LedgerPeersConsensusInterface { lpGetLatestSlot = pure Origin, - lpGetLedgerPeers = pure [], - lpExtraAPI = Cardano.LedgerPeersConsensusInterface { - getLedgerStateJudgement = readLedgerStateJudgement, - updateOutboundConnectionsState = \a -> do - a' <- readTVar outboundConnectionsStateVar - when (a /= a') $ - writeTVar outboundConnectionsStateVar a - } + lpGetLedgerPeers = pure [] + -- lpExtraAPI = Cardano.LedgerPeersConsensusInterface { + -- getLedgerStateJudgement = readLedgerStateJudgement, + -- updateOutboundConnectionsState = \a -> do + -- a' <- readTVar outboundConnectionsStateVar + -- when (a /= a') $ + -- writeTVar outboundConnectionsStateVar a + -- } }, readInboundPeers = pure Map.empty, readLedgerPeerSnapshot = pure Nothing, @@ -829,7 +833,6 @@ traceAssociationMode Cardano.ExtraState extraFlags extraPeers - extraAPI extraCounters PeerAddr (PeerConn (IOSim s)) diff --git a/ouroboros-network/src/Ouroboros/Cardano/Network/PeerSelection/Governor/Monitor.hs b/ouroboros-network/src/Ouroboros/Cardano/Network/PeerSelection/Governor/Monitor.hs index 24be6ec7d88..25e3df5fc85 100644 --- a/ouroboros-network/src/Ouroboros/Cardano/Network/PeerSelection/Governor/Monitor.hs +++ b/ouroboros-network/src/Ouroboros/Cardano/Network/PeerSelection/Governor/Monitor.hs @@ -40,8 +40,6 @@ import Ouroboros.Network.PeerSelection.Governor.ActivePeers import Ouroboros.Network.PeerSelection.Governor.Monitor (jobVerifyPeerSnapshot) import Ouroboros.Network.PeerSelection.Governor.Types hiding (PeerSelectionCounters) -import Ouroboros.Network.PeerSelection.LedgerPeers.Type - (LedgerPeersConsensusInterface (..)) import Ouroboros.Network.PeerSelection.PublicRootPeers qualified as PublicRootPeers import Ouroboros.Network.PeerSelection.State.EstablishedPeers qualified as EstablishedPeers import Ouroboros.Network.PeerSelection.State.KnownPeers qualified as KnownPeers @@ -75,7 +73,6 @@ targetPeers Cardano.ExtraState extraFlags extraPeers - extraAPI extraCounters peeraddr peerconn @@ -183,13 +180,12 @@ targetPeers Cardano.ExtraPeerSelectionActions { -- trusted, however we will keep a connection to it until the outbound -- governor notices it and disconnects from it. localRoots - :: forall extraDebugState extraAPI extraCounters peeraddr peerconn m. + :: forall extraDebugState extraCounters peeraddr peerconn m. (MonadSTM m, Ord peeraddr) => PeerSelectionActions Cardano.ExtraState PeerTrustable (Cardano.ExtraPeers peeraddr) - extraAPI extraCounters peeraddr peerconn @@ -386,7 +382,6 @@ monitorBootstrapPeersFlag extraFlags (Cardano.ExtraPeers peeraddr) - extraAPI extraCounters peeraddr peerconn @@ -465,11 +460,11 @@ monitorLedgerStateJudgement :: ( MonadSTM m , Ord peeraddr ) - => PeerSelectionActions + => Cardano.LedgerPeersConsensusInterface m + -> PeerSelectionActions Cardano.ExtraState extraFlags (Cardano.ExtraPeers peeraddr) - (Cardano.LedgerPeersConsensusInterface m) extraCounters peeraddr peerconn @@ -483,14 +478,11 @@ monitorLedgerStateJudgement -> Guarded (STM m) (TimedDecision m Cardano.ExtraState extraDebugState extraFlags (Cardano.ExtraPeers peeraddr) peeraddr peerconn) -monitorLedgerStateJudgement PeerSelectionActions{ - getLedgerStateCtx = ledgerCtx@LedgerPeersConsensusInterface { - lpExtraAPI = Cardano.LedgerPeersConsensusInterface { - Cardano.getLedgerStateJudgement = readLedgerStateJudgement - } - } - , extraPeersAPI +monitorLedgerStateJudgement Cardano.LedgerPeersConsensusInterface { + Cardano.getLedgerStateJudgement = readLedgerStateJudgement } + PeerSelectionActions { getLedgerStateCtx = ledgerCtx, + extraPeersAPI } st@PeerSelectionState{ publicRootPeers, knownPeers, establishedPeers, diff --git a/ouroboros-network/src/Ouroboros/Cardano/Network/PeerSelection/Governor/Types.hs b/ouroboros-network/src/Ouroboros/Cardano/Network/PeerSelection/Governor/Types.hs index eaef465a235..2d6ae87828e 100644 --- a/ouroboros-network/src/Ouroboros/Cardano/Network/PeerSelection/Governor/Types.hs +++ b/ouroboros-network/src/Ouroboros/Cardano/Network/PeerSelection/Governor/Types.hs @@ -187,21 +187,26 @@ cardanoPeerSelectionGovernorArgs , Ord peeraddr ) => Cardano.ExtraPeerSelectionActions m + -> Cardano.LedgerPeersConsensusInterface m -> STM m UseLedgerPeers -> PeerSharing - -> (OutboundConnectionsState -> STM m ()) -> PeerSelectionGovernorArgs Cardano.ExtraState extraDebugState PeerTrustable (Cardano.ExtraPeers peeraddr) - (Cardano.LedgerPeersConsensusInterface m) (ExtraPeerSelectionSetsWithSizes peeraddr) peeraddr peerconn BootstrapPeersCriticalTimeoutError m -cardanoPeerSelectionGovernorArgs extraActions readUseLedgerPeers peerSharing updateOutboundConnectionsState = +cardanoPeerSelectionGovernorArgs + extraActions + ledgerPeersConsensusInterface@Cardano.LedgerPeersConsensusInterface { + Cardano.updateOutboundConnectionsState + } + readUseLedgerPeers + peerSharing = PeerSelectionGovernorArgs { -- If by any chance the node takes more than 15 minutes to converge to a -- clean state, we crash the node. This could happen in very rare @@ -224,7 +229,7 @@ cardanoPeerSelectionGovernorArgs extraActions readUseLedgerPeers peerSharing upd ExtraGuardedDecisions { preBlocking = \_ psa pst -> monitorBootstrapPeersFlag extraActions psa pst - <> monitorLedgerStateJudgement psa pst + <> monitorLedgerStateJudgement ledgerPeersConsensusInterface psa pst <> waitForSystemToQuiesce pst , postBlocking = mempty , postNonBlocking = mempty diff --git a/ouroboros-network/src/Ouroboros/Cardano/PeerSelection/Churn.hs b/ouroboros-network/src/Ouroboros/Cardano/PeerSelection/Churn.hs index cc627e94912..0a8ca0698e7 100644 --- a/ouroboros-network/src/Ouroboros/Cardano/PeerSelection/Churn.hs +++ b/ouroboros-network/src/Ouroboros/Cardano/PeerSelection/Churn.hs @@ -38,7 +38,6 @@ import Ouroboros.Network.Diffusion.Policies (churnEstablishConnectionTimeout, import Ouroboros.Network.PeerSelection.Churn (CheckPeerSelectionCounters, ChurnCounters (..), ModifyPeerSelectionTargets, PeerChurnArgs (..)) import Ouroboros.Network.PeerSelection.Governor.Types hiding (targets) -import Ouroboros.Network.PeerSelection.LedgerPeers.Type import Ouroboros.Network.PeerSelection.State.LocalRootPeers (HotValency (..)) -- | Tag indicating churning approach @@ -90,17 +89,20 @@ peerChurnGovernor , MonadTimer m , MonadCatch m ) - => PeerChurnArgs + => Cardano.LedgerPeersConsensusInterface m + -> PeerChurnArgs m (Churn.ExtraArguments m) extraState extraFlags extraPeers - (Cardano.LedgerPeersConsensusInterface m) extraCounters peeraddr -> m Void -peerChurnGovernor PeerChurnArgs { +peerChurnGovernor Cardano.LedgerPeersConsensusInterface { + Cardano.getLedgerStateJudgement + } + PeerChurnArgs { pcaPeerSelectionTracer = tracer, pcaChurnTracer = churnTracer, pcaDeadlineInterval = deadlineChurnInterval, @@ -109,11 +111,6 @@ peerChurnGovernor PeerChurnArgs { pcaRng = inRng, pcaPeerSelectionVar = peerSelectionVar, pcaReadCounters = readCounters, - getLedgerStateCtx = LedgerPeersConsensusInterface { - lpExtraAPI = Cardano.LedgerPeersConsensusInterface { - Cardano.getLedgerStateJudgement - } - }, getLocalRootHotTarget, getOriginalPeerTargets, getExtraArgs = Churn.ExtraArguments { diff --git a/ouroboros-network/src/Ouroboros/Network/Diffusion.hs b/ouroboros-network/src/Ouroboros/Network/Diffusion.hs index a0b95e7e081..e7ae8deaff5 100644 --- a/ouroboros-network/src/Ouroboros/Network/Diffusion.hs +++ b/ouroboros-network/src/Ouroboros/Network/Diffusion.hs @@ -68,38 +68,38 @@ data ExtraTracers (p2p :: P2P) extraState extraDebugState extraFlags extraPeers -- | Diffusion arguments which depend on p2p mode. -- data ArgumentsExtra - (p2p :: P2P) extraArgs extraState extraDebugState extraAPI + (p2p :: P2P) extraArgs extraState extraDebugState extraPeers extraFlags extraChurnArgs extraCounters exception ntnAddr resolver resolverError m where P2PArguments - :: Common.ArgumentsExtra extraState extraDebugState extraAPI + :: Common.ArgumentsExtra extraState extraDebugState extraPeers extraFlags extraChurnArgs extraCounters exception ntnAddr resolver resolverError m - -> ArgumentsExtra 'P2P extraArgs extraState extraDebugState extraAPI + -> ArgumentsExtra 'P2P extraArgs extraState extraDebugState extraPeers extraFlags extraChurnArgs extraCounters exception ntnAddr resolver resolverError m NonP2PArguments :: NonP2P.ArgumentsExtra - -> ArgumentsExtra 'NonP2P extraArgs extraState extraDebugState extraAPI + -> ArgumentsExtra 'NonP2P extraArgs extraState extraDebugState extraPeers extraFlags extraChurnArgs extraCounters exception ntnAddr resolver resolverError m -- | Application data which depend on p2p mode. -- -data Applications (p2p :: P2P) ntnAddr ntcAddr versionDataNTN versionDataNTC extraAPI m a where +data Applications (p2p :: P2P) ntnAddr ntcAddr versionDataNTN versionDataNTC m a where P2PApplications :: Common.Applications ntnAddr NodeToNodeVersion versionDataNTN ntcAddr NodeToClientVersion versionDataNTC - extraAPI m a - -> Applications 'P2P ntnAddr ntcAddr versionDataNTN versionDataNTC extraAPI m a + m a + -> Applications 'P2P ntnAddr ntcAddr versionDataNTN versionDataNTC m a NonP2PApplications :: Common.Applications ntnAddr NodeToNodeVersion versionDataNTN ntcAddr NodeToClientVersion versionDataNTC - () m a - -> Applications 'NonP2P ntnAddr ntcAddr versionDataNTN versionDataNTC extraAPI m a + m a + -> Applications 'NonP2P ntnAddr ntcAddr versionDataNTN versionDataNTC m a -- | Application data which depend on p2p mode. -- @@ -116,7 +116,7 @@ data ApplicationsExtra (p2p :: P2P) ntnAddr m a where -- | Run data diffusion in either 'P2P' or 'NonP2P' mode. -- run :: forall (p2p :: P2P) extraArgs extraState extraDebugState extraFlags - extraPeers extraAPI extraChurnArgs extraCounters exception a. + extraPeers extraChurnArgs extraCounters exception a. ( Monoid extraPeers , Eq extraCounters , Eq extraFlags @@ -144,9 +144,9 @@ run :: forall (p2p :: P2P) extraArgs extraState extraDebugState extraFlags Socket RemoteAddress LocalSocket LocalAddress -> ArgumentsExtra p2p extraArgs extraState extraDebugState extraFlags - extraPeers extraAPI extraChurnArgs extraCounters exception + extraPeers extraChurnArgs extraCounters exception RemoteAddress Resolver IOException IO - -> Applications p2p RemoteAddress LocalAddress NodeToNodeVersionData NodeToClientVersionData extraAPI IO a + -> Applications p2p RemoteAddress LocalAddress NodeToNodeVersionData NodeToClientVersionData IO a -> ApplicationsExtra p2p RemoteAddress IO a -> IO () run sigUSR1Signal diff --git a/ouroboros-network/src/Ouroboros/Network/Diffusion/Common.hs b/ouroboros-network/src/Ouroboros/Network/Diffusion/Common.hs index 93dda76a258..b4e085039cf 100644 --- a/ouroboros-network/src/Ouroboros/Network/Diffusion/Common.hs +++ b/ouroboros-network/src/Ouroboros/Network/Diffusion/Common.hs @@ -214,7 +214,7 @@ data Arguments m ntnFd ntnAddr ntcFd ntcAddr = Arguments { -- data Applications ntnAddr ntnVersion ntnVersionData ntcAddr ntcVersion ntcVersionData - extraAPI m a = + m a = Applications { -- | NodeToNode initiator applications for initiator only mode. -- @@ -253,7 +253,7 @@ data Applications ntnAddr ntnVersion ntnVersionData -- | Interface used to get peers from the current ledger. -- -- TODO: it should be in 'InterfaceExtra' - , daLedgerPeersCtx :: LedgerPeersConsensusInterface extraAPI m + , daLedgerPeersCtx :: LedgerPeersConsensusInterface m } -- | P2P DiffusionTracers Extras @@ -362,7 +362,7 @@ nullTracersExtra = -- | P2P Arguments Extras -- data ArgumentsExtra extraState extraDebugState extraFlags extraPeers - extraAPI extraChurnArgs extraCounters exception + extraChurnArgs extraCounters exception peeraddr resolver resolverError m = ArgumentsExtra { -- | selection targets for the peer governor -- @@ -433,7 +433,7 @@ data ArgumentsExtra extraState extraDebugState extraFlags extraPeers , daPeerSelectionGovernorArgs :: forall muxMode responderCtx ntnVersionData bytes a b . PeerSelectionGovernorArgs extraState extraDebugState extraFlags extraPeers - extraAPI extraCounters + extraCounters peeraddr (PeerConnectionHandle muxMode responderCtx peeraddr ntnVersionData bytes m a b) @@ -480,7 +480,6 @@ data ArgumentsExtra extraState extraDebugState extraFlags extraPeers extraDebugState extraFlags extraPeers - extraAPI extraCounters peeraddr -> m Void @@ -598,10 +597,10 @@ type NodeToNodePeerConnectionHandle (mode :: Mx.Mode) ntnAddr ntnVersionData m a ByteString m a b -type NodeToNodePeerSelectionActions extraState extraFlags extraPeers extraAPI extraCounters +type NodeToNodePeerSelectionActions extraState extraFlags extraPeers extraCounters (mode :: Mx.Mode) ntnAddr ntnVersionData m a b = PeerSelectionActions - extraState extraFlags extraPeers extraAPI extraCounters + extraState extraFlags extraPeers extraCounters ntnAddr (NodeToNodePeerConnectionHandle mode ntnAddr ntnVersionData m a b) m @@ -609,7 +608,7 @@ type NodeToNodePeerSelectionActions extraState extraFlags extraPeers extraAPI ex data Interfaces ntnFd ntnAddr ntnVersion ntnVersionData ntcFd ntcAddr ntcVersion ntcVersionData resolver resolverError - extraState extraFlags extraPeers extraAPI + extraState extraFlags extraPeers m = Interfaces { -- | node-to-node snocket diff --git a/ouroboros-network/src/Ouroboros/Network/Diffusion/NonP2P.hs b/ouroboros-network/src/Ouroboros/Network/Diffusion/NonP2P.hs index 85901072408..b2a184ff718 100644 --- a/ouroboros-network/src/Ouroboros/Network/Diffusion/NonP2P.hs +++ b/ouroboros-network/src/Ouroboros/Network/Diffusion/NonP2P.hs @@ -160,7 +160,7 @@ run -> Applications RemoteAddress NodeToNodeVersion NodeToNodeVersionData LocalAddress NodeToClientVersion NodeToClientVersionData - () IO a + IO a -> ApplicationsExtra -> IO () run Tracers diff --git a/ouroboros-network/src/Ouroboros/Network/Diffusion/P2P.hs b/ouroboros-network/src/Ouroboros/Network/Diffusion/P2P.hs index 248a71a24b0..cefd048fc60 100644 --- a/ouroboros-network/src/Ouroboros/Network/Diffusion/P2P.hs +++ b/ouroboros-network/src/Ouroboros/Network/Diffusion/P2P.hs @@ -103,7 +103,7 @@ runM ntcFd ntcAddr ntcVersion ntcVersionData resolver resolverError exception a extraState extraDebugState extraPeers - extraAPI extraFlags extraChurnArgs extraCounters . + extraFlags extraChurnArgs extraCounters . ( Alternative (STM m) , MonadAsync m @@ -140,7 +140,7 @@ runM Interfaces ntnFd ntnAddr ntnVersion ntnVersionData ntcFd ntcAddr ntcVersion ntcVersionData resolver resolverError - extraState extraFlags extraPeers extraAPI m + extraState extraFlags extraPeers m -> -- | tracers Tracers ntnAddr ntnVersion ntcAddr ntcVersion @@ -156,13 +156,13 @@ runM ntcFd ntcAddr -> -- | p2p configuration ArgumentsExtra extraState extraDebugState extraFlags - extraPeers extraAPI extraChurnArgs extraCounters + extraPeers extraChurnArgs extraCounters exception ntnAddr resolver resolverError m -> -- | protocol handlers Applications ntnAddr ntnVersion ntnVersionData ntcAddr ntcVersion ntcVersionData - extraAPI m a + m a -> -- | p2p protocol handlers ApplicationsExtra ntnAddr m a -> m Void @@ -584,7 +584,6 @@ runM Interfaces extraState extraFlags extraPeers - extraAPI extraCounters ntnAddr (PeerConnectionHandle @@ -642,7 +641,7 @@ runM Interfaces (PeerConnectionHandle muxMode responderCtx ntnAddr ntnVersionData ByteString m a b)) -> PeerSelectionActions extraState extraFlags extraPeers - extraAPI extraCounters ntnAddr + extraCounters ntnAddr (PeerConnectionHandle muxMode responderCtx ntnAddr ntnVersionData ByteString m a b) m -> m Void @@ -847,7 +846,6 @@ run :: ( Monoid extraPeers extraDebugState extraFlags extraPeers - extraAPI extraChurnArgs extraCounters exception @@ -862,7 +860,6 @@ run :: ( Monoid extraPeers LocalAddress NodeToClientVersion NodeToClientVersionData - extraAPI IO a -> ApplicationsExtra diff --git a/ouroboros-network/src/Ouroboros/Network/PeerSelection/Churn.hs b/ouroboros-network/src/Ouroboros/Network/PeerSelection/Churn.hs index b28913a4cae..53490395903 100644 --- a/ouroboros-network/src/Ouroboros/Network/PeerSelection/Churn.hs +++ b/ouroboros-network/src/Ouroboros/Network/PeerSelection/Churn.hs @@ -47,7 +47,8 @@ data ChurnCounters = ChurnCounter ChurnAction Int -- | Record of arguments for peer churn governor -- -data PeerChurnArgs m extraArgs extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr = PeerChurnArgs { +-- TODO: remove extraArgs +data PeerChurnArgs m extraArgs extraDebugState extraFlags extraPeers extraCounters peeraddr = PeerChurnArgs { pcaPeerSelectionTracer :: Tracer m (TracePeerSelection extraDebugState extraFlags extraPeers peeraddr), pcaChurnTracer :: Tracer m ChurnCounters, pcaDeadlineInterval :: DiffTime, @@ -59,10 +60,11 @@ data PeerChurnArgs m extraArgs extraDebugState extraFlags extraPeers extraAPI ex pcaRng :: StdGen, pcaPeerSelectionVar :: StrictTVar m PeerSelectionTargets, pcaReadCounters :: STM m (PeerSelectionCounters extraCounters), - getLedgerStateCtx :: LedgerPeersConsensusInterface extraAPI m, + getLedgerStateCtx :: LedgerPeersConsensusInterface m, getLocalRootHotTarget :: STM m HotValency, getOriginalPeerTargets :: PeerSelectionTargets, - getExtraArgs :: extraArgs } + getExtraArgs :: extraArgs +} -- | Churn governor. -- @@ -72,13 +74,13 @@ data PeerChurnArgs m extraArgs extraDebugState extraFlags extraPeers extraAPI ex -- On startup the churn governor gives a head start to local root peers over -- root peers. -- -peerChurnGovernor :: forall m extraArgs extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr. +peerChurnGovernor :: forall m extraArgs extraDebugState extraFlags extraPeers extraCounters peeraddr. ( MonadDelay m , Alternative (STM m) , MonadTimer m , MonadCatch m ) - => PeerChurnArgs m extraArgs extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr + => PeerChurnArgs m extraArgs extraDebugState extraFlags extraPeers extraCounters peeraddr -> m Void peerChurnGovernor PeerChurnArgs { diff --git a/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor.hs b/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor.hs index 5122e8a24c0..978faecec49 100644 --- a/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor.hs +++ b/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor.hs @@ -467,13 +467,13 @@ peerSelectionGovernor :: ( Alternative (STM m) -> Tracer m (DebugPeerSelection extraState extraFlags extraPeers peeraddr) -> Tracer m (PeerSelectionCounters extraCounters) -> PeerSelectionGovernorArgs - extraState extraDebugState extraFlags extraPeers extraAPI extraCounters + extraState extraDebugState extraFlags extraPeers extraCounters peeraddr peerconn exception m -> StdGen -> extraState -> extraPeers -> PeerSelectionActions - extraState extraFlags extraPeers extraAPI extraCounters + extraState extraFlags extraPeers extraCounters peeraddr peerconn m -> PeerSelectionPolicy peeraddr m -> PeerSelectionInterfaces @@ -509,7 +509,7 @@ peerSelectionGovernor tracer debugTracer countersTracer peerSelectionArgs fuzzRn -- In each case we trace the action, update the state and execute the -- action asynchronously. -- -peerSelectionGovernorLoop :: forall m extraState extraDebugState extraFlags extraPeers extraAPI extraCounters exception peeraddr peerconn. +peerSelectionGovernorLoop :: forall m extraState extraDebugState extraFlags extraPeers extraCounters exception peeraddr peerconn. ( Alternative (STM m) , MonadAsync m , MonadDelay m @@ -527,10 +527,10 @@ peerSelectionGovernorLoop :: forall m extraState extraDebugState extraFlags extr -> Tracer m (DebugPeerSelection extraState extraFlags extraPeers peeraddr) -> Tracer m (PeerSelectionCounters extraCounters) -> PeerSelectionGovernorArgs - extraState extraDebugState extraFlags extraPeers extraAPI extraCounters + extraState extraDebugState extraFlags extraPeers extraCounters peeraddr peerconn exception m -> PeerSelectionActions - extraState extraFlags extraPeers extraAPI extraCounters + extraState extraFlags extraPeers extraCounters peeraddr peerconn m -> PeerSelectionPolicy peeraddr m -> PeerSelectionInterfaces diff --git a/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/ActivePeers.hs b/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/ActivePeers.hs index bee402fd663..955e0373e23 100644 --- a/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/ActivePeers.hs +++ b/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/ActivePeers.hs @@ -42,7 +42,7 @@ import Ouroboros.Network.PeerSelection.Types (PublicExtraPeersAPI (..)) -- peers/ according to 'policyPickWarmPeersToPromote' policy. -- belowTarget - :: forall extraState extraDebugState extraFlags extraPeers extraAPI + :: forall extraState extraDebugState extraFlags extraPeers extraCounters peeraddr peerconn m. ( Alternative (STM m) , MonadDelay m @@ -61,7 +61,6 @@ belowTarget extraState extraFlags extraPeers - extraAPI extraCounters peeraddr peerconn @@ -85,7 +84,7 @@ belowTarget enableAction = belowTargetBigLedgerPeers enableAction -- state) then this monitoring action will be disabled. -- belowTargetBigLedgerPeers - :: forall extraState extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m. + :: forall extraState extraDebugState extraFlags extraPeers extraCounters peeraddr peerconn m. ( MonadDelay m , MonadSTM m , Ord peeraddr @@ -102,7 +101,6 @@ belowTargetBigLedgerPeers extraState extraFlags extraPeers - extraAPI extraCounters peeraddr peerconn @@ -195,7 +193,7 @@ belowTargetBigLedgerPeers enableAction belowTargetLocal - :: forall extraState extraDebugState extraFlags extraPeers extraAPI + :: forall extraState extraDebugState extraFlags extraPeers extraCounters peeraddr peerconn m. ( MonadDelay m , MonadSTM m @@ -206,7 +204,6 @@ belowTargetLocal extraState extraFlags extraPeers - extraAPI extraCounters peeraddr peerconn @@ -317,7 +314,7 @@ belowTargetLocal actions@PeerSelectionActions { ] belowTargetOther - :: forall extraState extraDebugState extraFlags extraPeers extraAPI + :: forall extraState extraDebugState extraFlags extraPeers extraCounters peeraddr peerconn m. ( MonadDelay m , MonadSTM m @@ -328,7 +325,6 @@ belowTargetOther extraState extraFlags extraPeers - extraAPI extraCounters peeraddr peerconn @@ -418,7 +414,7 @@ belowTargetOther actions@PeerSelectionActions { jobPromoteWarmPeer - :: forall extraState extraDebugState extraFlags extraPeers extraAPI + :: forall extraState extraDebugState extraFlags extraPeers extraCounters peeraddr peerconn m. ( MonadDelay m , Ord peeraddr @@ -427,7 +423,6 @@ jobPromoteWarmPeer extraState extraFlags extraPeers - extraAPI extraCounters peeraddr peerconn @@ -595,7 +590,7 @@ jobPromoteWarmPeer PeerSelectionActions{peerStateActions = PeerStateActions {act -- /warm peers/, according to 'policyPickHotPeersToDemote'. -- aboveTarget - :: forall extraState extraDebugState extraFlags extraPeers extraAPI + :: forall extraState extraDebugState extraFlags extraPeers extraCounters peeraddr peerconn m. ( Alternative (STM m) , MonadSTM m @@ -606,7 +601,6 @@ aboveTarget extraState extraFlags extraPeers - extraAPI extraCounters peeraddr peerconn @@ -628,7 +622,7 @@ aboveTarget = aboveTargetBigLedgerPeers aboveTargetBigLedgerPeers - :: forall extraState extraDebugState extraFlags extraPeers extraAPI + :: forall extraState extraDebugState extraFlags extraPeers extraCounters peeraddr peerconn m. ( MonadSTM m , Ord peeraddr @@ -637,7 +631,6 @@ aboveTargetBigLedgerPeers extraState extraFlags extraPeers - extraAPI extraCounters peeraddr peerconn @@ -725,7 +718,7 @@ aboveTargetBigLedgerPeers actions@PeerSelectionActions { aboveTargetLocal - :: forall extraState extraDebugState extraFlags extraPeers extraAPI + :: forall extraState extraDebugState extraFlags extraPeers extraCounters peeraddr peerconn m. ( MonadSTM m , Ord peeraddr @@ -735,7 +728,6 @@ aboveTargetLocal extraState extraFlags extraPeers - extraAPI extraCounters peeraddr peerconn @@ -829,7 +821,7 @@ aboveTargetLocal actions@PeerSelectionActions { aboveTargetOther - :: forall extraState extraDebugState extraFlags extraPeers extraAPI + :: forall extraState extraDebugState extraFlags extraPeers extraCounters peeraddr peerconn m. ( MonadSTM m , Ord peeraddr @@ -839,7 +831,6 @@ aboveTargetOther extraState extraFlags extraPeers - extraAPI extraCounters peeraddr peerconn @@ -929,7 +920,7 @@ aboveTargetOther actions@PeerSelectionActions { jobDemoteActivePeer - :: forall extraState extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m. + :: forall extraState extraDebugState extraFlags extraPeers extraCounters peeraddr peerconn m. ( Monad m , Ord peeraddr ) @@ -937,7 +928,6 @@ jobDemoteActivePeer extraState extraFlags extraPeers - extraAPI extraCounters peeraddr peerconn diff --git a/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/BigLedgerPeers.hs b/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/BigLedgerPeers.hs index 2d7a661db3a..bf7cbadfbf1 100644 --- a/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/BigLedgerPeers.hs +++ b/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/BigLedgerPeers.hs @@ -41,7 +41,6 @@ belowTarget extraState extraFlags extraPeers - extraAPI extraCounters peeraddr peerconn @@ -103,8 +102,8 @@ belowTarget enableAction jobReqBigLedgerPeers - :: forall m extraState extraDebugState extraFlags extraAPI extraPeers - extraCounters peeraddr peerconn. + :: forall m extraState extraDebugState extraFlags extraPeers + extraCounters peeraddr peerconn. ( MonadSTM m , Ord peeraddr , Semigroup extraPeers @@ -113,7 +112,6 @@ jobReqBigLedgerPeers extraState extraFlags extraPeers - extraAPI extraCounters peeraddr peerconn @@ -226,7 +224,7 @@ jobReqBigLedgerPeers PeerSelectionActions { aboveTarget - :: forall m extraState extraDebugState extraFlags extraAPI extraPeers + :: forall m extraState extraDebugState extraFlags extraPeers extraCounters peeraddr peerconn. ( Alternative (STM m) , MonadSTM m @@ -237,7 +235,6 @@ aboveTarget extraState extraFlags extraPeers - extraAPI extraCounters peeraddr peerconn diff --git a/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/EstablishedPeers.hs b/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/EstablishedPeers.hs index 8b0e311b5e4..8ec5fc20b75 100644 --- a/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/EstablishedPeers.hs +++ b/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/EstablishedPeers.hs @@ -58,7 +58,7 @@ import Ouroboros.Network.PeerSelection.Types (PublicExtraPeersAPI (..)) -- action never picks local root peers. -- belowTarget - :: forall extraState extraDebugState extraFlags extraPeers extraAPI + :: forall extraState extraDebugState extraFlags extraPeers extraCounters peeraddr peerconn m. ( Alternative (STM m) , MonadSTM m @@ -75,7 +75,6 @@ belowTarget extraState extraFlags extraPeers - extraAPI extraCounters peeraddr peerconn @@ -98,8 +97,8 @@ belowTarget enableAction = -- configuration. -- belowTargetLocal - :: forall extraState extraDebugState extraFlags extraPeers extraAPI - extraCounters peeraddr peerconn m. + :: forall extraState extraDebugState extraFlags extraPeers + extraCounters peeraddr peerconn m. ( MonadSTM m , Ord peeraddr , HasCallStack @@ -107,7 +106,9 @@ belowTargetLocal => PeerSelectionActions extraState extraFlags - extraPeers extraAPI extraCounters peeraddr peerconn m + extraPeers + extraCounters + peeraddr peerconn m -> MkGuardedDecision extraState extraDebugState @@ -217,7 +218,7 @@ belowTargetLocal actions@PeerSelectionActions { belowTargetOther :: forall extraState extraDebugState extraFlags extraPeers - extraAPI extraCounters peeraddr peerconn m. + extraCounters peeraddr peerconn m. ( MonadSTM m , Ord peeraddr , HasCallStack @@ -226,7 +227,6 @@ belowTargetOther extraState extraFlags extraPeers - extraAPI extraCounters peeraddr peerconn @@ -325,7 +325,7 @@ belowTargetOther actions@PeerSelectionActions { -- belowTargetBigLedgerPeers :: forall extraState extraDebugState extraFlags extraPeers - extraAPI extraCounters peeraddr peerconn m. + extraCounters peeraddr peerconn m. ( MonadSTM m , Ord peeraddr , HasCallStack @@ -342,7 +342,6 @@ belowTargetBigLedgerPeers extraState extraFlags extraPeers - extraAPI extraCounters peeraddr peerconn @@ -449,7 +448,7 @@ maxColdPeerRetryBackoff = 5 jobPromoteColdPeer - :: forall extraState extraDebugState extraFlags extraPeers extraAPI + :: forall extraState extraDebugState extraFlags extraPeers extraCounters peeraddr peerconn m. ( Monad m , Ord peeraddr @@ -458,7 +457,6 @@ jobPromoteColdPeer extraState extraFlags extraPeers - extraAPI extraCounters peeraddr peerconn @@ -613,7 +611,7 @@ jobPromoteColdPeer PeerSelectionActions { -- /warm peers/ to the cold state, according to 'policyPickWarmPeersToDemote'. -- aboveTarget - :: forall extraState extraDebugState extraFlags extraPeers extraAPI + :: forall extraState extraDebugState extraFlags extraPeers extraCounters peeraddr peerconn m. ( Alternative (STM m) , MonadSTM m @@ -623,7 +621,6 @@ aboveTarget extraState extraFlags extraPeers - extraAPI extraCounters peeraddr peerconn @@ -639,7 +636,7 @@ aboveTarget aboveTarget = aboveTargetBigLedgerPeers <> aboveTargetOther aboveTargetOther - :: forall extraState extraDebugState extraFlags extraPeers extraAPI + :: forall extraState extraDebugState extraFlags extraPeers extraCounters peeraddr peerconn m. ( MonadSTM m , Ord peeraddr @@ -649,7 +646,6 @@ aboveTargetOther extraState extraFlags extraPeers - extraAPI extraCounters peeraddr peerconn @@ -752,7 +748,7 @@ aboveTargetOther actions@PeerSelectionActions { aboveTargetBigLedgerPeers - :: forall extraState extraDebugState extraFlags extraPeers extraAPI + :: forall extraState extraDebugState extraFlags extraPeers extraCounters peeraddr peerconn m. ( MonadSTM m , Ord peeraddr @@ -762,7 +758,6 @@ aboveTargetBigLedgerPeers extraState extraFlags extraPeers - extraAPI extraCounters peeraddr peerconn @@ -857,7 +852,7 @@ aboveTargetBigLedgerPeers actions@PeerSelectionActions { jobDemoteEstablishedPeer - :: forall extraState extraDebugState extraFlags extraPeers extraAPI + :: forall extraState extraDebugState extraFlags extraPeers extraCounters peeraddr peerconn m. ( Monad m , Ord peeraddr @@ -866,7 +861,6 @@ jobDemoteEstablishedPeer extraState extraFlags extraPeers - extraAPI extraCounters peeraddr peerconn diff --git a/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/KnownPeers.hs b/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/KnownPeers.hs index 6249908caa6..99641b82b88 100644 --- a/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/KnownPeers.hs +++ b/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/KnownPeers.hs @@ -60,7 +60,7 @@ belowTarget -- This might be useful if the user requires its diffusion layer to stop -- making progress during a sensitive/vulnerable situation and quarantine -- it and make sure it is only connected to trusted peers. - -> PeerSelectionActions extraState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m + -> PeerSelectionActions extraState extraFlags extraPeers extraCounters peeraddr peerconn m -> Time -- ^ blocked at -> Map peeraddr PeerSharing -> MkGuardedDecision extraState extraDebugState extraFlags extraPeers peeraddr peerconn m @@ -243,13 +243,12 @@ belowTarget enableAction -- is used. jobPeerShare :: forall m extraState extraDebugState extraFlags extraPeers - extraAPI extraCounters peeraddr peerconn. + extraCounters peeraddr peerconn. (MonadAsync m, MonadTimer m, Ord peeraddr, Hashable peeraddr) => PeerSelectionActions extraState extraFlags extraPeers - extraAPI extraCounters peeraddr peerconn @@ -464,7 +463,6 @@ aboveTarget extraState extraFlags extraPeers - extraAPI extraCounters peeraddr peerconn diff --git a/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/Monitor.hs b/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/Monitor.hs index 1c4c9548610..d22736d8b4b 100644 --- a/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/Monitor.hs +++ b/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/Monitor.hs @@ -54,7 +54,7 @@ import Ouroboros.Network.PeerSelection.Types -- picked by the governor's 'peerSelectionGovernorLoop'. -- targetPeers :: (MonadSTM m, Ord peeraddr) - => PeerSelectionActions extraState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m + => PeerSelectionActions extraState extraFlags extraPeers extraCounters peeraddr peerconn m -> PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> Guarded (STM m) (TimedDecision m extraState extraDebugState extraFlags extraPeers peeraddr peerconn) targetPeers PeerSelectionActions{ readPeerSelectionTargets, @@ -112,9 +112,9 @@ jobs jobPool st = -- | Monitor connections. -- -connections :: forall m extraState extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn. +connections :: forall m extraState extraDebugState extraFlags extraPeers extraCounters peeraddr peerconn. (MonadSTM m, Ord peeraddr) - => PeerSelectionActions extraState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m + => PeerSelectionActions extraState extraFlags extraPeers extraCounters peeraddr peerconn m -> PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> Guarded (STM m) (TimedDecision m extraState extraDebugState extraFlags extraPeers peeraddr peerconn) connections PeerSelectionActions{ @@ -307,9 +307,9 @@ connections PeerSelectionActions{ -- | Monitor local roots using 'readLocalRootPeers' 'STM' action. -- -localRoots :: forall extraState extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m. +localRoots :: forall extraState extraDebugState extraFlags extraPeers extraCounters peeraddr peerconn m. (MonadSTM m, Ord peeraddr, Eq extraFlags) - => PeerSelectionActions extraState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m + => PeerSelectionActions extraState extraFlags extraPeers extraCounters peeraddr peerconn m -> PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> Guarded (STM m) (TimedDecision m extraState extraDebugState extraFlags extraPeers peeraddr peerconn) localRoots actions@PeerSelectionActions{ readLocalRootPeers @@ -411,7 +411,7 @@ localRoots actions@PeerSelectionActions{ readLocalRootPeers -- jobVerifyPeerSnapshot :: ( MonadSTM m ) => LedgerPeerSnapshot - -> LedgerPeersConsensusInterface extraAPI m + -> LedgerPeersConsensusInterface m -> Job () m (Completion m extraState extraDebugState extraFlags extraPeers peeraddr peerconn) jobVerifyPeerSnapshot baseline@(LedgerPeerSnapshot (slot, _)) LedgerPeersConsensusInterface { @@ -439,7 +439,7 @@ jobVerifyPeerSnapshot baseline@(LedgerPeerSnapshot (slot, _)) -- ledgerPeerSnapshotChange :: (MonadSTM m) => (extraState -> extraState) - -> PeerSelectionActions extraState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m + -> PeerSelectionActions extraState extraFlags extraPeers extraCounters peeraddr peerconn m -> PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> Guarded (STM m) (TimedDecision m extraState extraDebugState extraFlags extraPeers peeraddr peerconn) ledgerPeerSnapshotChange extraStateChange diff --git a/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/RootPeers.hs b/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/RootPeers.hs index d5dc5ddb12b..fc971339eb5 100644 --- a/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/RootPeers.hs +++ b/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/RootPeers.hs @@ -33,7 +33,6 @@ belowTarget extraState extraFlags extraPeers - extraAPI extraCounters peeraddr peerconn @@ -94,7 +93,7 @@ belowTarget actions@PeerSelectionActions { jobReqPublicRootPeers :: forall m extraState extraDebugState extraFlags extraPeers - extraAPI extraCounters peeraddr peerconn. + extraCounters peeraddr peerconn. ( MonadSTM m , Ord peeraddr , Semigroup extraPeers @@ -103,7 +102,6 @@ jobReqPublicRootPeers extraState extraFlags extraPeers - extraAPI extraCounters peeraddr peerconn diff --git a/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/Types.hs b/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/Types.hs index 37be38b9bcc..5905bac715f 100644 --- a/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/Types.hs +++ b/ouroboros-network/src/Ouroboros/Network/PeerSelection/Governor/Types.hs @@ -319,7 +319,7 @@ sanePeerSelectionTargets PeerSelectionTargets{..} = -- * choice of known peer root sets -- * running both in simulation and for real -- -data PeerSelectionActions extraState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m = +data PeerSelectionActions extraState extraFlags extraPeers extraCounters peeraddr peerconn m = PeerSelectionActions { -- | These are the targets as seen in the static configuration -- @@ -402,7 +402,7 @@ data PeerSelectionActions extraState extraFlags extraPeers extraAPI extraCounter -- | Read the current ledger state -- - getLedgerStateCtx :: LedgerPeersConsensusInterface extraAPI m, + getLedgerStateCtx :: LedgerPeersConsensusInterface m, -- | Read the current state of ledger peer snapshot -- @@ -471,13 +471,12 @@ data PeerStateActions peeraddr peerconn m = PeerStateActions { -- Extra Guarded Decisions -- type MonitoringAction extraState extraDebugState extraFlags - extraPeers extraAPI extraCounters peeraddr peerconn m = + extraPeers extraCounters peeraddr peerconn m = PeerSelectionPolicy peeraddr m -> PeerSelectionActions extraState extraFlags extraPeers - extraAPI extraCounters peeraddr peerconn @@ -493,7 +492,7 @@ type MonitoringAction extraState extraDebugState extraFlags peeraddr peerconn) data ExtraGuardedDecisions extraState extraDebugState extraFlags - extraPeers extraAPI extraCounters peeraddr peerconn m = + extraPeers extraCounters peeraddr peerconn m = ExtraGuardedDecisions { -- | This guarded decision will come before all default possibly @@ -503,7 +502,7 @@ data ExtraGuardedDecisions extraState extraDebugState extraFlags -- Note that this action should be blocking. preBlocking :: MonitoringAction extraState extraDebugState extraFlags - extraPeers extraAPI extraCounters peeraddr peerconn m + extraPeers extraCounters peeraddr peerconn m -- | This guarded decision will come after all possibly preBlocking -- and default blocking decisions. The order matters; first decisions @@ -512,7 +511,7 @@ data ExtraGuardedDecisions extraState extraDebugState extraFlags -- Note that these actions can be either blocking or non-blocking. , postBlocking :: MonitoringAction extraState extraDebugState extraFlags - extraPeers extraAPI extraCounters peeraddr peerconn m + extraPeers extraCounters peeraddr peerconn m -- | This guarded decision will come before all default non-blocking -- decisions. The order matters; first decisions have priority over @@ -521,7 +520,7 @@ data ExtraGuardedDecisions extraState extraDebugState extraFlags -- Note that these actions should not be blocking. , postNonBlocking :: MonitoringAction extraState extraDebugState extraFlags - extraPeers extraAPI extraCounters peeraddr peerconn m + extraPeers extraCounters peeraddr peerconn m -- | This action is necessary to the well functioning of the Outbound -- Governor. In particular this action should monitor 'PeerSelectionTargets', @@ -535,7 +534,7 @@ data ExtraGuardedDecisions extraState extraDebugState extraFlags -- 'Ouroboros.Network.PeerSelection.Governor.Monitor.targetPeers' , customTargetsAction :: Maybe (MonitoringAction extraState extraDebugState - extraFlags extraPeers extraAPI extraCounters + extraFlags extraPeers extraCounters peeraddr peerconn m) -- | This action is necessary to the well functioning of the Outbound @@ -550,7 +549,7 @@ data ExtraGuardedDecisions extraState extraDebugState extraFlags -- 'Ouroboros.Network.PeerSelection.Governor.Monitor.localRoots' , customLocalRootsAction :: Maybe (MonitoringAction extraState extraDebugState - extraFlags extraPeers extraAPI extraCounters + extraFlags extraPeers extraCounters peeraddr peerconn m) -- | This enables third party users to add extra guards to the following monitoring @@ -581,7 +580,7 @@ data ExtraGuardedDecisions extraState extraDebugState extraFlags -- data PeerSelectionGovernorArgs extraState extraDebugState extraFlags - extraPeers extraAPI extraCounters peeraddr peerconn + extraPeers extraCounters peeraddr peerconn exception m = PeerSelectionGovernorArgs { abortGovernor @@ -594,7 +593,7 @@ data PeerSelectionGovernorArgs extraState extraDebugState extraFlags -> STM m () , extraDecisions :: ExtraGuardedDecisions extraState extraDebugState extraFlags - extraPeers extraAPI extraCounters peeraddr peerconn m + extraPeers extraCounters peeraddr peerconn m } ----------------------- diff --git a/ouroboros-network/src/Ouroboros/Network/PeerSelection/LedgerPeers.hs b/ouroboros-network/src/Ouroboros/Network/PeerSelection/LedgerPeers.hs index 332bd6810ce..6b90e1d1498 100644 --- a/ouroboros-network/src/Ouroboros/Network/PeerSelection/LedgerPeers.hs +++ b/ouroboros-network/src/Ouroboros/Network/PeerSelection/LedgerPeers.hs @@ -87,7 +87,7 @@ import Ouroboros.Network.PeerSelection.RootPeersDNS.LedgerPeers -- getLedgerPeers :: MonadSTM m - => LedgerPeersConsensusInterface extraAPI m + => LedgerPeersConsensusInterface m -> AfterSlot -> STM m LedgerPeers getLedgerPeers LedgerPeersConsensusInterface @@ -207,7 +207,7 @@ long_PEER_LIST_LIFE_TIME = 1847 -- a prime number! -- | Run the LedgerPeers worker thread. -- -ledgerPeersThread :: forall m peerAddr resolver extraAPI exception. +ledgerPeersThread :: forall m peerAddr resolver exception. ( MonadAsync m , MonadMonotonicTime m , MonadThrow m @@ -215,7 +215,7 @@ ledgerPeersThread :: forall m peerAddr resolver extraAPI exception. , Ord peerAddr ) => PeerActionsDNS peerAddr resolver exception m - -> WithLedgerPeersArgs extraAPI m + -> WithLedgerPeersArgs m -- blocking request for ledger peers -> STM m (NumberOfPeers, LedgerPeersKind) -- response with ledger peers @@ -414,10 +414,10 @@ stakeMapWithSlotOverSource StakeMapOverSource { -- | Argument record for withLedgerPeers -- -data WithLedgerPeersArgs extraAPI m = WithLedgerPeersArgs { +data WithLedgerPeersArgs m = WithLedgerPeersArgs { wlpRng :: StdGen, -- ^ Random generator for picking ledger peers - wlpConsensusInterface :: LedgerPeersConsensusInterface extraAPI m, + wlpConsensusInterface :: LedgerPeersConsensusInterface m, wlpTracer :: Tracer m TraceLedgerPeers, -- ^ Get Ledger Peers comes from here wlpGetUseLedgerPeers :: STM m UseLedgerPeers, @@ -429,7 +429,7 @@ data WithLedgerPeersArgs extraAPI m = WithLedgerPeersArgs { -- | For a LedgerPeers worker thread and submit request and receive responses. -- -withLedgerPeers :: forall peerAddr resolver exception extraAPI m a. +withLedgerPeers :: forall peerAddr resolver exception m a. ( MonadAsync m , MonadThrow m , MonadMonotonicTime m @@ -437,7 +437,7 @@ withLedgerPeers :: forall peerAddr resolver exception extraAPI m a. , Ord peerAddr ) => PeerActionsDNS peerAddr resolver exception m - -> WithLedgerPeersArgs extraAPI m + -> WithLedgerPeersArgs m -> ((NumberOfPeers -> LedgerPeersKind -> m (Maybe (Set peerAddr, DiffTime))) -> Async m Void -> m a ) diff --git a/ouroboros-network/src/Ouroboros/Network/PeerSelection/PeerSelectionActions.hs b/ouroboros-network/src/Ouroboros/Network/PeerSelection/PeerSelectionActions.hs index c16cb51874a..ae43546d1ea 100644 --- a/ouroboros-network/src/Ouroboros/Network/PeerSelection/PeerSelectionActions.hs +++ b/ouroboros-network/src/Ouroboros/Network/PeerSelection/PeerSelectionActions.hs @@ -49,7 +49,7 @@ import Ouroboros.Network.PeerSharing (PeerSharingController, import Ouroboros.Network.Protocol.PeerSharing.Type (PeerSharingAmount (..)) withPeerSelectionActions - :: forall extraState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn resolver exception m a. + :: forall extraState extraFlags extraPeers extraCounters peeraddr peerconn resolver exception m a. ( Alternative (STM m) , MonadAsync m , MonadDelay m @@ -62,10 +62,10 @@ withPeerSelectionActions -> StrictTVar m (Config extraFlags peeraddr) -> PeerActionsDNS peeraddr resolver exception m -> ( (NumberOfPeers -> LedgerPeersKind -> m (Maybe (Set peeraddr, DiffTime))) - -> PeerSelectionActions extraState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m) - -> WithLedgerPeersArgs extraAPI m + -> PeerSelectionActions extraState extraFlags extraPeers extraCounters peeraddr peerconn m) + -> WithLedgerPeersArgs m -> ( (Async m Void, Async m Void) - -> PeerSelectionActions extraState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m + -> PeerSelectionActions extraState extraFlags extraPeers extraCounters peeraddr peerconn m -> m a) -- ^ continuation, receives a handle to the local roots peer provider thread -- (only if local root peers were non-empty).