From 34b4584ee0d7d184ba6a769cbbb553cec6cd48c7 Mon Sep 17 00:00:00 2001 From: chrislu Date: Sun, 16 Nov 2025 14:44:17 -0800 Subject: [PATCH] nil handling --- weed/s3api/s3api_bucket_policy_handlers.go | 16 ++++++++++------ weed/s3api/s3api_server.go | 4 ++++ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/weed/s3api/s3api_bucket_policy_handlers.go b/weed/s3api/s3api_bucket_policy_handlers.go index 4166f36e2..a0565d6b9 100644 --- a/weed/s3api/s3api_bucket_policy_handlers.go +++ b/weed/s3api/s3api_bucket_policy_handlers.go @@ -91,9 +91,11 @@ func (s3a *S3ApiServer) PutBucketPolicyHandler(w http.ResponseWriter, r *http.Re // Immediately load into policy engine to avoid race condition // (The subscription system will also do this async, but we want immediate effect) - if err := s3a.policyEngine.LoadBucketPolicyFromCache(bucket, &policyDoc); err != nil { - glog.Warningf("Failed to immediately load bucket policy into engine for %s: %v", bucket, err) - // Don't fail the request since the subscription will eventually sync it + if s3a.policyEngine != nil { + if err := s3a.policyEngine.LoadBucketPolicyFromCache(bucket, &policyDoc); err != nil { + glog.Warningf("Failed to immediately load bucket policy into engine for %s: %v", bucket, err) + // Don't fail the request since the subscription will eventually sync it + } } // Update IAM integration with new bucket policy @@ -132,9 +134,11 @@ func (s3a *S3ApiServer) DeleteBucketPolicyHandler(w http.ResponseWriter, r *http // Immediately remove from policy engine to avoid race condition // (The subscription system will also do this async, but we want immediate effect) - if err := s3a.policyEngine.DeleteBucketPolicy(bucket); err != nil { - glog.Warningf("Failed to immediately remove bucket policy from engine for %s: %v", bucket, err) - // Don't fail the request since the subscription will eventually sync it + if s3a.policyEngine != nil { + if err := s3a.policyEngine.DeleteBucketPolicy(bucket); err != nil { + glog.Warningf("Failed to immediately remove bucket policy from engine for %s: %v", bucket, err) + // Don't fail the request since the subscription will eventually sync it + } } // Update IAM integration to remove bucket policy diff --git a/weed/s3api/s3api_server.go b/weed/s3api/s3api_server.go index 053d4f56a..5314ec86b 100644 --- a/weed/s3api/s3api_server.go +++ b/weed/s3api/s3api_server.go @@ -168,6 +168,10 @@ func NewS3ApiServerWithStore(router *mux.Router, option *S3ApiServerOption, expl // This helper method centralizes the logic for loading bucket policies into the engine // to avoid duplication and ensure consistent error handling func (s3a *S3ApiServer) syncBucketPolicyToEngine(bucket string, policyDoc *policy.PolicyDocument) { + if s3a.policyEngine == nil { + return + } + if policyDoc != nil { if err := s3a.policyEngine.LoadBucketPolicyFromCache(bucket, policyDoc); err != nil { glog.Errorf("Failed to sync bucket policy for %s to policy engine: %v", bucket, err)