mirror of
https://github.com/minio/minio.git
synced 2024-12-23 21:55:53 -05:00
S3-layer: Multiple-delete should return success for non-existent objects. (#2633)
Fixes #2630
This commit is contained in:
parent
afe874f15a
commit
a4afb312d4
@ -267,6 +267,12 @@ func (api objectAPIHandlers) DeleteMultipleObjectsHandler(w http.ResponseWriter,
|
||||
deletedObjects = append(deletedObjects, object)
|
||||
continue
|
||||
}
|
||||
if _, ok := err.(ObjectNotFound); ok {
|
||||
// If the object is not found it should be
|
||||
// accounted as deleted as per S3 spec.
|
||||
deletedObjects = append(deletedObjects, object)
|
||||
continue
|
||||
}
|
||||
errorIf(err, "Unable to delete object. %s", object.ObjectName)
|
||||
// Error during delete should be collected separately.
|
||||
deleteErrors = append(deleteErrors, DeleteError{
|
||||
|
@ -347,6 +347,11 @@ func (s *TestSuiteCommon) TestDeleteMultipleObjects(c *C) {
|
||||
ObjectName: objName,
|
||||
})
|
||||
}
|
||||
// Append a non-existent object for which the response should be marked
|
||||
// as deleted.
|
||||
delObjReq.Objects = append(delObjReq.Objects, ObjectIdentifier{
|
||||
ObjectName: fmt.Sprintf("%d/%s", 10, objectName),
|
||||
})
|
||||
|
||||
// Marshal delete request.
|
||||
deleteReqBytes, err := xml.Marshal(delObjReq)
|
||||
@ -367,7 +372,8 @@ func (s *TestSuiteCommon) TestDeleteMultipleObjects(c *C) {
|
||||
c.Assert(err, IsNil)
|
||||
err = xml.Unmarshal(delRespBytes, &deleteResp)
|
||||
c.Assert(err, IsNil)
|
||||
for i := 0; i < 10; i++ {
|
||||
for i := 0; i <= 10; i++ {
|
||||
// All the objects should be under deleted list (including non-existent object)
|
||||
c.Assert(deleteResp.DeletedObjects[i], DeepEquals, delObjReq.Objects[i])
|
||||
}
|
||||
c.Assert(len(deleteResp.Errors), Equals, 0)
|
||||
|
Loading…
Reference in New Issue
Block a user