From c567da7164fff26f8dc3cdee0b7cb524ad3a1726 Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Thu, 7 May 2026 18:19:42 -0700 Subject: [PATCH] feat(s3): register SeaweedS3LifecycleInternal gRPC service (#9359) Phase 2 added the LifecycleDelete handler on S3ApiServer but never registered it on a running gRPC server, so workers had no endpoint to dial. Embed UnimplementedSeaweedS3LifecycleInternalServer on S3ApiServer and register it on the s3 command's grpc server alongside SeaweedS3IamCacheServer. --- weed/command/s3.go | 2 ++ weed/s3api/s3api_server.go | 2 ++ 2 files changed, 4 insertions(+) diff --git a/weed/command/s3.go b/weed/command/s3.go index 8f1175d2d..cf33cdc7b 100644 --- a/weed/command/s3.go +++ b/weed/command/s3.go @@ -20,6 +20,7 @@ import ( "github.com/seaweedfs/seaweedfs/weed/glog" "github.com/seaweedfs/seaweedfs/weed/pb" "github.com/seaweedfs/seaweedfs/weed/pb/filer_pb" + "github.com/seaweedfs/seaweedfs/weed/pb/s3_lifecycle_pb" "github.com/seaweedfs/seaweedfs/weed/pb/s3_pb" "github.com/seaweedfs/seaweedfs/weed/s3api" "github.com/seaweedfs/seaweedfs/weed/s3api/iceberg" @@ -406,6 +407,7 @@ func (s3opt *S3Options) startS3Server() bool { } grpcS := pb.NewGrpcServer(security.LoadServerTLS(util.GetViper(), "grpc.s3")) s3_pb.RegisterSeaweedS3IamCacheServer(grpcS, s3ApiServer) + s3_lifecycle_pb.RegisterSeaweedS3LifecycleInternalServer(grpcS, s3ApiServer) reflection.Register(grpcS) if grpcLocalL != nil { go grpcS.Serve(grpcLocalL) diff --git a/weed/s3api/s3api_server.go b/weed/s3api/s3api_server.go index e6a2cb064..7fb37f250 100644 --- a/weed/s3api/s3api_server.go +++ b/weed/s3api/s3api_server.go @@ -25,6 +25,7 @@ import ( "github.com/seaweedfs/seaweedfs/weed/iam/policy" "github.com/seaweedfs/seaweedfs/weed/iam/sts" "github.com/seaweedfs/seaweedfs/weed/pb" + "github.com/seaweedfs/seaweedfs/weed/pb/s3_lifecycle_pb" "github.com/seaweedfs/seaweedfs/weed/pb/s3_pb" "github.com/seaweedfs/seaweedfs/weed/s3api/policy_engine" . "github.com/seaweedfs/seaweedfs/weed/s3api/s3_constants" @@ -74,6 +75,7 @@ const s3ChunkCacheChunkSizeMB = 4 type S3ApiServer struct { s3_pb.UnimplementedSeaweedS3IamCacheServer + s3_lifecycle_pb.UnimplementedSeaweedS3LifecycleInternalServer option *S3ApiServerOption iam *IdentityAccessManagement iamIntegration *S3IAMIntegration // Advanced IAM integration for JWT authentication