From ceafbdd0ff6abc829b52b670809c8444192710a3 Mon Sep 17 00:00:00 2001 From: jeremyhi Date: Mon, 12 Oct 2026 17:34:39 +0800 Subject: [PATCH] ci: delete the benchmark S3 prefix one object at a time boto3 now sends a CRC checksum instead of Content-MD5 with DeleteObjects, which the MinIO fixture of the smoke run rejects. DeleteObject needs neither and the prefix of one run holds at most a few thousand objects. Signed-off-by: jeremyhi --- .github/scripts/oswal-s3-bench.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/.github/scripts/oswal-s3-bench.py b/.github/scripts/oswal-s3-bench.py index 9df0d13dd27..faad8ace674 100644 --- a/.github/scripts/oswal-s3-bench.py +++ b/.github/scripts/oswal-s3-bench.py @@ -153,14 +153,12 @@ def probe(args) -> None: def cleanup(args) -> None: + # One DeleteObject per key: DeleteObjects needs a checksum header the MinIO fixture rejects. client, deleted = s3_client(args), 0 for page in client.get_paginator("list_objects_v2").paginate(Bucket=args.bucket, Prefix=f"{args.prefix}/"): - keys = [{"Key": item["Key"]} for item in page.get("Contents", [])] - if keys: - result = client.delete_objects(Bucket=args.bucket, Delete={"Objects": keys, "Quiet": True}) - if result.get("Errors"): - raise RuntimeError(f"delete failed for {len(result['Errors'])} objects") - deleted += len(keys) + for item in page.get("Contents", []): + client.delete_object(Bucket=args.bucket, Key=item["Key"]) + deleted += 1 print(f"deleted {deleted} objects under s3://{args.bucket}/{args.prefix}/")