Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
This module adds support for sanity checking consensus configuration on node startup. These checks should primarily look for unusual configuration choices that may point to an accidentally-misconfigured node and quietly cause problems, rather than incoherent configurations that will result in fatal errors at a later point.
While in most situations they can be handled as fatal issues, there are situations when intentionally configuring a node "weirdly" can be useful, and so the user should be able to opt out of the sanity checks at their own peril.
Synopsis
- class BlockSupportsSanityCheck blk where
- data SanityCheckIssue = InconsistentSecurityParam (NonEmpty SecurityParam)
- checkSecurityParamConsistency ∷ BlockSupportsSanityCheck blk ⇒ TopLevelConfig blk → Maybe SanityCheckIssue
- sanityCheckConfig ∷ BlockSupportsSanityCheck blk ⇒ TopLevelConfig blk → [SanityCheckIssue]
Documentation
class BlockSupportsSanityCheck blk where Source #
BlockSupportsSanityCheck
provides evidence that a block can be sanity
checked for common issues on node startup. sanityCheckConfig
, which runs
performs each check and returns a list with each SanityCheckIssue
found,
should be preferred over using these methods directly.
configAllSecurityParams ∷ TopLevelConfig blk → NonEmpty SecurityParam Source #
Generate a NonEmpty
list of security parameters for a given block type.
For individual eras' block types, this is simply a singleton list
containing the chosen SecurityParam
, but combined block types (i.e.
the HardForkCombinator
) will return all of their constituent eras'
configurations' security parameters.
Instances
data SanityCheckIssue Source #
An issue found in the TopLevelConfig
for a block. See displayException
for human-readable descriptions of each of these cases, especially when
presenting these to users.
InconsistentSecurityParam (NonEmpty SecurityParam) | Configuration contains multiple security parameters. This may cause strange behaviour around era boundaries. |
Instances
checkSecurityParamConsistency ∷ BlockSupportsSanityCheck blk ⇒ TopLevelConfig blk → Maybe SanityCheckIssue Source #
Check a TopLevelConfig
for any inconsistency in constituent choices for
SecurityParam
(colloquially k
). For a block type to be considered
"sane" in this regard, its configuration's security parameter as well as
all of its childrens' configurations (if applicable) should be the same.
sanityCheckConfig ∷ BlockSupportsSanityCheck blk ⇒ TopLevelConfig blk → [SanityCheckIssue] Source #
Run all supported sanity checks on a given TopLevelConfig
.