From 5b29cefd40e35020ee183870efd295206367da93 Mon Sep 17 00:00:00 2001 From: Harshavardhana Date: Sat, 14 May 2016 15:47:19 -0700 Subject: [PATCH] api: DeleteObject should always return 204. (#1645) Fixes #1643 --- object-handlers.go | 9 ++++----- server_test.go | 9 +++++++++ 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/object-handlers.go b/object-handlers.go index 13fcba859..4cadb90c0 100644 --- a/object-handlers.go +++ b/object-handlers.go @@ -936,10 +936,9 @@ func (api objectAPIHandlers) DeleteObjectHandler(w http.ResponseWriter, r *http. return } } - if err := api.ObjectAPI.DeleteObject(bucket, object); err != nil { - errorIf(err, "DeleteObject failed.", nil) - writeErrorResponse(w, r, toAPIErrorCode(err), r.URL.Path) - return - } + /// http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectDELETE.html + /// Ignore delete object errors, since we are suppposed to reply + /// only 204. + api.ObjectAPI.DeleteObject(bucket, object) writeSuccessNoContent(w) } diff --git a/server_test.go b/server_test.go index c0517ac04..4f50649dc 100644 --- a/server_test.go +++ b/server_test.go @@ -351,6 +351,7 @@ func (s *MyAPISuite) TestDeleteBucketNotEmpty(c *C) { c.Assert(response.StatusCode, Equals, http.StatusConflict) } +// Tests delete object responses and success. func (s *MyAPISuite) TestDeleteObject(c *C) { request, err := s.newRequest("PUT", testAPIFSCacheServer.URL+"/deletebucketobject", 0, nil) c.Assert(err, IsNil) @@ -374,6 +375,14 @@ func (s *MyAPISuite) TestDeleteObject(c *C) { response, err = client.Do(request) c.Assert(err, IsNil) c.Assert(response.StatusCode, Equals, http.StatusNoContent) + + // Delete non existant object should return http.StatusNoContent. + request, err = s.newRequest("DELETE", testAPIFSCacheServer.URL+"/deletebucketobject/myobject1", 0, nil) + c.Assert(err, IsNil) + client = http.Client{} + response, err = client.Do(request) + c.Assert(err, IsNil) + c.Assert(response.StatusCode, Equals, http.StatusNoContent) } func (s *MyAPISuite) TestNonExistantBucket(c *C) {