Fix new_app response error

fixed double deleting new_app_req from both daemon and cli side
enhanced new_app logging
This commit is contained in:
Noor 2025-06-19 14:51:51 +03:00
parent 8d1721ca11
commit d4e499126d
Signed by: noormohammedb
GPG Key ID: D83EFB8B3B967146
3 changed files with 46 additions and 4 deletions

@ -38,7 +38,7 @@ impl AppNode {
pub async fn register(self, db: &Surreal<Client>) -> Result<AppNode, Error> { pub async fn register(self, db: &Surreal<Client>) -> Result<AppNode, Error> {
db::Account::get_or_create(db, &self.operator.key().to_string()).await?; db::Account::get_or_create(db, &self.operator.key().to_string()).await?;
let app_node_id = self.id.clone(); let app_node_id = self.id.clone();
let app_node: Option<AppNode> = db.upsert(app_node_id.clone()).content(self).await.unwrap(); let app_node: Option<AppNode> = db.upsert(app_node_id.clone()).content(self).await?;
app_node.ok_or(Error::FailedToCreateDBEntry(format!("{APP_NODE}:{app_node_id}"))) app_node.ok_or(Error::FailedToCreateDBEntry(format!("{APP_NODE}:{app_node_id}")))
} }
} }
@ -86,6 +86,12 @@ impl NewAppReq {
let new_app_req: Option<Self> = db.select((NEW_APP_REQ, id)).await?; let new_app_req: Option<Self> = db.select((NEW_APP_REQ, id)).await?;
Ok(new_app_req) Ok(new_app_req)
} }
pub async fn delete(db: &Surreal<Client>, id: &str) -> Result<(), Error> {
let _: Option<Self> = db.delete((NEW_APP_REQ, id)).await?;
Ok(())
}
pub async fn submit_error(db: &Surreal<Client>, id: &str, error: String) -> Result<(), Error> { pub async fn submit_error(db: &Surreal<Client>, id: &str, error: String) -> Result<(), Error> {
let tx_query = String::from( let tx_query = String::from(
" "
@ -361,7 +367,7 @@ impl ActiveApp {
let locked_nano = active_app.locked_nano; let locked_nano = active_app.locked_nano;
let _: Vec<ActiveApp> = db.insert(()).relation(active_app).await?; let _: Vec<ActiveApp> = db.insert(()).relation(active_app).await?;
db.delete::<Option<NewAppReq>>((NEW_APP_REQ, &new_app_res.uuid)).await?; NewAppReq::delete(&db, &new_app_res.uuid).await?;
db.query(format!("UPDATE {ACCOUNT}:{admin_account} SET tmp_locked -= {locked_nano};")) db.query(format!("UPDATE {ACCOUNT}:{admin_account} SET tmp_locked -= {locked_nano};"))
.await?; .await?;
@ -468,7 +474,6 @@ impl WrappedAppResp {
match active_app_notif { match active_app_notif {
Ok(active_app_notif) =>{ Ok(active_app_notif) =>{
if active_app_notif.action == surrealdb::Action::Create { if active_app_notif.action == surrealdb::Action::Create {
let _: Option<NewAppReq> = db.delete((NEW_APP_REQ, app_id)).await?;
return Ok(Self::NewAppRes(active_app_notif.data.into())); return Ok(Self::NewAppRes(active_app_notif.data.into()));
} }
} }

@ -228,7 +228,9 @@ impl BrainAppCli for AppCliServer {
)) ))
} }
Err(e) => { Err(e) => {
log::error!("Something weird happened during CLI NewAppReq. Reached error {e:?}"); log::error!(
"Something wrong happened on channel during CLI NewAppReq. Reached error {e:?}"
);
Err(Status::unknown( Err(Status::unknown(
"Unknown error. Please try again or contact the DeTEE devs team.", "Unknown error. Please try again or contact the DeTEE devs team.",
)) ))

@ -0,0 +1,35 @@
use common::prepare_test_env::prepare_test_db;
use detee_shared::app_proto::{AppResource, NewAppReq};
use surreal_brain::db::prelude as db;
mod common;
#[tokio::test]
async fn test_new_app_db_tx() {
let db = prepare_test_db().await.unwrap();
let req = NewAppReq {
package_url: "https://registry.detee.ltd/sgx/packages/actix-app-info_package_2025-04-16_21-59-38.tar.gz".to_string(),
node_pubkey: "AH3SpV6ZjXMGSSe6xGH2ekUZxyUhnesAFz4LjX7PnvVn".to_string(),
resource: Some(
AppResource {
memory_mb: 1500,
disk_size_gb: 2,
vcpus: 1,
ports: vec![ 8080 ],
},
),
uuid: "".to_string(),
admin_pubkey: "H21Shi4iE7vgfjWEQNvzmpmBMJSaiZ17PYUcdNoAoKNc".to_string(),
price_per_unit: 200000,
locked_nano: 152400000,
hratls_pubkey: "7E0F887AA6BB9104EEC1066F454D4C2D9063D676715F55F919D3FBCEDC63240B".to_string(),
public_package_mr_enclave: Some(
vec![ 128, 0, 97, 103, 165, 103, 68, 203, 240, 145, 153, 254, 34, 129, 75, 140, 8, 186, 63, 226, 144, 129, 201, 187, 175, 66, 80, 1, 151, 114, 183, 159, ],
),
app_name: "lively-ferret".to_string(),
};
let db_req: db::NewAppReq = req.into();
db_req.submit(&db).await.unwrap();
}