Skip to content

Commit

Permalink
Merge pull request #6107 from IntersectMBO/mwojtowicz/genesis-outboun…
Browse files Browse the repository at this point in the history
…d-sync-active-target

Allow outbound connections to non-big ledger peers in Genesis
  • Loading branch information
neilmayhew committed Feb 11, 2025
2 parents dad33d9 + 4d51c35 commit 76d07fa
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 13 deletions.
29 changes: 28 additions & 1 deletion cardano-node/src/Cardano/Node/Configuration/POM.hs
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,9 @@ import Ouroboros.Consensus.Node.Genesis (GenesisConfig, GenesisConfigF
import Ouroboros.Consensus.Storage.LedgerDB.DiskPolicy (Flag, NumOfDiskSnapshots (..),
SnapshotInterval (..))
import Ouroboros.Network.Diffusion.Configuration as Configuration
import qualified Ouroboros.Network.PeerSelection.Governor as PeerSelection

import Control.Monad (when)
import Control.Monad (when, unless)
import Data.Aeson
import qualified Data.Aeson.Types as Aeson
import Data.Bifunctor (Bifunctor (..))
Expand Down Expand Up @@ -702,6 +703,32 @@ makeNodeConfiguration pnc = do
$ pncGenesisConfigFlags pnc
let ncGenesisConfig = mkGenesisConfig mGenesisConfigFlags

let deadlineTargets =
PeerSelectionTargets {
targetNumberOfRootPeers = ncDeadlineTargetOfRootPeers,
targetNumberOfKnownPeers = ncDeadlineTargetOfKnownPeers,
targetNumberOfEstablishedPeers = ncDeadlineTargetOfEstablishedPeers,
targetNumberOfActivePeers = ncDeadlineTargetOfActivePeers,
targetNumberOfKnownBigLedgerPeers = ncDeadlineTargetOfKnownBigLedgerPeers,
targetNumberOfEstablishedBigLedgerPeers = ncDeadlineTargetOfEstablishedBigLedgerPeers,
targetNumberOfActiveBigLedgerPeers = ncDeadlineTargetOfActiveBigLedgerPeers }
syncTargets = deadlineTargets {
targetNumberOfActivePeers = ncSyncTargetOfActivePeers,
targetNumberOfKnownBigLedgerPeers = ncSyncTargetOfKnownBigLedgerPeers,
targetNumberOfEstablishedBigLedgerPeers = ncSyncTargetOfEstablishedBigLedgerPeers,
targetNumberOfActiveBigLedgerPeers = ncSyncTargetOfActiveBigLedgerPeers }

unless (PeerSelection.sanePeerSelectionTargets deadlineTargets
&& PeerSelection.sanePeerSelectionTargets syncTargets) $
Left $ "Invalid peer selection targets. Ensure that targets satisfy the "
<> "inequalities of 0 >= known >= established >= active "
<> "for both deadline and sync target groups. The deadline groups start with "
<> "TargetNumber... while the sync group starts with SyncTarget... "
<> "Additionally, TargetNumberOfEstablishedPeers >= SyncTargetNumberOfActivePeers. "
<> "Within each group, the category of big ledger peers is treated independently, "
<> "but it too must satisfy the same inequality. Refer to cardano-node wiki page "
<> "'understanding config files' for details."

-- TODO: This is not mandatory
experimentalProtocols <-
lastToEither "Missing ExperimentalProtocolsEnabled" $
Expand Down
5 changes: 1 addition & 4 deletions cardano-node/src/Cardano/Node/Run.hs
Original file line number Diff line number Diff line change
Expand Up @@ -939,10 +939,7 @@ mkP2PArguments NodeConfiguration {
targetNumberOfEstablishedBigLedgerPeers = ncDeadlineTargetOfEstablishedBigLedgerPeers,
targetNumberOfActiveBigLedgerPeers = ncDeadlineTargetOfActiveBigLedgerPeers
}
syncTargets = PeerSelectionTargets {
targetNumberOfRootPeers = 0,
targetNumberOfKnownPeers = 0,
targetNumberOfEstablishedPeers = 0,
syncTargets = deadlineTargets {
targetNumberOfActivePeers = ncSyncTargetOfActivePeers,
targetNumberOfKnownBigLedgerPeers = ncSyncTargetOfKnownBigLedgerPeers,
targetNumberOfEstablishedBigLedgerPeers = ncSyncTargetOfEstablishedBigLedgerPeers,
Expand Down
16 changes: 8 additions & 8 deletions cardano-node/src/Cardano/Tracing/OrphanInstances/Network.hs
Original file line number Diff line number Diff line change
Expand Up @@ -1754,19 +1754,19 @@ instance (Aeson.ToJSONKey peerAddr, ToJSON peerAddr, Ord peerAddr, Show peerAddr

instance ToJSON PeerSelectionTargets where
toJSON (PeerSelectionTargets
nRootLedgerPeers
nKnownLedgerPeers
nEstablishedLedgerPeers
nActiveLedgerPeers
nRootPeers
nKnownPeers
nEstablishedPeers
nActivePeers
nKnownBigLedgerPeers
nEstablishedBigLedgerPeers
nActiveBigLedgerPeers
) =
Aeson.object [ "kind" .= String "PeerSelectionTargets"
, "targetRootLedgerPeers" .= nRootLedgerPeers
, "targetKnownLedgerPeers" .= nKnownLedgerPeers
, "targetEstablishedLedgerPeers" .= nEstablishedLedgerPeers
, "targetActiveLedgerPeers" .= nActiveLedgerPeers
, "targetRootPeers" .= nRootPeers
, "targetKnownPeers" .= nKnownPeers
, "targetEstablishedPeers" .= nEstablishedPeers
, "targetActivePeers" .= nActivePeers

, "targetKnownBigLedgerPeers" .= nKnownBigLedgerPeers
, "targetEstablishedBigLedgerPeers" .= nEstablishedBigLedgerPeers
Expand Down

0 comments on commit 76d07fa

Please sign in to comment.