mirror of
https://github.com/neondatabase/neon.git
synced 2026-05-26 01:20:38 +00:00
Fix tenant config parsing
This commit is contained in:
committed by
Kirill Bulatov
parent
634d0eab68
commit
09393279c6
@@ -490,7 +490,7 @@ impl PageServerConf {
|
|||||||
let mut builder = PageServerConfigBuilder::default();
|
let mut builder = PageServerConfigBuilder::default();
|
||||||
builder.workdir(workdir.to_owned());
|
builder.workdir(workdir.to_owned());
|
||||||
|
|
||||||
let mut t_conf: TenantConfOpt = Default::default();
|
let mut t_conf = TenantConfOpt::default();
|
||||||
|
|
||||||
for (key, item) in toml.iter() {
|
for (key, item) in toml.iter() {
|
||||||
match key {
|
match key {
|
||||||
@@ -621,6 +621,12 @@ impl PageServerConf {
|
|||||||
if let Some(max_lsn_wal_lag) = item.get("max_lsn_wal_lag") {
|
if let Some(max_lsn_wal_lag) = item.get("max_lsn_wal_lag") {
|
||||||
t_conf.max_lsn_wal_lag = Some(parse_toml_from_str("max_lsn_wal_lag", max_lsn_wal_lag)?);
|
t_conf.max_lsn_wal_lag = Some(parse_toml_from_str("max_lsn_wal_lag", max_lsn_wal_lag)?);
|
||||||
}
|
}
|
||||||
|
if let Some(trace_read_requests) = item.get("trace_read_requests") {
|
||||||
|
t_conf.trace_read_requests =
|
||||||
|
Some(trace_read_requests.as_bool().with_context(|| {
|
||||||
|
"configure option trace_read_requests is not a bool".to_string()
|
||||||
|
})?);
|
||||||
|
}
|
||||||
|
|
||||||
Ok(t_conf)
|
Ok(t_conf)
|
||||||
}
|
}
|
||||||
@@ -1020,6 +1026,35 @@ broker_endpoints = ['{broker_endpoint}']
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn parse_tenant_config() -> anyhow::Result<()> {
|
||||||
|
let tempdir = tempdir()?;
|
||||||
|
let (workdir, pg_distrib_dir) = prepare_fs(&tempdir)?;
|
||||||
|
|
||||||
|
let broker_endpoint = "http://127.0.0.1:7777";
|
||||||
|
let trace_read_requests = true;
|
||||||
|
|
||||||
|
let config_string = format!(
|
||||||
|
r#"{ALL_BASE_VALUES_TOML}
|
||||||
|
pg_distrib_dir='{}'
|
||||||
|
broker_endpoints = ['{broker_endpoint}']
|
||||||
|
|
||||||
|
[tenant_config]
|
||||||
|
trace_read_requests = {trace_read_requests}"#,
|
||||||
|
pg_distrib_dir.display(),
|
||||||
|
);
|
||||||
|
|
||||||
|
let toml = config_string.parse()?;
|
||||||
|
|
||||||
|
let conf = PageServerConf::parse_and_validate(&toml, &workdir)?;
|
||||||
|
assert_eq!(
|
||||||
|
conf.default_tenant_conf.trace_read_requests, trace_read_requests,
|
||||||
|
"Tenant config from pageserver config file should be parsed and udpated values used as defaults for all tenants",
|
||||||
|
);
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
fn prepare_fs(tempdir: &TempDir) -> anyhow::Result<(PathBuf, PathBuf)> {
|
fn prepare_fs(tempdir: &TempDir) -> anyhow::Result<(PathBuf, PathBuf)> {
|
||||||
let tempdir_path = tempdir.path();
|
let tempdir_path = tempdir.path();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user