From 85dfe5eaee1e9646d2721bca0892db159a32e0bf Mon Sep 17 00:00:00 2001 From: chrislu Date: Mon, 10 Nov 2025 17:45:13 -0800 Subject: [PATCH] optimize --- weed/s3api/s3api_object_handlers.go | 34 +++++++++++++---------------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/weed/s3api/s3api_object_handlers.go b/weed/s3api/s3api_object_handlers.go index 2060489b8..dda9d1146 100644 --- a/weed/s3api/s3api_object_handlers.go +++ b/weed/s3api/s3api_object_handlers.go @@ -367,26 +367,23 @@ func (s3a *S3ApiServer) GetObjectHandler(w http.ResponseWriter, r *http.Request) objectEntryForSSE = entry } else { // For non-versioned objects, fetch entry once and use for both SSE and Range checks - if originalRangeHeader != "" || true { // Always fetch for SSE processing - bucket, object := s3_constants.GetBucketAndObject(r) - objectPath := fmt.Sprintf("%s/%s%s", s3a.option.BucketsPath, bucket, object) - fetchedEntry, fetchErr := s3a.getEntry("", objectPath) - if fetchErr == nil { - objectEntryForSSE = fetchedEntry - // Check if this is an SSE object for Range request handling - if originalRangeHeader != "" { - primarySSEType := s3a.detectPrimarySSEType(fetchedEntry) - if primarySSEType == s3_constants.SSETypeC || primarySSEType == s3_constants.SSETypeKMS { - sseObject = true - // Temporarily remove Range header to get full encrypted data from filer - r.Header.Del("Range") - } + objectPath := fmt.Sprintf("%s/%s%s", s3a.option.BucketsPath, bucket, object) + fetchedEntry, fetchErr := s3a.getEntry("", objectPath) + if fetchErr == nil { + objectEntryForSSE = fetchedEntry + // Check if this is an SSE object for Range request handling + if originalRangeHeader != "" { + primarySSEType := s3a.detectPrimarySSEType(fetchedEntry) + if primarySSEType == s3_constants.SSETypeC || primarySSEType == s3_constants.SSETypeKMS { + sseObject = true + // Temporarily remove Range header to get full encrypted data from filer + r.Header.Del("Range") } - } else if !errors.Is(fetchErr, filer_pb.ErrNotFound) { - glog.Errorf("GetObjectHandler: failed to get entry for SSE check: %v", fetchErr) - s3err.WriteErrorResponse(w, r, s3err.ErrInternalError) - return } + } else if !errors.Is(fetchErr, filer_pb.ErrNotFound) { + glog.Errorf("GetObjectHandler: failed to get entry for SSE check: %v", fetchErr) + s3err.WriteErrorResponse(w, r, s3err.ErrInternalError) + return } } @@ -531,7 +528,6 @@ func (s3a *S3ApiServer) HeadObjectHandler(w http.ResponseWriter, r *http.Request objectEntryForSSE = entry } else { // Fetch entry for non-versioned objects (needed for SSE metadata) - bucket, object := s3_constants.GetBucketAndObject(r) objectPath := fmt.Sprintf("%s/%s%s", s3a.option.BucketsPath, bucket, object) fetchedEntry, fetchErr := s3a.getEntry("", objectPath) if fetchErr == nil {