Skip to content

Commit 18cee29

Browse files
authored
Merge pull request #1680 from tursodatabase/fix-metastore-blocking-query
fix blocking sqlite call in meta store initialization
2 parents 1ad1d43 + 68b1328 commit 18cee29

1 file changed

Lines changed: 17 additions & 9 deletions

File tree

libsql-server/src/namespace/meta_store.rs

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -176,18 +176,13 @@ pub async fn metastore_connection_maker(
176176
}
177177

178178
impl MetaStoreInner {
179-
async fn new(
179+
fn new(
180180
base_path: &Path,
181181
conn: MetaStoreConnection,
182182
wal_manager: MetaStoreWalManager,
183183
config: MetaStoreConfig,
184184
) -> Result<Self> {
185-
let conn = tokio::task::spawn_blocking(move || -> Result<_> {
186-
setup_connection(&conn)?;
187-
Ok(conn)
188-
})
189-
.await
190-
.unwrap()?;
185+
setup_connection(&conn)?;
191186

192187
let mut this = MetaStoreInner {
193188
configs: Default::default(),
@@ -403,7 +398,15 @@ impl MetaStore {
403398

404399
let destroy_on_error = config.destroy_on_error;
405400

406-
let inner = match MetaStoreInner::new(base_path, conn, wal_manager, config.clone()).await {
401+
let maybe_inner = tokio::task::spawn_blocking({
402+
let base_path = base_path.to_owned();
403+
let config = config.clone();
404+
move || MetaStoreInner::new(&base_path, conn, wal_manager, config.clone())
405+
})
406+
.await
407+
.unwrap();
408+
409+
let inner = match maybe_inner {
407410
Ok(inner) => inner,
408411
Err(e) => {
409412
if destroy_on_error {
@@ -440,7 +443,12 @@ impl MetaStore {
440443

441444
tracing::info!("recreating metastore and restoring with fresh data");
442445

443-
let inner = MetaStoreInner::new(base_path, conn, wal, config).await?;
446+
let inner = tokio::task::spawn_blocking({
447+
let base_path = base_path.to_owned();
448+
move || MetaStoreInner::new(&base_path, conn, wal, config)
449+
})
450+
.await
451+
.unwrap()?;
444452

445453
tracing::info!("metastore destroy on error successful");
446454

0 commit comments

Comments
 (0)