aboutsummaryrefslogtreecommitdiff
path: root/weed/s3api/auth_credentials_subscribe.go
diff options
context:
space:
mode:
authorLHHDZ <changlin.shi@ly.com>2022-09-30 03:29:01 +0800
committerGitHub <noreply@github.com>2022-09-29 12:29:01 -0700
commit3de1e1978091e9675c9d54655dcde0c7dea9d222 (patch)
tree86d5b68876c9e964e9ff3ae6b05cef66aa62abf5 /weed/s3api/auth_credentials_subscribe.go
parent5e9039d728221b69dc30010e73c3a0a4e7c7e7e8 (diff)
downloadseaweedfs-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.go19
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
+}