diff --git a/services/identity/src/grpc_services/authenticated.rs b/services/identity/src/grpc_services/authenticated.rs --- a/services/identity/src/grpc_services/authenticated.rs +++ b/services/identity/src/grpc_services/authenticated.rs @@ -1,6 +1,6 @@ use std::collections::{HashMap, HashSet}; -use crate::comm_service::{backup, tunnelbroker}; +use crate::comm_service::{backup, blob, tunnelbroker}; use crate::config::CONFIG; use crate::database::{DeviceListUpdate, PlatformDetails}; use crate::device_list::validation::DeviceListValidator; @@ -99,14 +99,22 @@ Ok((user_id, device_id)) } -fn spawn_delete_tunnelbroker_data_task(device_ids: Vec) { +fn spawn_delete_devices_services_data_task( + blob_client: &BlobServiceClient, + device_ids: Vec, +) { + let blob_client = blob_client.clone(); tokio::spawn(async move { debug!( "Attempting to delete Tunnelbroker data for devices: {:?}", device_ids.as_slice() ); - let result = tunnelbroker::delete_devices_data(&device_ids).await; - consume_error(result); + let (tunnelbroker_result, blob_result) = tokio::join!( + tunnelbroker::delete_devices_data(&device_ids), + blob::remove_holders_for_devices(&blob_client, &device_ids) + ); + consume_error(tunnelbroker_result); + consume_error(blob_result); }); } @@ -408,7 +416,10 @@ consume_error(result); }); - spawn_delete_tunnelbroker_data_task([device_id].into()); + spawn_delete_devices_services_data_task( + &self.blob_client, + [device_id].into(), + ); let response = Empty {}; Ok(Response::new(response)) @@ -476,7 +487,7 @@ .delete_devices_data_for_user(&user_id) .await?; - spawn_delete_tunnelbroker_data_task(device_ids); + spawn_delete_devices_services_data_task(&self.blob_client, device_ids); let response = Empty {}; Ok(Response::new(response)) @@ -511,7 +522,10 @@ .delete_otks_table_rows_for_user_device(&user_id, &device_id) .await?; - spawn_delete_tunnelbroker_data_task([device_id].into()); + spawn_delete_devices_services_data_task( + &self.blob_client, + [device_id].into(), + ); let response = Empty {}; Ok(Response::new(response)) @@ -537,7 +551,7 @@ )); } - self.delete_tunnelbroker_and_backup_data(&user_id).await?; + self.delete_services_data_for_user(&user_id).await?; self.db_client.delete_user(user_id.clone()).await?; @@ -616,7 +630,7 @@ .finish(&message.opaque_login_upload) .map_err(protocol_error_to_grpc_status)?; - self.delete_tunnelbroker_and_backup_data(&user_id).await?; + self.delete_services_data_for_user(&user_id).await?; self.db_client.delete_user(user_id.clone()).await?; @@ -926,7 +940,7 @@ Ok(()) } - async fn delete_tunnelbroker_and_backup_data( + async fn delete_services_data_for_user( &self, user_id: &str, ) -> Result<(), Status> { @@ -943,10 +957,16 @@ delete_backup_result?; debug!( - "Attempting to delete Tunnelbroker data for devices: {:?}", + "Attempting to delete Blob holders and Tunnelbroker data for devices: {:?}", device_ids ); - tunnelbroker::delete_devices_data(&device_ids).await?; + + let (tunnelbroker_result, blob_result) = tokio::join!( + tunnelbroker::delete_devices_data(&device_ids), + blob::remove_holders_for_devices(&self.blob_client, &device_ids) + ); + tunnelbroker_result?; + blob_result?; Ok(()) }