@@ -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
0 commit comments