Skip to content

Commit

Permalink
Add --start-as-non-producing-node flag
Browse files Browse the repository at this point in the history
  • Loading branch information
bolt12 committed Jun 28, 2023
1 parent a1d0c3a commit 1594803
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 2 deletions.
8 changes: 8 additions & 0 deletions cardano-node/src/Cardano/Node/Configuration/POM.hs
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,8 @@ data NodeConfiguration
, ncValidateDB :: !Bool
, ncShutdownConfig :: !ShutdownConfig

, ncStartAsNonProducingNode :: !Bool

-- Protocol-specific parameters:
, ncProtocolConfig :: !NodeProtocolConfiguration

Expand Down Expand Up @@ -159,6 +161,8 @@ data PartialNodeConfiguration
, pncValidateDB :: !(Last Bool)
, pncShutdownConfig :: !(Last ShutdownConfig)

, pncStartAsNonProducingNode :: !(Last Bool)

-- Protocol-specific parameters:
, pncProtocolConfig :: !(Last NodeProtocolConfiguration)

Expand Down Expand Up @@ -309,6 +313,7 @@ instance FromJSON PartialNodeConfiguration where
, pncProtocolFiles = mempty
, pncValidateDB = mempty
, pncShutdownConfig = mempty
, pncStartAsNonProducingNode = Last $ Just False
, pncMaybeMempoolCapacityOverride
, pncProtocolIdleTimeout
, pncTimeWaitTimeout
Expand Down Expand Up @@ -466,6 +471,7 @@ defaultPartialNodeConfiguration =
, pncProtocolFiles = mempty
, pncValidateDB = Last $ Just False
, pncShutdownConfig = Last . Just $ ShutdownConfig Nothing Nothing
, pncStartAsNonProducingNode = Last $ Just False
, pncProtocolConfig = mempty
, pncMaxConcurrencyBulkSync = mempty
, pncMaxConcurrencyDeadline = mempty
Expand Down Expand Up @@ -500,6 +506,7 @@ makeNodeConfiguration pnc = do
topologyFile <- lastToEither "Missing TopologyFile" $ pncTopologyFile pnc
databaseFile <- lastToEither "Missing DatabaseFile" $ pncDatabaseFile pnc
validateDB <- lastToEither "Missing ValidateDB" $ pncValidateDB pnc
startAsNonProducingNode <- lastToEither "Missing StartAsNonProducingNode" $ pncStartAsNonProducingNode pnc
protocolConfig <- lastToEither "Missing ProtocolConfig" $ pncProtocolConfig pnc
loggingSwitch <- lastToEither "Missing LoggingSwitch" $ pncLoggingSwitch pnc
logMetrics <- lastToEither "Missing LogMetrics" $ pncLogMetrics pnc
Expand Down Expand Up @@ -555,6 +562,7 @@ makeNodeConfiguration pnc = do
Nothing -> ProtocolFilepaths Nothing Nothing Nothing Nothing Nothing Nothing
, ncValidateDB = validateDB
, ncShutdownConfig = shutdownConfig
, ncStartAsNonProducingNode = startAsNonProducingNode
, ncProtocolConfig = protocolConfig
, ncSocketConfig = socketConfig
, ncDiffusionMode = diffusionMode
Expand Down
10 changes: 10 additions & 0 deletions cardano-node/src/Cardano/Node/Parsers.hs
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ nodeRunParser = do
shelleyVRFFile <- optional parseVrfKeyFilePath
shelleyCertFile <- optional parseOperationalCertFilePath
shelleyBulkCredsFile <- optional parseBulkCredsFilePath
startAsNonProducingNode <- lastOption parseStartAsNonProducingNode

-- Node Address
nIPv4Address <- lastOption parseHostIPv4Addr
Expand Down Expand Up @@ -102,6 +103,7 @@ nodeRunParser = do
, pncValidateDB = validate
, pncShutdownConfig =
Last . Just $ ShutdownConfig (getLast shutdownIPC) (getLast shutdownOnLimit)
, pncStartAsNonProducingNode = startAsNonProducingNode
, pncProtocolConfig = mempty
, pncMaxConcurrencyBulkSync = mempty
, pncMaxConcurrencyDeadline = mempty
Expand Down Expand Up @@ -313,6 +315,14 @@ parseVrfKeyFilePath =
<> completer (bashCompleter "file")
)

parseStartAsNonProducingNode :: Parser Bool
parseStartAsNonProducingNode =
switch (
long "start-as-non-producing-node"
<> help ("Start the node as a non block producing node even if "
++ "credentials are specified.")
)

-- TODO revisit because it sucks
parseSnapshotInterval :: Parser SnapshotInterval
parseSnapshotInterval = fmap (RequestedSnapshotInterval . secondsToDiffTime) parseDifftime
Expand Down
3 changes: 2 additions & 1 deletion cardano-node/src/Cardano/Node/Run.hs
Original file line number Diff line number Diff line change
Expand Up @@ -411,7 +411,8 @@ handleSimpleNode blockType runP p2pMode tracers nc onKernel = do
-- set the initial block forging
blockForging <- snd (Api.protocolInfo runP)

setBlockForging nodeKernel blockForging
unless (ncStartAsNonProducingNode nc) $
setBlockForging nodeKernel blockForging

maybeSpawnOnSlotSyncedShutdownHandler
(ncShutdownConfig nc)
Expand Down
5 changes: 4 additions & 1 deletion cardano-node/test/Test/Cardano/Node/POM.hs
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,10 @@ testPartialYamlConfig =
{ pncProtocolConfig = Last . Just
. NodeProtocolConfigurationShelley
$ NodeShelleyProtocolConfiguration
(GenesisFile "dummmy-genesis-file") Nothing
(GenesisFile "dummmsy-genesis-file") Nothing
, pncSocketConfig = Last . Just $ SocketConfig (Last Nothing) mempty mempty mempty
, pncShutdownConfig = Last Nothing
, pncStartAsNonProducingNode = Last $ Just False
, pncDiffusionMode = Last Nothing
, pncSnapshotInterval = mempty
, pncExperimentalProtocolsEnabled = Last Nothing
Expand Down Expand Up @@ -88,6 +89,7 @@ testPartialCliConfig =
PartialNodeConfiguration
{ pncSocketConfig = Last . Just $ SocketConfig mempty mempty mempty mempty
, pncShutdownConfig = Last . Just $ ShutdownConfig Nothing (Just . ASlot $ SlotNo 42)
, pncStartAsNonProducingNode = Last $ Just $ False

Check warning on line 92 in cardano-node/test/Test/Cardano/Node/POM.hs

View workflow job for this annotation

GitHub Actions / build

Suggestion in testPartialCliConfig in module Test.Cardano.Node.POM: Redundant $ ▫︎ Found: "Just $ False" ▫︎ Perhaps: "Just False"

Check warning on line 92 in cardano-node/test/Test/Cardano/Node/POM.hs

View workflow job for this annotation

GitHub Actions / build

Suggestion in testPartialCliConfig in module Test.Cardano.Node.POM: Redundant $ ▫︎ Found: "Just $ False" ▫︎ Perhaps: "Just False"
, pncConfigFile = mempty
, pncTopologyFile = mempty
, pncDatabaseFile = mempty
Expand Down Expand Up @@ -123,6 +125,7 @@ eExpectedConfig = do
return $ NodeConfiguration
{ ncSocketConfig = SocketConfig mempty mempty mempty mempty
, ncShutdownConfig = ShutdownConfig Nothing (Just . ASlot $ SlotNo 42)
, ncStartAsNonProducingNode = False
, ncConfigFile = ConfigYamlFilePath "configuration/cardano/mainnet-config.json"
, ncTopologyFile = TopologyFile "configuration/cardano/mainnet-topology.json"
, ncDatabaseFile = DbFile "mainnet/db/"
Expand Down

0 comments on commit 1594803

Please sign in to comment.