You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
removeObjects() stops after a batch with an error, so later batches are never deleted #1716
removeObjects() sends the requested objects to the server in batches of 1000. When a batch returns any error other than NoSuchVersion, the iterator sets completed = error != null (MinioAsyncClient.java line 1120 on master), so it stops after reporting that batch's errors and never sends the remaining batches. The caller sees only the failing batch's errors, and nothing indicates that the later objects were not deleted.
Steps to reproduce
Create a bucket with object lock enabled, and put 1500 objects (obj-0000 to obj-1499).
Enable legal hold on obj-0010.
Call removeObjects() with all 1500 object names and version IDs, and iterate every result.
List the object versions left in the bucket.
Actual result
One error is reported (obj-0010, InvalidRequest), and 501 object versions remain: obj-0010 plus all 500 objects in the second batch.
@allanrogerr This is design choice i.e. As it is removal/unrecoverable, stop immediately on first error than removing for all batches. Could you share why do we need this behavior?
Activity
balamurugana commentedon Sep 11, 2026
@allanrogerr This is design choice i.e. As it is removal/unrecoverable, stop immediately on first error than removing for all batches. Could you share why do we need this behavior?
allanrogerr commentedon Sep 15, 2026
If it is so by design then a change is not needed. Closing