Skip to content

Commit 167da25

Browse files
cootJimbo4350
authored andcommitted
peer sharing: default configuration value
The default configuration value of peer sharing option depends now on `pncStartAsNonProducingNode` option and `ncProtocolFiles`. If a node runs as a relay, peer sharing is on by default, if it is running as a block producer, peer sharing is off by default. The default value can be overridden.
1 parent f0e43cd commit 167da25

File tree

3 files changed

+36
-14
lines changed

3 files changed

+36
-14
lines changed

cardano-node/src/Cardano/Node/Configuration/POM.hs

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,7 @@ data PartialNodeConfiguration
228228
, pncConfigFile :: !(Last ConfigYamlFilePath)
229229
, pncTopologyFile :: !(Last TopologyFile)
230230
, pncDatabaseFile :: !(Last NodeDatabasePaths)
231+
-- | pncProtocolFiles can only be supplied with command line arguments.
231232
, pncProtocolFiles :: !(Last ProtocolFilepaths)
232233
, pncValidateDB :: !(Last Bool)
233234
, pncShutdownConfig :: !(Last ShutdownConfig)
@@ -654,7 +655,7 @@ defaultPartialNodeConfiguration =
654655
, pncDiffusionMode = Last $ Just InitiatorAndResponderDiffusionMode
655656
, pncExperimentalProtocolsEnabled = Last $ Just False
656657
, pncTopologyFile = Last . Just $ TopologyFile "configuration/cardano/mainnet-topology.json"
657-
, pncProtocolFiles = mempty
658+
, pncProtocolFiles = Last . Just $ ProtocolFilepaths Nothing Nothing Nothing Nothing Nothing Nothing
658659
, pncValidateDB = Last $ Just False
659660
, pncShutdownConfig = Last . Just $ ShutdownConfig Nothing Nothing
660661
, pncStartAsNonProducingNode = Last $ Just False
@@ -696,7 +697,8 @@ defaultPartialNodeConfiguration =
696697
, pncMinBigLedgerPeersForTrustedState = Last (Just Cardano.defaultNumberOfBigLedgerPeers)
697698
, pncConsensusMode = Last (Just Ouroboros.defaultConsensusMode)
698699
, pncEnableP2P = Last (Just EnabledP2PMode)
699-
, pncPeerSharing = Last (Just Ouroboros.defaultPeerSharing)
700+
, pncPeerSharing = mempty
701+
-- the default is defined in `makeNodeConfiguration`
700702
, pncGenesisConfigFlags = Last (Just defaultGenesisConfigFlags)
701703
, pncResponderCoreAffinityPolicy = Last $ Just NoResponderCoreAffinity
702704
}
@@ -731,6 +733,7 @@ makeNodeConfiguration pnc = do
731733
validateDB <- lastToEither "Missing ValidateDB" $ pncValidateDB pnc
732734
startAsNonProducingNode <- lastToEither "Missing StartAsNonProducingNode" $ pncStartAsNonProducingNode pnc
733735
protocolConfig <- lastToEither "Missing ProtocolConfig" $ pncProtocolConfig pnc
736+
protocolFiles <- lastToEither "Missing ProtocolFiles" $ pncProtocolFiles pnc
734737
loggingSwitch <- lastToEither "Missing LoggingSwitch" $ pncLoggingSwitch pnc
735738
logMetrics <- lastToEither "Missing LogMetrics" $ pncLogMetrics pnc
736739
traceConfig <- first Text.unpack $ partialTraceSelectionToEither $ pncTraceConfig pnc
@@ -810,9 +813,14 @@ makeNodeConfiguration pnc = do
810813
$ getLast
811814
$ pncChainSyncIdleTimeout pnc
812815

813-
ncPeerSharing <-
814-
lastToEither "Missing PeerSharing"
815-
$ pncPeerSharing pnc
816+
let ncPeerSharing =
817+
case pncPeerSharing pnc of
818+
Last Nothing ->
819+
if not startAsNonProducingNode
820+
|| hasProtocolFile protocolFiles
821+
then PeerSharingDisabled
822+
else PeerSharingEnabled
823+
Last (Just peerSharing) -> peerSharing
816824

817825
mGenesisConfigFlags <- case ncConsensusMode of
818826
PraosMode -> pure Nothing
@@ -857,13 +865,7 @@ makeNodeConfiguration pnc = do
857865
{ ncConfigFile = configFile
858866
, ncTopologyFile = topologyFile
859867
, ncDatabaseFile = databaseFile
860-
, ncProtocolFiles =
861-
-- TODO: ncProtocolFiles should be Maybe ProtocolFiles
862-
-- as relay nodes don't need the protocol files because
863-
-- they are not minting blocks.
864-
case getLast $ pncProtocolFiles pnc of
865-
Just pFiles -> pFiles
866-
Nothing -> ProtocolFilepaths Nothing Nothing Nothing Nothing Nothing Nothing
868+
, ncProtocolFiles = protocolFiles
867869
, ncValidateDB = validateDB
868870
, ncShutdownConfig = shutdownConfig
869871
, ncStartAsNonProducingNode = startAsNonProducingNode

cardano-node/src/Cardano/Node/Parsers.hs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,7 @@ import Data.Foldable
2727
import Data.Maybe (fromMaybe)
2828
import Data.Monoid (Last (..))
2929
import Data.Text (Text)
30-
import qualified Data.Text as Text
31-
import Data.Word (Word16, Word32)
30+
import Data.Word (Word32)
3231
import Options.Applicative hiding (str, switch)
3332
-- Don't use switch. It will not allow to set an option in a configuration
3433
-- file. See `parseStartAsNonProducingNode` and `parseValidateDB`.

cardano-node/src/Cardano/Node/Types.hs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ module Cardano.Node.Types
1717
, PeerSnapshotFile (..)
1818
, CheckpointsFile(..)
1919
, ProtocolFilepaths (..)
20+
, hasProtocolFile
2021
, GenesisHash(..)
2122
, CheckpointsHash(..)
2223
, MaxConcurrencyBulkSync(..)
@@ -50,6 +51,7 @@ import Ouroboros.Network.NodeToNode (DiffusionMode (..))
5051
import Control.Exception
5152
import Data.Aeson
5253
import Data.ByteString (ByteString)
54+
import Data.Maybe (isJust)
5355
import Data.Monoid (Last (..))
5456
import Data.String (IsString)
5557
import Data.Text (Text)
@@ -174,6 +176,25 @@ data ProtocolFilepaths =
174176
, shelleyBulkCredsFile :: !(Maybe FilePath)
175177
} deriving (Eq, Show)
176178

179+
-- | If any of the 'ProtocolFilepath` is given `PeerSharing` option will be
180+
-- disabled by default.
181+
--
182+
hasProtocolFile :: ProtocolFilepaths -> Bool
183+
hasProtocolFile ProtocolFilepaths {
184+
byronCertFile,
185+
byronKeyFile,
186+
shelleyKESFile,
187+
shelleyVRFFile,
188+
shelleyCertFile,
189+
shelleyBulkCredsFile
190+
}
191+
= isJust byronCertFile
192+
|| isJust byronKeyFile
193+
|| isJust shelleyKESFile
194+
|| isJust shelleyVRFFile
195+
|| isJust shelleyCertFile
196+
|| isJust shelleyBulkCredsFile
197+
177198
newtype GenesisHash = GenesisHash (Crypto.Hash Crypto.Blake2b_256 ByteString)
178199
deriving newtype (Eq, Show, ToJSON, FromJSON)
179200

0 commit comments

Comments
 (0)