Skip to content

Commit

Permalink
Merge pull request #5081 from IntersectMBO/coot/peer-selection-exports
Browse files Browse the repository at this point in the history
peer selection exports
  • Loading branch information
coot authored Mar 6, 2025
2 parents 8958113 + be7913c commit 0fdac49
Show file tree
Hide file tree
Showing 44 changed files with 130 additions and 130 deletions.
2 changes: 2 additions & 0 deletions nix/ouroboros-network.nix
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,8 @@ let
# don't run checks using Wine when cross compiling
packages.network-mux.components.tests.test.preCheck =
if buildSystem == "x86_64-linux" then "export GHCRTS=-M500M" else "";
packages.ouroboros-network.components.tests.sim-tests.preCheck =
if buildSystem == "x86_64-linux" then "export GHCRTS=-M600M" else "";
})
];
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ import Control.DeepSeq (NFData (..))
import Data.Aeson
import Data.Aeson.Types
import NoThunks.Class

import Ouroboros.Network.PeerSelection.RelayAccessPoint

-- |The type of big ledger peers that is serialised or later
Expand Down
9 changes: 5 additions & 4 deletions ouroboros-network/ouroboros-network.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ library
Ouroboros.Network.KeepAlive
Ouroboros.Network.NodeToClient
Ouroboros.Network.NodeToNode
Ouroboros.Network.PeerSelection
Ouroboros.Network.PeerSelection.Churn
Ouroboros.Network.PeerSelection.Governor
Ouroboros.Network.PeerSelection.Governor.Monitor
Expand Down Expand Up @@ -199,12 +200,12 @@ library
cpp-options: -DTXSUBMISSION_DELAY

-- Simulation Test Library
library sim-tests-lib
library testlib
import: ghc-options-tests
default-language: Haskell2010
default-extensions: ImportQualifiedPost
visibility: public
hs-source-dirs: sim-tests-lib
hs-source-dirs: testlib
build-depends:
QuickCheck,
aeson,
Expand Down Expand Up @@ -296,7 +297,7 @@ test-suite sim-tests
main-is: Main.hs
build-depends:
base >=4.14 && <4.22,
ouroboros-network:sim-tests-lib,
ouroboros-network:testlib,
ouroboros-network-protocols:testlib,
tasty,
with-utf8,
Expand Down Expand Up @@ -401,7 +402,7 @@ benchmark sim-benchmarks
main-is: Main.hs
build-depends:
base,
ouroboros-network:sim-tests-lib,
ouroboros-network:testlib,
tasty-bench >=0.3.5,

ghc-options:
Expand Down
34 changes: 12 additions & 22 deletions ouroboros-network/src/Ouroboros/Network/Diffusion.hs
Original file line number Diff line number Diff line change
Expand Up @@ -78,20 +78,10 @@ import Ouroboros.Network.NodeToClient qualified as NodeToClient
import Ouroboros.Network.NodeToNode (NodeToNodeVersion (..),
NodeToNodeVersionData (..), RemoteAddress)
import Ouroboros.Network.NodeToNode qualified as NodeToNode
import Ouroboros.Network.PeerSelection.Churn (PeerChurnArgs (..))
import Ouroboros.Network.PeerSelection as PeerSelection
import Ouroboros.Network.PeerSelection.Governor qualified as Governor
import Ouroboros.Network.PeerSelection.Governor.Types hiding (peerSharing)
import Ouroboros.Network.PeerSelection.LedgerPeers (WithLedgerPeersArgs (..))
import Ouroboros.Network.PeerSelection.PeerMetric
import Ouroboros.Network.PeerSelection.PeerSelectionActions
import Ouroboros.Network.PeerSelection.PeerSelectionActions qualified as Ouroboros
import Ouroboros.Network.PeerSelection.PeerStateActions (PeerConnectionHandle,
PeerStateActionsArguments (..), pchPeerSharing, withPeerStateActions)
import Ouroboros.Network.PeerSelection.RootPeersDNS
import Ouroboros.Network.PeerSelection.RootPeersDNS.DNSActions
(DNSLookupType (..), ioDNSActions)
import Ouroboros.Network.PeerSelection.RootPeersDNS.DNSSemaphore
(newLedgerAndPublicRootDNSSemaphore)
import Ouroboros.Network.PeerSelection.RootPeersDNS (PeerActionsDNS (..))
import Ouroboros.Network.PeerSelection.RootPeersDNS qualified as RootPeersDNS
import Ouroboros.Network.PeerSelection.State.LocalRootPeers qualified as LocalRootPeers
import Ouroboros.Network.PeerSharing (PeerSharingRegistry (..))
import Ouroboros.Network.Protocol.Handshake
Expand Down Expand Up @@ -432,9 +422,9 @@ runM Interfaces
Nothing -> pure ()

lookupReqs <- case (ipv4Address, ipv6Address) of
(Just _ , Nothing) -> return LookupReqAOnly
(Nothing, Just _ ) -> return LookupReqAAAAOnly
(Just _ , Just _ ) -> return LookupReqAAndAAAA
(Just _ , Nothing) -> return RootPeersDNS.LookupReqAOnly
(Nothing, Just _ ) -> return RootPeersDNS.LookupReqAAAAOnly
(Just _ , Just _ ) -> return RootPeersDNS.LookupReqAAndAAAA
(Nothing, Nothing) -> throwIO NoSocket

-- RNGs used for picking random peers from the ledger and for
Expand All @@ -445,7 +435,7 @@ runM Interfaces

peerSelectionTargetsVar <- newTVarIO daPeerSelectionTargets

countersVar <- newTVarIO (emptyPeerSelectionCounters daEmptyExtraCounters)
countersVar <- newTVarIO (Governor.emptyPeerSelectionCounters daEmptyExtraCounters)

-- Design notes:
-- - We split the following code into two parts:
Expand Down Expand Up @@ -582,7 +572,7 @@ runM Interfaces
spsMainThreadId = mainThreadId
}

dnsSemaphore <- newLedgerAndPublicRootDNSSemaphore
dnsSemaphore <- RootPeersDNS.newLedgerAndPublicRootDNSSemaphore
let dnsActions =
PeerActionsDNS {
paToPeerAddr = diNtnToPeerAddr
Expand Down Expand Up @@ -629,7 +619,7 @@ runM Interfaces
requestPublicRootPeers =
case daRequestPublicRootPeers of
Nothing ->
Ouroboros.requestPublicRootPeers
PeerSelection.requestPublicRootPeers
dtTracePublicRootPeersTracer
daReadPublicRootPeers
dnsActions
Expand Down Expand Up @@ -750,7 +740,7 @@ runM Interfaces
-- InitiatorOnly mode, run peer selection only:
InitiatorOnlyDiffusionMode ->
withConnectionManagerInitiatorOnlyMode $ \connectionManager-> do
debugStateVar <- newTVarIO $ emptyPeerSelectionState fuzzRng daEmptyExtraState mempty
debugStateVar <- newTVarIO $ Governor.emptyPeerSelectionState fuzzRng daEmptyExtraState mempty
diInstallSigUSR1Handler connectionManager debugStateVar daPeerMetrics
withPeerStateActions' connectionManager $ \peerStateActions->
withPeerSelectionActions'
Expand Down Expand Up @@ -782,7 +772,7 @@ runM Interfaces
--
withServer sockets connectionManager inboundInfoChannel $
\inboundGovernorThread readInboundState -> do
debugStateVar <- newTVarIO $ emptyPeerSelectionState fuzzRng daEmptyExtraState mempty
debugStateVar <- newTVarIO $ Governor.emptyPeerSelectionState fuzzRng daEmptyExtraState mempty
diInstallSigUSR1Handler connectionManager debugStateVar daPeerMetrics
withPeerStateActions' connectionManager $
\peerStateActions ->
Expand Down Expand Up @@ -930,7 +920,7 @@ run sigUSR1Signal tracers args apps = do
diNtcSnocket = Snocket.localSnocket iocp,
diNtcBearer = makeLocalBearer,
diNtcGetFileDescriptor = localSocketFileDescriptor,
diDnsActions = ioDNSActions,
diDnsActions = RootPeersDNS.ioDNSActions,
diInstallSigUSR1Handler = sigUSR1Signal,
diNtnHandshakeArguments,
diNtcHandshakeArguments,
Expand Down
26 changes: 4 additions & 22 deletions ouroboros-network/src/Ouroboros/Network/Diffusion/Types.hs
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@ import Control.Monad.Class.MonadTimer.SI
import Control.Tracer (Tracer, nullTracer)

import Data.ByteString.Lazy (ByteString)
import Data.IP (IP)
import Data.List.NonEmpty (NonEmpty)
import Data.Map (Map)
import Data.Set (Set)
Expand Down Expand Up @@ -72,27 +71,10 @@ import Ouroboros.Network.Socket (SystemdSocketTracer)
import Ouroboros.Network.NodeToClient qualified as NodeToClient
import Ouroboros.Network.NodeToNode (AcceptedConnectionsLimit, DiffusionMode)
import Ouroboros.Network.NodeToNode qualified as NodeToNode
import Ouroboros.Network.PeerSelection.Churn qualified as Governor
import Ouroboros.Network.PeerSelection as PeerSelection
import Ouroboros.Network.PeerSelection.Governor.Types
import Ouroboros.Network.PeerSelection.LedgerPeers (LedgerPeerSnapshot,
LedgerPeersConsensusInterface (..), LedgerPeersKind, NumberOfPeers,
TraceLedgerPeers, UseLedgerPeers)
import Ouroboros.Network.PeerSelection.PeerAdvertise
import Ouroboros.Network.PeerSelection.PeerMetric (PeerMetrics)
import Ouroboros.Network.PeerSelection.PeerSharing (PeerSharing (..))
import Ouroboros.Network.PeerSelection.PeerStateActions (PeerConnectionHandle,
PeerSelectionActionsTrace)
import Ouroboros.Network.PeerSelection.PublicRootPeers (PublicRootPeers)
import Ouroboros.Network.PeerSelection.RelayAccessPoint (RelayAccessPoint)
import Ouroboros.Network.PeerSelection.RootPeersDNS (PeerActionsDNS)
import Ouroboros.Network.PeerSelection.RootPeersDNS.DNSActions
import Ouroboros.Network.PeerSelection.RootPeersDNS.DNSSemaphore
import Ouroboros.Network.PeerSelection.RootPeersDNS.LocalRootPeers
(TraceLocalRootPeers)
import Ouroboros.Network.PeerSelection.RootPeersDNS.PublicRootPeers
(TracePublicRootPeers)
import Ouroboros.Network.PeerSelection.RootPeersDNS
import Ouroboros.Network.PeerSelection.State.LocalRootPeers qualified as LocalRootPeers
import Ouroboros.Network.PeerSelection.Types (PublicExtraPeersAPI)

-- | The 'DiffusionTracer' logs
--
Expand Down Expand Up @@ -187,7 +169,7 @@ data Tracers ntnAddr ntnVersion ntnVersionData
:: Tracer m (PeerSelectionCounters extraCounters)

, dtTraceChurnCounters
:: Tracer m Governor.ChurnCounters
:: Tracer m PeerSelection.ChurnCounters

, dtPeerSelectionActionsTracer
:: Tracer m (PeerSelectionActionsTrace ntnAddr ntnVersion)
Expand Down Expand Up @@ -406,7 +388,7 @@ data Arguments extraState extraDebugState extraFlags extraPeers
-- 'Ouroboros.Network.PeerSelection.Churn.peerChurnGovernor'
--
, daPeerChurnGovernor
:: Governor.PeerChurnArgs
:: PeerSelection.PeerChurnArgs
m
extraChurnArgs
extraDebugState
Expand Down
42 changes: 42 additions & 0 deletions ouroboros-network/src/Ouroboros/Network/PeerSelection.hs
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
{-# LANGUAGE ExplicitNamespaces #-}

module Ouroboros.Network.PeerSelection
( module Governor
, module PeerSelection
, module PeerSelection.Types
, module PeerSelection.PublicRootPeers
, module PeerSelection.PeerStateActions
, module PeerSelection.PeerSelectionActions
, module PeerSelection.RelayAccessPoint
, module PeerSelection.LedgerPeers
, module PeerSelection.PeerMetrics
, module PeerSelection.Churn
, module PeerSelection.PeerAdvertise
, module PeerSelection.PeerSharing
) where

import Ouroboros.Network.PeerSelection.Churn as PeerSelection.Churn
-- Only essential `Governor` types.
import Ouroboros.Network.PeerSelection.Governor as Governor
(DebugPeerSelection (..), PeerSelectionActions,
PeerSelectionInterfaces (..), PeerSelectionPolicy (..),
PeerSelectionState, PeerSelectionTargets (..), PeerStateActions,
PickPolicy)
import Ouroboros.Network.PeerSelection.LedgerPeers as PeerSelection.LedgerPeers
(AfterSlot (..), IsBigLedgerPeer (..), LedgerPeerSnapshot (..),
LedgerPeers (..), LedgerPeersConsensusInterface (..),
LedgerPeersKind (..), NumberOfPeers (..), TraceLedgerPeers (..),
UseLedgerPeers (..), WithLedgerPeersArgs (..), withLedgerPeers)
import Ouroboros.Network.PeerSelection.PeerAdvertise as PeerSelection.PeerAdvertise
import Ouroboros.Network.PeerSelection.PeerMetric as PeerSelection.PeerMetrics
(PeerMetrics, PeerMetricsConfiguration (..), ReportPeerMetrics (..),
newPeerMetric, newPeerMetric', nullMetric, reportMetric)
import Ouroboros.Network.PeerSelection.PeerSelectionActions as PeerSelection.PeerSelectionActions
import Ouroboros.Network.PeerSelection.PeerSharing as PeerSelection.PeerSharing
import Ouroboros.Network.PeerSelection.PeerStateActions as PeerSelection.PeerStateActions
import Ouroboros.Network.PeerSelection.PublicRootPeers as PeerSelection.PublicRootPeers
(PublicRootPeers)
import Ouroboros.Network.PeerSelection.RelayAccessPoint as PeerSelection.RelayAccessPoint
(DomainAccessPoint (..), IP (..), PortNumber, RelayAccessPoint (..))
import Ouroboros.Network.PeerSelection.Types as PeerSelection
import Ouroboros.Network.PeerSelection.Types as PeerSelection.Types
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE MultiWayIf #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE ScopedTypeVariables #-}

Expand All @@ -19,10 +18,12 @@ module Ouroboros.Network.PeerSelection.Governor
-- * Peer selection governor
-- $peer-selection-governor
PeerSelectionPolicy (..)
, PickPolicy
, PeerSelectionTargets (..)
, PeerSelectionActions (..)
, PeerSelectionInterfaces (..)
, PeerStateActions (..)
, PeerSelectionGovernorArgs (..)
, TracePeerSelection (..)
, ChurnAction (..)
, DebugPeerSelection (..)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,9 +70,6 @@ import Ouroboros.Network.PeerSelection.LedgerPeers.Utils
recomputeRelativeStake)
import Ouroboros.Network.PeerSelection.RelayAccessPoint
import Ouroboros.Network.PeerSelection.RootPeersDNS
import Ouroboros.Network.PeerSelection.RootPeersDNS.DNSSemaphore (DNSSemaphore)
import Ouroboros.Network.PeerSelection.RootPeersDNS.LedgerPeers
(resolveLedgerPeers)

-- | Internal API to deal with 'UseLedgerAfter' configuration
-- option
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
{-# LANGUAGE CPP #-}
{-# LANGUAGE DisambiguateRecordFields #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TupleSections #-}

module Ouroboros.Network.PeerSelection.PeerSelectionActions
( withPeerSelectionActions
( PeerSelectionActions (..)
, withPeerSelectionActions
, requestPeerSharingResult
, requestPublicRootPeers
) where
Expand Down Expand Up @@ -39,10 +38,6 @@ import Ouroboros.Network.PeerSelection.PeerAdvertise (PeerAdvertise)
import Ouroboros.Network.PeerSelection.PublicRootPeers (PublicRootPeers)
import Ouroboros.Network.PeerSelection.PublicRootPeers qualified as PublicRootPeers
import Ouroboros.Network.PeerSelection.RootPeersDNS
import Ouroboros.Network.PeerSelection.RootPeersDNS.DNSSemaphore (DNSSemaphore)
import Ouroboros.Network.PeerSelection.RootPeersDNS.LocalRootPeers
import Ouroboros.Network.PeerSelection.RootPeersDNS.PublicRootPeers
(TracePublicRootPeers, publicRootPeersProvider)
import Ouroboros.Network.PeerSelection.State.LocalRootPeers
import Ouroboros.Network.PeerSharing (PeerSharingController,
PeerSharingResult (..), requestPeers)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE TypeOperators #-}

-- | The module is designed to be imported qualified.
--
module Ouroboros.Network.PeerSelection.PublicRootPeers
( -- * Types
PublicRootPeers (..)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
module Ouroboros.Network.PeerSelection.RootPeersDNS (PeerActionsDNS (..)) where
module Ouroboros.Network.PeerSelection.RootPeersDNS
( PeerActionsDNS (..)
, module DNSActions
, module DNSSemaphore
, module LedgerPeers
, module LocalRootPeers
, module PublicRootPeers
) where

import Data.IP (IP)
import Network.Socket (PortNumber)

import Ouroboros.Network.PeerSelection.RootPeersDNS.DNSActions

-- | Record of some parameters that are commonly used together
--
data PeerActionsDNS peeraddr resolver exception m = PeerActionsDNS {
paToPeerAddr :: IP -> PortNumber -> peeraddr,
paDnsActions :: DNSActions resolver exception m
}
import Ouroboros.Network.PeerSelection.RootPeersDNS.DNSActions as DNSActions
import Ouroboros.Network.PeerSelection.RootPeersDNS.DNSSemaphore as DNSSemaphore
import Ouroboros.Network.PeerSelection.RootPeersDNS.LedgerPeers as LedgerPeers
import Ouroboros.Network.PeerSelection.RootPeersDNS.LocalRootPeers as LocalRootPeers
import Ouroboros.Network.PeerSelection.RootPeersDNS.PublicRootPeers as PublicRootPeers
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
module Ouroboros.Network.PeerSelection.RootPeersDNS.DNSActions
( -- * DNS based actions for local and public root providers
DNSActions (..)
, PeerActionsDNS (..)
-- * DNSActions IO
, ioDNSActions
, DNSLookupType (..)
Expand Down Expand Up @@ -46,6 +47,7 @@ import System.Directory (getModificationTime)
import Data.IP (IP (..))
import Network.DNS (DNSError)
import Network.DNS qualified as DNS
import Network.Socket (PortNumber)


data DNSLookupType = LookupReqAOnly
Expand Down Expand Up @@ -175,6 +177,16 @@ data DNSActions resolver exception m = DNSActions {
}


-- | Record of some parameters that are commonly used together
--
-- TODO: rename as `PeerDNSActions`; can we bundle `paToPeerAddr` with
-- `DNSActions`?
data PeerActionsDNS peeraddr resolver exception m = PeerActionsDNS {
paToPeerAddr :: IP -> PortNumber -> peeraddr,
paDnsActions :: DNSActions resolver exception m
}



-- | Get a resolver from 'DNS.ResolvConf'.
--
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ import Network.DNS qualified as DNS

import Data.Bifunctor (second)
import Ouroboros.Network.PeerSelection.RelayAccessPoint
import Ouroboros.Network.PeerSelection.RootPeersDNS (PeerActionsDNS (..))
import Ouroboros.Network.PeerSelection.RootPeersDNS.DNSActions
import Ouroboros.Network.PeerSelection.RootPeersDNS.DNSSemaphore (DNSSemaphore,
newDNSLocalRootSemaphore, withDNSSemaphore)
Expand Down
Loading

0 comments on commit 0fdac49

Please sign in to comment.