Return success on 'zenith stop' if the page server is already stopped.

This commit is contained in:
Heikki Linnakangas
2021-10-26 17:54:20 +03:00
parent de87aad990
commit 710fe02d0b

View File

@@ -198,9 +198,21 @@ impl PageServerNode {
bail!("pageserver failed to start in {} seconds", RETRIES);
}
///
/// Stop the server.
///
/// If 'immediate' is true, we use SIGQUIT, killing the process immediately.
/// Otherwise we use SIGTERM, triggering a clean shutdown
///
/// If the page server is not running, returns success
///
pub fn stop(&self, immediate: bool) -> anyhow::Result<()> {
let pid = read_pidfile(&self.pid_file())?;
let pid = Pid::from_raw(pid);
let pid_file = self.pid_file();
if !pid_file.exists() {
println!("Pageserver is already stopped");
return Ok(())
}
let pid = Pid::from_raw(read_pidfile(&pid_file)?);
if immediate {
println!("Stop pageserver immediately");
if kill(pid, Signal::SIGQUIT).is_err() {