Skip to content

Commit 506b458

Browse files
authored
fix(config): Fix parsing null values with units + other config fixes (#4168)
## What ❔ - Fixes parsing null values with units, such as `slow_time_limit_ms: null`. - Updates `smart-config` to a published version (0.2.0-pre). - Adds a missing default for the `max_blocks_to_look_back` param. ## Why ❔ We want existing Era configs to be parseable. ## Is this a breaking change? - [ ] Yes - [x] No ## Operational changes No operational changes. ## Checklist - [x] PR title corresponds to the body of PR (we generate changelog entries from PRs). - [x] Tests for the changes have been added / updated. - [x] Documentation comments have been added / updated. - [x] Code has been formatted via `zkstack dev fmt` and `zkstack dev lint`.
1 parent c4eb13c commit 506b458

File tree

11 files changed

+58
-33
lines changed

11 files changed

+58
-33
lines changed

core/Cargo.lock

Lines changed: 9 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

core/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -217,8 +217,8 @@ trybuild = "1.0"
217217
# "Internal" dependencies
218218
vise = "0.3.1"
219219
vise-exporter = "0.3.1"
220-
smart-config = { version = "=0.1.0-pre", git = "https://github.com/matter-labs/smart-config.git", rev = "992f72e6540a116bf91bdc03151bf0067834dff0" }
221-
smart-config-commands = { version = "=0.1.0-pre", git = "https://github.com/matter-labs/smart-config.git", rev = "992f72e6540a116bf91bdc03151bf0067834dff0" }
220+
smart-config = "=0.2.0-pre"
221+
smart-config-commands = "=0.2.0-pre"
222222
foundry-compilers = { version = "0.11.6", git = "https://github.com/Moonsong-Labs/compilers.git", rev = "7c69695e5c75451f158dd2456bf8c94a7492ea0b" }
223223

224224
# DA clients' dependencies

core/lib/config/src/configs/api.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -581,6 +581,20 @@ mod tests {
581581
assert_eq!(config, expected_config());
582582
}
583583

584+
#[test]
585+
fn parsing_null_time_limits() {
586+
let yaml = r#"
587+
port: 3071
588+
slow_time_limit_ms: null
589+
hard_time_limit_ms: null
590+
"#;
591+
let yaml = Yaml::new("test.yml", serde_yaml::from_str(yaml).unwrap()).unwrap();
592+
593+
let config = test::<HealthCheckConfig>(yaml).unwrap();
594+
assert_eq!(config.slow_time_limit, None);
595+
assert_eq!(config.hard_time_limit, None);
596+
}
597+
584598
#[test]
585599
fn parsing_max_response_overrides() {
586600
let yaml = r#"

core/lib/config/src/configs/consensus.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use std::{
77
use serde::{Deserialize, Serialize};
88
use smart_config::{
99
de,
10-
de::{DeserializeContext, Entries, Qualified, Serde, WellKnown},
10+
de::{DeserializeContext, Entries, Qualified, Serde, WellKnown, WellKnownOption},
1111
metadata::{BasicTypes, ParamMetadata, SizeUnit, TypeDescription},
1212
value::SecretString,
1313
ByteSize, DescribeConfig, DeserializeConfig, ErrorWithOrigin,
@@ -28,6 +28,8 @@ impl WellKnown for ValidatorPublicKey {
2828
Qualified::new(Serde![str], "has `validator:public:bls12_381:` prefix");
2929
}
3030

31+
impl WellKnownOption for ValidatorPublicKey {}
32+
3133
/// `zksync_consensus_crypto::TextFmt` representation of `zksync_consensus_roles::node::PublicKey`.
3234
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)]
3335
#[serde(transparent)]

core/lib/config/src/configs/contracts/chain.rs

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
1-
use serde::{Deserialize, Serialize};
2-
use smart_config::{
3-
de::{Serde, WellKnown},
4-
ConfigSchema, DescribeConfig, DeserializeConfig,
5-
};
1+
use smart_config::{ConfigSchema, DescribeConfig, DeserializeConfig};
62
use zksync_basic_types::{Address, H256};
73

84
use super::{
@@ -101,26 +97,25 @@ impl L2ContractsConfig {
10197
}
10298
}
10399

104-
#[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize)]
100+
#[derive(Debug, Clone, PartialEq, DescribeConfig, DeserializeConfig)]
101+
#[config(derive(Default))]
105102
pub struct Bridge {
106-
#[serde(alias = "proxy_addr")]
103+
/// Address of the bridge on L1.
104+
#[config(alias = "proxy_addr")]
107105
pub l1_address: Option<Address>,
108-
#[serde(alias = "addr")]
106+
/// Address of the bridge on L2.
107+
#[config(alias = "addr")]
109108
pub l2_address: Option<Address>,
110109
}
111110

112-
impl WellKnown for Bridge {
113-
type Deserializer = Serde![object];
114-
const DE: Self::Deserializer = Serde![object];
115-
}
116-
117111
#[derive(Debug, Clone, PartialEq, DescribeConfig, DeserializeConfig)]
112+
#[config(derive(Default))]
118113
pub struct BridgesConfig {
119-
#[config(default, alias = "shared_bridge")]
114+
#[config(nest, alias = "shared_bridge")]
120115
pub shared: Bridge,
121-
#[config(default, alias = "erc20_bridge")]
116+
#[config(nest, alias = "erc20_bridge")]
122117
pub erc20: Bridge,
123-
#[config(default, alias = "weth_bridge")]
118+
#[config(nest, alias = "weth_bridge")]
124119
pub weth: Bridge,
125120
}
126121

core/lib/config/src/configs/da_client/avail.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,18 @@ pub struct AvailDefaultConfig {
3434
#[serde(default = "AvailDefaultConfig::default_dispatch_timeout")]
3535
pub dispatch_timeout: Duration,
3636
#[config(default_t = 5)]
37+
#[serde(default = "AvailDefaultConfig::default_max_blocks_to_look_back")]
3738
pub max_blocks_to_look_back: usize,
3839
}
3940

4041
impl AvailDefaultConfig {
4142
const fn default_dispatch_timeout() -> Duration {
4243
Duration::from_secs(180)
4344
}
45+
46+
const fn default_max_blocks_to_look_back() -> usize {
47+
5
48+
}
4449
}
4550

4651
#[derive(Clone, Debug, PartialEq, Deserialize, DescribeConfig, DeserializeConfig)]

core/lib/config/src/configs/genesis.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use serde::{
1010
Deserialize, Serialize,
1111
};
1212
use smart_config::{
13-
de::{DeserializeContext, DeserializeParam, WellKnown},
13+
de::{DeserializeContext, DeserializeParam, WellKnown, WellKnownOption},
1414
metadata::{BasicTypes, ParamMetadata},
1515
DescribeConfig, DeserializeConfig, ErrorWithOrigin,
1616
};
@@ -220,6 +220,8 @@ impl WellKnown for GenesisConfig {
220220
const DE: Self::Deserializer = GenesisConfigDeserializer;
221221
}
222222

223+
impl WellKnownOption for GenesisConfig {}
224+
223225
#[derive(Debug, Clone, PartialEq, DescribeConfig, DeserializeConfig)]
224226
pub struct GenesisConfigWrapper {
225227
/// Genesis configuration.

core/lib/config/src/utils.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ where
1818
const EXPECTING: BasicTypes = <T::Deserializer>::EXPECTING.or(De::EXPECTING);
1919

2020
fn describe(&self, description: &mut TypeDescription) {
21-
self.0.describe(description);
21+
T::DE.describe(description);
2222
description.set_fallback(&self.0);
2323
}
2424

prover/Cargo.lock

Lines changed: 6 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

prover/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ tracing-subscriber = "0.3"
6565
tracing-test = "0.2.5"
6666
url = "2.5.2"
6767
vise = "0.3.1"
68-
smart-config = { version = "=0.1.0-pre", git = "https://github.com/matter-labs/smart-config.git", rev = "992f72e6540a116bf91bdc03151bf0067834dff0" }
68+
smart-config = "=0.2.0-pre"
6969

7070
circuit_definitions = "=0.152.3"
7171
circuit_sequencer_api = "=0.152.3"

0 commit comments

Comments
 (0)