diff options
| author | Chris Lu <chrislusf@users.noreply.github.com> | 2025-07-16 23:00:25 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-07-16 23:00:25 -0700 |
| commit | a524b4f485ce5aa2f234c742bd7d1e75386f569b (patch) | |
| tree | 794b343485e4adace63dc091703d2368f9075616 /weed/s3api/s3api_object_retention.go | |
| parent | 89706d36dccc5d851ef6b818f0dd32249e6560a3 (diff) | |
| download | seaweedfs-a524b4f485ce5aa2f234c742bd7d1e75386f569b.tar.xz seaweedfs-a524b4f485ce5aa2f234c742bd7d1e75386f569b.zip | |
Object locking need to persist the tags and set the headers (#6994)
* fix object locking read and write
No logic to include object lock metadata in HEAD/GET response headers
No logic to extract object lock metadata from PUT request headers
* add tests for object locking
* Update weed/s3api/s3api_object_handlers_put.go
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update weed/s3api/s3api_object_handlers.go
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* refactor
* add unit tests
* sync versions
* Update s3_worm_integration_test.go
* fix legal hold values
* lint
* fix tests
* racing condition when enable versioning
* fix tests
* validate put object lock header
* allow check lock permissions for PUT
* default to OFF legal hold
* only set object lock headers for objects that are actually from object lock-enabled buckets
fix --- FAIL: TestAddObjectLockHeadersToResponse/Handle_entry_with_no_object_lock_metadata (0.00s)
* address comments
* fix tests
* purge
* fix
* refactoring
* address comment
* address comment
* Update weed/s3api/s3api_object_handlers_put.go
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update weed/s3api/s3api_object_handlers_put.go
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update weed/s3api/s3api_object_handlers.go
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* avoid nil
* ensure locked objects cannot be overwritten
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Diffstat (limited to 'weed/s3api/s3api_object_retention.go')
| -rw-r--r-- | weed/s3api/s3api_object_retention.go | 16 |
1 files changed, 0 insertions, 16 deletions
diff --git a/weed/s3api/s3api_object_retention.go b/weed/s3api/s3api_object_retention.go index 6747ac84c..8ef80a885 100644 --- a/weed/s3api/s3api_object_retention.go +++ b/weed/s3api/s3api_object_retention.go @@ -611,22 +611,6 @@ func (s3a *S3ApiServer) isObjectLockAvailable(bucket string) error { return nil } -// checkObjectLockPermissionsForPut checks object lock permissions for PUT operations -// This is a shared helper to avoid code duplication in PUT handlers -func (s3a *S3ApiServer) checkObjectLockPermissionsForPut(request *http.Request, bucket, object string, bypassGovernance bool, versioningEnabled bool) error { - // Object Lock only applies to versioned buckets (AWS S3 requirement) - if !versioningEnabled { - return nil - } - - // For PUT operations, we check permissions on the current object (empty versionId) - if err := s3a.checkObjectLockPermissions(request, bucket, object, "", bypassGovernance); err != nil { - glog.V(2).Infof("checkObjectLockPermissionsForPut: object lock check failed for %s/%s: %v", bucket, object, err) - return err - } - return nil -} - // handleObjectLockAvailabilityCheck is a helper function to check object lock availability // and write the appropriate error response if not available. This reduces code duplication // across all retention handlers. |
