aboutsummaryrefslogtreecommitdiff
path: root/weed/s3api/s3api_object_retention.go
diff options
context:
space:
mode:
authorChris Lu <chrislusf@users.noreply.github.com>2025-11-10 20:30:21 -0800
committerGitHub <noreply@github.com>2025-11-10 20:30:21 -0800
commitbf8e4f40e60e74ce03c2f497c6245e5d1460f1d3 (patch)
treeeb42645861f4457411259e86f915cfa514cb192f /weed/s3api/s3api_object_retention.go
parent6201cd099e55e4317f4a34291800a31c145bb803 (diff)
downloadseaweedfs-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.go9
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)
}