Skip to content

Commit 6d1a372

Browse files
committed
feat: make allow_unparsable_block configurable on Signer node
Add 'allow_unparsable_block' clap argument and Configuration parameter.
1 parent 192c803 commit 6d1a372

File tree

5 files changed

+22
-5
lines changed

5 files changed

+22
-5
lines changed

mithril-signer/src/aggregator_client.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -443,6 +443,7 @@ mod tests {
443443
enable_metrics_server: true,
444444
metrics_server_ip: "0.0.0.0".to_string(),
445445
metrics_server_port: 9090,
446+
allow_unparsable_block: false,
446447
};
447448
let era_checker = EraChecker::new(SupportedEra::dummy(), Epoch(1));
448449
let api_version_provider = APIVersionProvider::new(Arc::new(era_checker));

mithril-signer/src/configuration.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,11 @@ pub struct Configuration {
9090

9191
/// Metrics HTTP Server listening port.
9292
pub metrics_server_port: u16,
93+
94+
/// If set no error is returned in case of unparsable block and an error log is written instead.
95+
///
96+
/// Will be ignored on production networks.
97+
pub allow_unparsable_block: bool,
9398
}
9499

95100
impl Configuration {
@@ -120,6 +125,7 @@ impl Configuration {
120125
enable_metrics_server: true,
121126
metrics_server_ip: "0.0.0.0".to_string(),
122127
metrics_server_port: 9090,
128+
allow_unparsable_block: false,
123129
}
124130
}
125131

mithril-signer/src/main.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,12 @@ pub struct Args {
7575
/// Metrics HTTP server listening port.
7676
#[clap(long, env = "METRICS_SERVER_PORT", default_value_t = 9090)]
7777
metrics_server_port: u16,
78+
79+
/// If set no error is returned in case of unparsable block and an error log is written instead.
80+
///
81+
/// Will be ignored on production networks.
82+
#[clap(long)]
83+
allow_unparsable_block: bool,
7884
}
7985

8086
impl Args {
@@ -136,6 +142,8 @@ async fn main() -> StdResult<()> {
136142
.with_context(|| "configuration error: could not set `reset_digests_cache`")?
137143
.set_default("enable_metrics_server", args.enable_metrics_server)
138144
.with_context(|| "configuration error: could not set `enable_metrics_server`")?
145+
.set_default("allow_unparsable_block", args.allow_unparsable_block)
146+
.with_context(|| "configuration error: could not set `allow_unparsable_block`")?
139147
.add_source(DefaultConfiguration::default())
140148
.add_source(
141149
config::File::with_name(&format!(

mithril-signer/src/runtime/runner.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -599,6 +599,7 @@ mod tests {
599599
enable_metrics_server: true,
600600
metrics_server_ip: "0.0.0.0".to_string(),
601601
metrics_server_port: 9090,
602+
allow_unparsable_block: false,
602603
};
603604

604605
SignerRunner::new(

mithril-signer/src/runtime/signer_services.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ use mithril_common::{
99
crypto_helper::{OpCert, ProtocolPartyId, SerDeShelleyFileFormat},
1010
digesters::{
1111
cache::{ImmutableFileDigestCacheProvider, JsonImmutableFileDigestCacheProviderBuilder},
12-
ImmutableFileObserver,
12+
CardanoImmutableDigester, ImmutableDigester, ImmutableFileObserver,
13+
ImmutableFileSystemObserver,
1314
},
14-
digesters::{CardanoImmutableDigester, ImmutableDigester, ImmutableFileSystemObserver},
1515
era::{EraChecker, EraReader},
1616
signable_builder::{
1717
CardanoImmutableFilesFullSignableBuilder, CardanoTransactionsSignableBuilder,
@@ -257,11 +257,11 @@ impl<'a> ServiceBuilder for ProductionServiceBuilder<'a> {
257257
));
258258
let mithril_stake_distribution_signable_builder =
259259
Arc::new(MithrilStakeDistributionSignableBuilder::default());
260-
// TODO: 'allow_unparsable_block' parameter should be configurable
261-
let allow_unparsable_block = false;
262260
let transaction_parser = Arc::new(CardanoTransactionParser::new(
263261
slog_scope::logger(),
264-
allow_unparsable_block,
262+
self.config
263+
.get_network()?
264+
.allow_unparsable_block(self.config.allow_unparsable_block)?,
265265
));
266266
let transaction_store = Arc::new(CardanoTransactionRepository::new(
267267
transaction_sqlite_connection,
@@ -385,6 +385,7 @@ mod tests {
385385
enable_metrics_server: true,
386386
metrics_server_ip: "0.0.0.0".to_string(),
387387
metrics_server_port: 9090,
388+
allow_unparsable_block: false,
388389
};
389390

390391
assert!(!stores_dir.exists());

0 commit comments

Comments
 (0)