@@ -227,6 +227,7 @@ data PartialNodeConfiguration
227227 , pncConfigFile :: ! (Last ConfigYamlFilePath )
228228 , pncTopologyFile :: ! (Last TopologyFile )
229229 , pncDatabaseFile :: ! (Last NodeDatabasePaths )
230+ -- | pncProtocolFiles can only be supplied with command line arguments.
230231 , pncProtocolFiles :: ! (Last ProtocolFilepaths )
231232 , pncValidateDB :: ! (Last Bool )
232233 , pncShutdownConfig :: ! (Last ShutdownConfig )
@@ -313,6 +314,7 @@ instance Semigroup PartialNodeConfiguration where
313314instance FromJSON PartialNodeConfiguration where
314315 parseJSON =
315316 withObject " PartialNodeConfiguration" $ \ v -> do
317+ pncStartAsNonProducingNode <- Last <$> v .:? " StartAsNonProducingNode"
316318
317319 -- Node parameters, not protocol-specific
318320 pncSocketPath <- Last <$> v .:? " SocketPath"
@@ -433,7 +435,7 @@ instance FromJSON PartialNodeConfiguration where
433435 , pncProtocolFiles = mempty
434436 , pncValidateDB = mempty
435437 , pncShutdownConfig = mempty
436- , pncStartAsNonProducingNode = Last $ Just False
438+ , pncStartAsNonProducingNode
437439 , pncMaybeMempoolCapacityOverride
438440 , pncLedgerDbConfig
439441 , pncProtocolIdleTimeout
@@ -651,7 +653,7 @@ defaultPartialNodeConfiguration =
651653 , pncDiffusionMode = Last $ Just InitiatorAndResponderDiffusionMode
652654 , pncExperimentalProtocolsEnabled = Last $ Just False
653655 , pncTopologyFile = Last . Just $ TopologyFile " configuration/cardano/mainnet-topology.json"
654- , pncProtocolFiles = mempty
656+ , pncProtocolFiles = Last . Just $ ProtocolFilepaths Nothing Nothing Nothing Nothing Nothing Nothing
655657 , pncValidateDB = Last $ Just False
656658 , pncShutdownConfig = Last . Just $ ShutdownConfig Nothing Nothing
657659 , pncStartAsNonProducingNode = Last $ Just False
@@ -703,8 +705,8 @@ defaultPartialNodeConfiguration =
703705 , pncConsensusMode = Last (Just Ouroboros. defaultConsensusMode)
704706 -- https://ouroboros-network.cardano.intersectmbo.org/ouroboros-network/Ouroboros-Network-Diffusion-Configuration.html#v:defaultConsensusMode
705707 , pncEnableP2P = Last (Just EnabledP2PMode )
706- , pncPeerSharing = Last ( Just Ouroboros. defaultPeerSharing)
707- -- https://ouroboros-network.cardano.intersectmbo.org/ouroboros-network/Ouroboros-Network-Diffusion-Configuration.html#v:defaultPeerSharing
708+ , pncPeerSharing = mempty
709+ -- the default is defined in `makeNodeConfiguration`
708710 , pncGenesisConfigFlags = Last (Just defaultGenesisConfigFlags)
709711 -- https://ouroboros-consensus.cardano.intersectmbo.org/haddocks/ouroboros-consensus-diffusion/Ouroboros-Consensus-Node-Genesis.html#v:defaultGenesisConfigFlags
710712 , pncResponderCoreAffinityPolicy = Last $ Just NoResponderCoreAffinity
@@ -721,6 +723,7 @@ makeNodeConfiguration pnc = do
721723 validateDB <- lastToEither " Missing ValidateDB" $ pncValidateDB pnc
722724 startAsNonProducingNode <- lastToEither " Missing StartAsNonProducingNode" $ pncStartAsNonProducingNode pnc
723725 protocolConfig <- lastToEither " Missing ProtocolConfig" $ pncProtocolConfig pnc
726+ protocolFiles <- lastToEither " Missing ProtocolFiles" $ pncProtocolFiles pnc
724727 loggingSwitch <- lastToEither " Missing LoggingSwitch" $ pncLoggingSwitch pnc
725728 logMetrics <- lastToEither " Missing LogMetrics" $ pncLogMetrics pnc
726729 traceConfig <- first Text. unpack $ partialTraceSelectionToEither $ pncTraceConfig pnc
@@ -800,9 +803,14 @@ makeNodeConfiguration pnc = do
800803 $ getLast
801804 $ pncChainSyncIdleTimeout pnc
802805
803- ncPeerSharing <-
804- lastToEither " Missing PeerSharing"
805- $ pncPeerSharing pnc
806+ let ncPeerSharing =
807+ case pncPeerSharing pnc of
808+ Last Nothing ->
809+ if not startAsNonProducingNode
810+ || hasProtocolFile protocolFiles
811+ then PeerSharingDisabled
812+ else PeerSharingEnabled
813+ Last (Just peerSharing) -> peerSharing
806814
807815 mGenesisConfigFlags <- case ncConsensusMode of
808816 PraosMode -> pure Nothing
@@ -847,13 +855,7 @@ makeNodeConfiguration pnc = do
847855 { ncConfigFile = configFile
848856 , ncTopologyFile = topologyFile
849857 , ncDatabaseFile = databaseFile
850- , ncProtocolFiles =
851- -- TODO: ncProtocolFiles should be Maybe ProtocolFiles
852- -- as relay nodes don't need the protocol files because
853- -- they are not minting blocks.
854- case getLast $ pncProtocolFiles pnc of
855- Just pFiles -> pFiles
856- Nothing -> ProtocolFilepaths Nothing Nothing Nothing Nothing Nothing Nothing
858+ , ncProtocolFiles = protocolFiles
857859 , ncValidateDB = validateDB
858860 , ncShutdownConfig = shutdownConfig
859861 , ncStartAsNonProducingNode = startAsNonProducingNode
0 commit comments