diff --git a/compute_tools/src/compute.rs b/compute_tools/src/compute.rs index 29b0225419..24b31b132d 100644 --- a/compute_tools/src/compute.rs +++ b/compute_tools/src/compute.rs @@ -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);