diff options
| author | chrislu <chris.lu@gmail.com> | 2025-07-18 19:40:12 -0700 |
|---|---|---|
| committer | chrislu <chris.lu@gmail.com> | 2025-07-18 19:40:12 -0700 |
| commit | 8121fdeec3139ec67004238126b389d40b929aa3 (patch) | |
| tree | 4d32fa1b72d74987aad6ea2d078e251216bd8430 /weed/s3api/s3api_object_handlers_delete.go | |
| parent | f63f40a3d4bfdd5e4eea1350bd0e0d530c207ffb (diff) | |
| download | seaweedfs-8121fdeec3139ec67004238126b389d40b929aa3.tar.xz seaweedfs-8121fdeec3139ec67004238126b389d40b929aa3.zip | |
fix many issues
Diffstat (limited to 'weed/s3api/s3api_object_handlers_delete.go')
| -rw-r--r-- | weed/s3api/s3api_object_handlers_delete.go | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/weed/s3api/s3api_object_handlers_delete.go b/weed/s3api/s3api_object_handlers_delete.go index 05c93a913..f06749f1d 100644 --- a/weed/s3api/s3api_object_handlers_delete.go +++ b/weed/s3api/s3api_object_handlers_delete.go @@ -49,19 +49,17 @@ func (s3a *S3ApiServer) DeleteObjectHandler(w http.ResponseWriter, r *http.Reque auditLog = s3err.GetAccessLog(r, http.StatusNoContent, s3err.ErrNone) } - // Check object lock permissions before deletion (only for versioned buckets) - if versioningEnabled { - bypassGovernance := r.Header.Get("x-amz-bypass-governance-retention") == "true" - if err := s3a.checkObjectLockPermissions(r, bucket, object, versionId, bypassGovernance); err != nil { - glog.V(2).Infof("DeleteObjectHandler: object lock check failed for %s/%s: %v", bucket, object, err) - s3err.WriteErrorResponse(w, r, s3err.ErrAccessDenied) - return - } - } - if versioningEnabled { // Handle versioned delete if versionId != "" { + // Check object lock permissions before deleting specific version + bypassGovernance := r.Header.Get("x-amz-bypass-governance-retention") == "true" + if err := s3a.checkObjectLockPermissions(r, bucket, object, versionId, bypassGovernance); err != nil { + glog.V(2).Infof("DeleteObjectHandler: object lock check failed for %s/%s: %v", bucket, object, err) + s3err.WriteErrorResponse(w, r, s3err.ErrAccessDenied) + return + } + // Delete specific version err := s3a.deleteSpecificObjectVersion(bucket, object, versionId) if err != nil { @@ -73,7 +71,7 @@ func (s3a *S3ApiServer) DeleteObjectHandler(w http.ResponseWriter, r *http.Reque // Set version ID in response header w.Header().Set("x-amz-version-id", versionId) } else { - // Create delete marker (logical delete) + // Create delete marker (logical delete) - this is NOT blocked by object lock retention deleteMarkerVersionId, err := s3a.createDeleteMarker(bucket, object) if err != nil { glog.Errorf("Failed to create delete marker: %v", err) |
