Refector construction of basebackup command

This commit is contained in:
Konstantin Knizhnik
2025-02-28 21:34:35 +02:00
parent 955175c791
commit 1d24b887b8

View File

@@ -897,31 +897,28 @@ impl ComputeNode {
let mut client = config.connect(NoTls)?;
let pageserver_connect_micros = start_time.elapsed().as_micros() as u64;
let replica = if spec.spec.mode != ComputeMode::Primary {
" --replica"
} else {
""
};
let lazy_slru_download = if spec
let tenant_id = spec.tenant_id.to_string();
let timeline_id = spec.timeline_id.to_string();
let lsn_str = lsn.to_string();
let mut cmd = Vec::new();
cmd.push("basebackup");
cmd.push(&tenant_id);
cmd.push(&timeline_id);
if lsn != Lsn::INVALID {
cmd.push(&lsn_str);
}
cmd.push("--zip");
if spec.spec.mode != ComputeMode::Primary {
cmd.push("--replica");
}
if spec
.spec
.features
.contains(&ComputeFeature::LazySlruDownload)
{
" --lazy-slru-download"
} else {
""
};
let basebackup_cmd = match lsn {
Lsn(0) => format!(
"basebackup {} {} --gzip{}{}",
spec.tenant_id, spec.timeline_id, replica, lazy_slru_download
),
_ => format!(
"basebackup {} {} {} --gzip{}{}",
spec.tenant_id, spec.timeline_id, lsn, replica, lazy_slru_download
),
};
cmd.push("--lazy-slru-download")
}
let basebackup_cmd = cmd.join(" ");
let copyreader = client.copy_out(basebackup_cmd.as_str())?;
let mut measured_reader = MeasuredReader::new(copyreader);
let mut bufreader = std::io::BufReader::new(&mut measured_reader);