feat: add timeout for new VM request
This commit is contained in:
parent
a1664d61e4
commit
8fa8a64862
@ -1,4 +1,4 @@
|
|||||||
use std::str::FromStr;
|
use std::{str::FromStr, time::Duration};
|
||||||
|
|
||||||
pub use crate::constants::{
|
pub use crate::constants::{
|
||||||
ACCOUNT, ACTIVE_APP, ACTIVE_VM, DB_SCHEMA_FILE, DELETED_VM, ID_ALPHABET, NEW_VM_REQ,
|
ACCOUNT, ACTIVE_APP, ACTIVE_VM, DB_SCHEMA_FILE, DELETED_VM, ID_ALPHABET, NEW_VM_REQ,
|
||||||
@ -24,6 +24,8 @@ pub enum Error {
|
|||||||
DaemonConnection(#[from] tokio::sync::mpsc::error::SendError<DaemonNotification>),
|
DaemonConnection(#[from] tokio::sync::mpsc::error::SendError<DaemonNotification>),
|
||||||
#[error(transparent)]
|
#[error(transparent)]
|
||||||
StdIo(#[from] std::io::Error),
|
StdIo(#[from] std::io::Error),
|
||||||
|
#[error(transparent)]
|
||||||
|
TimeOut(#[from] tokio::time::error::Elapsed),
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn db_connection(
|
pub async fn db_connection(
|
||||||
@ -328,6 +330,7 @@ impl NewVmResp {
|
|||||||
let mut args_stream =
|
let mut args_stream =
|
||||||
resp.stream::<Notification<detee_shared::snp::pb::vm_proto::MeasurementArgs>>(1)?;
|
resp.stream::<Notification<detee_shared::snp::pb::vm_proto::MeasurementArgs>>(1)?;
|
||||||
|
|
||||||
|
tokio::time::timeout(Duration::from_secs(10), async {
|
||||||
loop {
|
loop {
|
||||||
tokio::select! {
|
tokio::select! {
|
||||||
new_vm_req_notif = new_vm_stream.next() => {
|
new_vm_req_notif = new_vm_stream.next() => {
|
||||||
@ -336,7 +339,7 @@ impl NewVmResp {
|
|||||||
match new_vm_req_notif {
|
match new_vm_req_notif {
|
||||||
Ok(new_vm_req_notif) => {
|
Ok(new_vm_req_notif) => {
|
||||||
if new_vm_req_notif.action == surrealdb::Action::Update && !new_vm_req_notif.data.error.is_empty() {
|
if new_vm_req_notif.action == surrealdb::Action::Update && !new_vm_req_notif.data.error.is_empty() {
|
||||||
return Ok(Self::Error(vm_id.to_string(), new_vm_req_notif.data.error));
|
return Ok::<NewVmResp, Error>(Self::Error(vm_id.to_string(), new_vm_req_notif.data.error));
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
Err(e) => return Err(e.into()),
|
Err(e) => return Err(e.into()),
|
||||||
@ -357,6 +360,7 @@ impl NewVmResp {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}).await?
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -625,6 +625,7 @@ impl BrainVmCli for BrainVmCliForReal {
|
|||||||
new_vm_req.submit(&self.db).await?;
|
new_vm_req.submit(&self.db).await?;
|
||||||
|
|
||||||
match oneshot_rx.await {
|
match oneshot_rx.await {
|
||||||
|
Ok(Err(db::Error::TimeOut(_))) => Err(Status::deadline_exceeded("Request failed due to timeout. Please try again later or contact the DeTEE devs team.")),
|
||||||
Ok(new_vm_resp) => Ok(Response::new(new_vm_resp?.into())),
|
Ok(new_vm_resp) => Ok(Response::new(new_vm_resp?.into())),
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
log::error!("Something weird happened. Reached error {e:?}");
|
log::error!("Something weird happened. Reached error {e:?}");
|
||||||
|
Loading…
Reference in New Issue
Block a user