From 12891dd17162ab87605b3a99ba2175a86adfc64f Mon Sep 17 00:00:00 2001 From: Dan Cline <6798349+Rjected@users.noreply.github.com> Date: Thu, 12 Feb 2026 22:02:26 +0000 Subject: [PATCH] chore: allow invalid storage metadata (#22150) --- crates/storage/storage-api/src/metadata.rs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/crates/storage/storage-api/src/metadata.rs b/crates/storage/storage-api/src/metadata.rs index b9e08da1d0..c47c900f66 100644 --- a/crates/storage/storage-api/src/metadata.rs +++ b/crates/storage/storage-api/src/metadata.rs @@ -16,11 +16,15 @@ pub trait MetadataProvider: Send { /// Get a metadata value by key fn get_metadata(&self, key: &str) -> ProviderResult>>; - /// Get storage settings for this node + /// Get storage settings for this node. + /// + /// If the stored metadata can't be deserialized (e.g. the format changed), + /// this returns `None` instead of an error so commands like `db clear` can + /// still operate without requiring a compatible metadata schema. fn storage_settings(&self) -> ProviderResult> { - self.get_metadata(keys::STORAGE_SETTINGS)? - .map(|bytes| serde_json::from_slice(&bytes).map_err(ProviderError::other)) - .transpose() + Ok(self + .get_metadata(keys::STORAGE_SETTINGS)? + .and_then(|bytes| serde_json::from_slice(&bytes).ok())) } }