From 07c2b29895321faeb86b0aa8e73c40381ce68adf Mon Sep 17 00:00:00 2001 From: John Spray Date: Mon, 30 Oct 2023 13:24:52 +0000 Subject: [PATCH] pageserver: fix error logging on stray timeline files (#5712) ## Problem If there were stray files in the timelines/ dir after tenant deletion, pageserver could panic on out of range. ## Summary of changes Use iterator `take()`, which doesn't care if the number of elements available is less than requested. --- pageserver/src/tenant/delete.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pageserver/src/tenant/delete.rs b/pageserver/src/tenant/delete.rs index 3e2d6ca7bb..87b48e4bee 100644 --- a/pageserver/src/tenant/delete.rs +++ b/pageserver/src/tenant/delete.rs @@ -148,7 +148,8 @@ async fn ensure_timelines_dir_empty(timelines_path: &Utf8Path) -> Result<(), Del // Assert timelines dir is empty. if !fs_ext::is_directory_empty(timelines_path).await? { // Display first 10 items in directory - let list = &fs_ext::list_dir(timelines_path).await.context("list_dir")?[..10]; + let list = fs_ext::list_dir(timelines_path).await.context("list_dir")?; + let list = &list.into_iter().take(10).collect::>(); return Err(DeleteTenantError::Other(anyhow::anyhow!( "Timelines directory is not empty after all timelines deletion: {list:?}" )));