feat: redirect `pg_isready` output to /dev/null

Fixed bug where restore commands were called inside pg_isready loop.
Made CommandBuilder::build public. Redirected stdout for pg_isready
calls to /dev/null via Stdio::null().
This commit is contained in:
Matej Janezic 2023-11-27 20:53:30 +01:00
parent 0b0ca06398
commit 6fcf48ed61
Signed by: janezicmatej
GPG Key ID: 4298E230ED37B2C0
2 changed files with 6 additions and 4 deletions

View File

@ -63,7 +63,7 @@ impl CommandBuilder {
self self
} }
fn build(self) -> Result<Command> { pub fn build(self) -> Result<Command> {
debug_println!("-----\n{self}\n-----"); debug_println!("-----\n{self}\n-----");
let (first, rest) = self.args.split_first().context("empty args")?; let (first, rest) = self.args.split_first().context("empty args")?;

View File

@ -8,7 +8,7 @@ use std::{
}; };
use super::docker_compose; use super::docker_compose;
use crate::command_builder::CommandBuilder; use crate::{command_builder::CommandBuilder, debug_println};
fn get_containers() -> Result<[String; 2]> { fn get_containers() -> Result<[String; 2]> {
// get db container // get db container
@ -55,18 +55,20 @@ pub fn import(file: &Path) -> Result<()> {
]; ];
for command in commands { for command in commands {
println!("waiting until pg_isready"); debug_println!("waiting until pg_isready");
while !CommandBuilder::docker() while !CommandBuilder::docker()
.args(&format!( .args(&format!(
"exec {db_container} pg_isready -h postgresdb -p 5432 -U db", "exec {db_container} pg_isready -h postgresdb -p 5432 -U db",
)) ))
.build()?
.stdout(Stdio::null())
.spawn()? .spawn()?
.wait()? .wait()?
.success() .success()
{ {
thread::sleep(Duration::from_secs(1)); thread::sleep(Duration::from_secs(1));
CommandBuilder::docker().args(&command).exec()?;
} }
CommandBuilder::docker().args(&command).exec()?;
} }
println!("restarting containers"); println!("restarting containers");