diff options
| author | LHHDZ <changlin.shi@ly.com> | 2022-09-30 03:29:01 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-09-29 12:29:01 -0700 |
| commit | 3de1e1978091e9675c9d54655dcde0c7dea9d222 (patch) | |
| tree | 86d5b68876c9e964e9ff3ae6b05cef66aa62abf5 /weed/s3api/auth_credentials_subscribe.go | |
| parent | 5e9039d728221b69dc30010e73c3a0a4e7c7e7e8 (diff) | |
| download | seaweedfs-3de1e1978091e9675c9d54655dcde0c7dea9d222.tar.xz seaweedfs-3de1e1978091e9675c9d54655dcde0c7dea9d222.zip | |
s3: sync bucket info from filer (#3759)
Diffstat (limited to 'weed/s3api/auth_credentials_subscribe.go')
| -rw-r--r-- | weed/s3api/auth_credentials_subscribe.go | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/weed/s3api/auth_credentials_subscribe.go b/weed/s3api/auth_credentials_subscribe.go index d567bb5d7..377cf2728 100644 --- a/weed/s3api/auth_credentials_subscribe.go +++ b/weed/s3api/auth_credentials_subscribe.go @@ -9,7 +9,7 @@ import ( "github.com/seaweedfs/seaweedfs/weed/util" ) -func (s3a *S3ApiServer) subscribeMetaEvents(clientName string, prefix string, lastTsNs int64) { +func (s3a *S3ApiServer) subscribeMetaEvents(clientName string, lastTsNs int64, prefix string, directoriesToWatch []string) { processEventFn := func(resp *filer_pb.SubscribeMetadataResponse) error { @@ -28,6 +28,7 @@ func (s3a *S3ApiServer) subscribeMetaEvents(clientName string, prefix string, la _ = s3a.onIamConfigUpdate(dir, fileName, content) _ = s3a.onCircuitBreakerConfigUpdate(dir, fileName, content) + _ = s3a.onBucketMetadataChange(dir, message.OldEntry, message.NewEntry) return nil } @@ -35,7 +36,7 @@ func (s3a *S3ApiServer) subscribeMetaEvents(clientName string, prefix string, la var clientEpoch int32 util.RetryForever("followIamChanges", func() error { clientEpoch++ - return pb.WithFilerClientFollowMetadata(s3a, clientName, s3a.randomClientId, clientEpoch, prefix, nil, &lastTsNs, 0, 0, processEventFn, pb.FatalOnError) + return pb.WithFilerClientFollowMetadata(s3a, clientName, s3a.randomClientId, clientEpoch, prefix, directoriesToWatch, &lastTsNs, 0, 0, processEventFn, pb.FatalOnError) }, func(err error) bool { glog.V(0).Infof("iam follow metadata changes: %v", err) return true @@ -63,3 +64,17 @@ func (s3a *S3ApiServer) onCircuitBreakerConfigUpdate(dir, filename string, conte } return nil } + +//reload bucket metadata +func (s3a *S3ApiServer) onBucketMetadataChange(dir string, oldEntry *filer_pb.Entry, newEntry *filer_pb.Entry) error { + if dir == s3a.option.BucketsPath { + if newEntry != nil { + s3a.bucketRegistry.LoadBucketMetadata(newEntry) + glog.V(0).Infof("updated bucketMetadata %s/%s", dir, newEntry) + } else { + s3a.bucketRegistry.RemoveBucketMetadata(oldEntry) + glog.V(0).Infof("remove bucketMetadata %s/%s", dir, newEntry) + } + } + return nil +} |
