@@ -176,18 +176,13 @@ pub async fn metastore_connection_maker(
176176}
177177
178178impl 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