From 9e92121cc3661a34f0d4b667e2d52782a95601d2 Mon Sep 17 00:00:00 2001 From: John Spray Date: Thu, 10 Aug 2023 14:49:58 +0100 Subject: [PATCH] pageserver: flush deletion queue on clean shutdown --- pageserver/src/bin/pageserver.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/pageserver/src/bin/pageserver.rs b/pageserver/src/bin/pageserver.rs index 399d6c9ffc..ac50ec7ac3 100644 --- a/pageserver/src/bin/pageserver.rs +++ b/pageserver/src/bin/pageserver.rs @@ -2,6 +2,7 @@ use std::env::{var, VarError}; use std::sync::Arc; +use std::time::Duration; use std::{env, ops::ControlFlow, path::Path, str::FromStr}; use anyhow::{anyhow, Context}; @@ -614,6 +615,20 @@ fn start_pageserver( // The plan is to change that over time. shutdown_pageserver.take(); BACKGROUND_RUNTIME.block_on(pageserver::shutdown_pageserver(0)); + + // Best effort to persist any outstanding deletions, to avoid leaking objects + let dq = deletion_queue.clone(); + BACKGROUND_RUNTIME.block_on(async move { + match tokio::time::timeout(Duration::from_secs(5), dq.new_client().flush()).await { + Ok(()) => { + info!("Deletion queue flushed successfully on shutdown"); + } + Err(e) => { + warn!("Timed out flushing deletion queue on shutdown ({e})") + } + } + }); + unreachable!() } })