Page MenuHomePhabricator

D13648.diff
No OneTemporary

D13648.diff

diff --git a/shared/comm-lib/src/blob/client.rs b/shared/comm-lib/src/blob/client.rs
--- a/shared/comm-lib/src/blob/client.rs
+++ b/shared/comm-lib/src/blob/client.rs
@@ -242,25 +242,29 @@
/// successfully removed.
/// - If one or more removal failed server-side, these will be returned
/// in the `failed_requests` response field. It has the same format
- /// as this function input and can be directly used to retry removal.
+ /// as this function input and can be directly used to retry removal,
+ /// by calling `remove_multiple_holders(failed_requests.into()).await`
///
/// For single holder removal, see [`BlobServiceClient::revoke_holder`].
pub async fn remove_multiple_holders(
&self,
- blob_infos: Vec<BlobInfo>,
+ request: RemoveHoldersRequest,
) -> BlobResult<RemoveHoldersResponse> {
- let num_holders = blob_infos.len();
- debug!(num_holders, "Revoke multiple holders request.");
+ match &request {
+ RemoveHoldersRequest::Items { requests, .. } => {
+ let num_holders = requests.len();
+ debug!(num_holders, "Remove multiple holders request.");
+ }
+ RemoveHoldersRequest::ByIndexedTags { tags } => {
+ debug!("Remove holders request for {} tags.", tags.len());
+ }
+ }
let url = self.get_holders_url()?;
- let payload = RemoveHoldersRequest::Items {
- requests: blob_infos,
- instant_delete: false,
- };
- trace!("Request payload: {:?}", payload);
+ trace!("Request payload: {:?}", request);
let response = self
.request(Method::DELETE, url)?
- .json(&payload)
+ .json(&request)
.send()
.await?;
diff --git a/shared/comm-lib/src/blob/types.rs b/shared/comm-lib/src/blob/types.rs
--- a/shared/comm-lib/src/blob/types.rs
+++ b/shared/comm-lib/src/blob/types.rs
@@ -76,6 +76,21 @@
#[serde(default)]
pub instant_delete: bool,
}
+
+ // impls
+ impl From<Vec<BlobInfo>> for RemoveHoldersRequest {
+ fn from(requests: Vec<BlobInfo>) -> Self {
+ Self::Items {
+ requests,
+ instant_delete: false,
+ }
+ }
+ }
+ impl From<Vec<String>> for RemoveHoldersRequest {
+ fn from(tags: Vec<String>) -> Self {
+ Self::ByIndexedTags { tags }
+ }
+ }
}
/// Blob owning information - stores both blob_hash and holder

File Metadata

Mime Type
text/plain
Expires
Thu, Oct 10, 4:30 PM (20 h, 39 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2271054
Default Alt Text
D13648.diff (2 KB)

Event Timeline