mirror of
https://github.com/0glabs/0g-storage-node.git
synced 2024-11-20 15:05:19 +00:00
fix: wait for async storage to complete before receiving the result.
This commit is contained in:
parent
bb6e1457b7
commit
07704fedc9
@ -1,7 +1,7 @@
|
||||
#[macro_use]
|
||||
extern crate tracing;
|
||||
|
||||
use anyhow::bail;
|
||||
use anyhow::{anyhow, bail};
|
||||
use shared_types::{
|
||||
Chunk, ChunkArray, ChunkArrayWithProof, DataRoot, FlowProof, FlowRangeProof, Transaction,
|
||||
};
|
||||
@ -136,17 +136,21 @@ impl Store {
|
||||
let store = self.store.clone();
|
||||
let (tx, rx) = oneshot::channel();
|
||||
|
||||
self.executor.spawn_blocking(
|
||||
move || {
|
||||
// FIXME(zz): Not all functions need `write`. Refactor store usage.
|
||||
let res = f(&*store);
|
||||
self.executor
|
||||
.spawn_blocking_handle(
|
||||
move || {
|
||||
// FIXME(zz): Not all functions need `write`. Refactor store usage.
|
||||
let res = f(&*store);
|
||||
|
||||
if tx.send(res).is_err() {
|
||||
error!("Unable to complete async storage operation: the receiver dropped");
|
||||
}
|
||||
},
|
||||
WORKER_TASK_NAME,
|
||||
);
|
||||
if tx.send(res).is_err() {
|
||||
error!("Unable to complete async storage operation: the receiver dropped");
|
||||
}
|
||||
},
|
||||
WORKER_TASK_NAME,
|
||||
)
|
||||
.ok_or(anyhow!("Unable to spawn async storage work"))?
|
||||
.await
|
||||
.map_err(|e| anyhow!("join error: e={:?}", e))?;
|
||||
|
||||
rx.await
|
||||
.unwrap_or_else(|_| bail!(error::Error::Custom("Receiver error".to_string())))
|
||||
|
Loading…
Reference in New Issue
Block a user