From 06edc6ebd30c5eff97a6b9959ff573bd7700e775 Mon Sep 17 00:00:00 2001 From: Charles Eckman Date: Fri, 15 Mar 2024 12:55:21 -0400 Subject: [PATCH] Respect assume_rw_mode --- src/server.rs | 41 +++++++++++++++++++++++++---------------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/src/server.rs b/src/server.rs index 70dc4f859..f7b3ff162 100644 --- a/src/server.rs +++ b/src/server.rs @@ -443,23 +443,32 @@ pub fn start_server(config: &Config, port: u16) -> Result<()> { } }; - let cache_mode = runtime.block_on(async { - match raw_storage.check().await { - Ok(mode) => Ok(mode), - Err(err) => { - error!("storage check failed for: {err:?}"); - - notify_server_startup( - ¬ify, - ServerStartup::Err { - reason: err.to_string(), - }, - )?; - - Err(err) + let cache_mode = if let Some(rw_mode) = config.assume_rw_mode { + // We've been provided with a RW mode to assume this cache has. + // Use it. + Ok(rw_mode.into()) + } else { + // Before starting to use this cache (raw_storage), we need to check whether it's ReadOnly or ReadWrite- + // or if it's altogether unreachable. + runtime.block_on(async { + match raw_storage.check().await { + Ok(mode) => Ok(mode), + Err(err) => { + error!("storage check failed for: {err:?}"); + + notify_server_startup( + ¬ify, + ServerStartup::Err { + reason: err.to_string(), + }, + )?; + + Err(err) + } } - } - })?; + }) + }?; + info!("server has setup with {cache_mode:?}"); let storage = match cache_mode {