diff options
| author | Chris Lu <chrislusf@users.noreply.github.com> | 2025-11-10 20:30:21 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-11-10 20:30:21 -0800 |
| commit | bf8e4f40e60e74ce03c2f497c6245e5d1460f1d3 (patch) | |
| tree | eb42645861f4457411259e86f915cfa514cb192f /weed/s3api/s3api_object_retention.go | |
| parent | 6201cd099e55e4317f4a34291800a31c145bb803 (diff) | |
| download | seaweedfs-bf8e4f40e60e74ce03c2f497c6245e5d1460f1d3.tar.xz seaweedfs-bf8e4f40e60e74ce03c2f497c6245e5d1460f1d3.zip | |
S3: Perf related (#7463)
* reduce checks
* s3 object lookup optimization
* Only check versioning configuration if client requests
* Consolidate SSE Entry Lookups
* optimize
* revert optimization for versioned objects
* Removed: getObjectEntryForSSE() function
* refactor
* Refactoring: Added fetchObjectEntryRequired
* avoid refetching
* return early if not found
* reuse objects from conditional check
* clear cache when creating bucket
Diffstat (limited to 'weed/s3api/s3api_object_retention.go')
| -rw-r--r-- | weed/s3api/s3api_object_retention.go | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/weed/s3api/s3api_object_retention.go b/weed/s3api/s3api_object_retention.go index 93e04e7da..5bb2faf54 100644 --- a/weed/s3api/s3api_object_retention.go +++ b/weed/s3api/s3api_object_retention.go @@ -200,8 +200,7 @@ func (s3a *S3ApiServer) getObjectEntry(bucket, object, versionId string) (*filer if versioningEnabled { entry, err = s3a.getLatestObjectVersion(bucket, object) } else { - bucketDir := s3a.option.BucketsPath + "/" + bucket - entry, err = s3a.getEntry(bucketDir, object) + entry, err = s3a.fetchObjectEntryRequired(bucket, object) } } @@ -284,8 +283,7 @@ func (s3a *S3ApiServer) setObjectRetention(bucket, object, versionId string, ret } } } else { - bucketDir := s3a.option.BucketsPath + "/" + bucket - entry, err = s3a.getEntry(bucketDir, object) + entry, err = s3a.fetchObjectEntryRequired(bucket, object) if err != nil { return fmt.Errorf("failed to get object %s/%s: %w", bucket, object, ErrObjectNotFound) } @@ -426,8 +424,7 @@ func (s3a *S3ApiServer) setObjectLegalHold(bucket, object, versionId string, leg } } } else { - bucketDir := s3a.option.BucketsPath + "/" + bucket - entry, err = s3a.getEntry(bucketDir, object) + entry, err = s3a.fetchObjectEntryRequired(bucket, object) if err != nil { return fmt.Errorf("failed to get object %s/%s: %w", bucket, object, ErrObjectNotFound) } |
