fix(site-replication): delete replicated buckets

This commit is contained in:
Jason Kossis
2026-07-21 13:22:41 -04:00
committed by GitHub
parent f1d2af698c
commit 9469dfa5b8
11 changed files with 270 additions and 81 deletions
+19
View File
@@ -2671,6 +2671,7 @@ mod tests {
let request = Request::new(DeleteBucketRequest {
bucket: "test-bucket".to_string(),
options: String::new(),
});
let response = service.delete_bucket(request).await;
@@ -2681,6 +2682,24 @@ mod tests {
assert!(delete_response.success || delete_response.error.is_some());
}
#[tokio::test]
async fn test_delete_bucket_rejects_invalid_options() {
let service = create_test_node_service();
let request = Request::new(DeleteBucketRequest {
bucket: "test-bucket".to_string(),
options: "invalid json".to_string(),
});
let response = service
.delete_bucket(request)
.await
.expect("RPC response should be returned")
.into_inner();
assert!(!response.success);
assert!(response.error.is_some());
}
#[tokio::test]
async fn test_read_all_invalid_disk() {
let service = create_test_node_service();
+14 -11
View File
@@ -103,17 +103,20 @@ impl NodeService {
debug!("delete bucket");
let request = request.into_inner();
match self
.local_peer
.delete_bucket(
&request.bucket,
&DeleteBucketOptions {
force: false,
..Default::default()
},
)
.await
{
let options = if request.options.is_empty() {
DeleteBucketOptions::default()
} else {
match serde_json::from_str::<DeleteBucketOptions>(&request.options) {
Ok(options) => options,
Err(err) => {
return Ok(Response::new(DeleteBucketResponse {
success: false,
error: Some(DiskError::other(format!("decode DeleteBucketOptions failed: {err}")).into()),
}));
}
}
};
match self.local_peer.delete_bucket(&request.bucket, &options).await {
Ok(_) => Ok(Response::new(DeleteBucketResponse {
success: true,
error: None,