diff --git a/crates/fluvio-stream-dispatcher/src/metadata/local.rs b/crates/fluvio-stream-dispatcher/src/metadata/local.rs index 35c2891877..685e4bbeb8 100644 --- a/crates/fluvio-stream-dispatcher/src/metadata/local.rs +++ b/crates/fluvio-stream-dispatcher/src/metadata/local.rs @@ -102,7 +102,7 @@ cfg_if::cfg_if! { use anyhow::{Result, anyhow, Context}; use async_channel::{Sender, Receiver, bounded}; - use async_lock::{RwLock, RwLockUpgradableReadGuard}; + use async_lock::RwLock; use futures_util::{stream::BoxStream, StreamExt}; use serde::{de::DeserializeOwned}; use tracing::{warn, debug, trace}; @@ -311,13 +311,15 @@ cfg_if::cfg_if! { async fn get_store(&self) -> Result> { let key = S::LABEL; - let read = self.stores.upgradable_read().await; + let read = self.stores.read().await; Ok(match read.get(key) { Some(store) => store.clone(), None => { - let mut write = RwLockUpgradableReadGuard::upgrade(read).await; + drop(read); + let mut write = self.stores.write().await; let store = Arc::new(SpecStore::load::(self.path.join(key)).await?); write.insert(key, store.clone()); + drop(write); store } })