diff options
| author | Chris Lu <chris.lu@gmail.com> | 2020-11-14 21:21:20 -0800 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2020-11-14 21:21:20 -0800 |
| commit | 0fc9ffc603cd5ceeb7d268ff6bb559f2967573b2 (patch) | |
| tree | 2073c4deba3880d96b9d094b548190007cc91579 | |
| parent | 7cfa616843d88a5557d166cacfc64b9b3fce5e9c (diff) | |
| download | seaweedfs-0fc9ffc603cd5ceeb7d268ff6bb559f2967573b2.tar.xz seaweedfs-0fc9ffc603cd5ceeb7d268ff6bb559f2967573b2.zip | |
able to read filer.conf if updated
| -rw-r--r-- | weed/filer/filer_on_meta_event.go | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/weed/filer/filer_on_meta_event.go b/weed/filer/filer_on_meta_event.go index 70b62a974..f0b64f4e2 100644 --- a/weed/filer/filer_on_meta_event.go +++ b/weed/filer/filer_on_meta_event.go @@ -1,6 +1,9 @@ package filer import ( + "bytes" + "math" + "github.com/chrislusf/seaweedfs/weed/glog" "github.com/chrislusf/seaweedfs/weed/pb/filer_pb" ) @@ -12,10 +15,40 @@ const ( // onMetadataChangeEvent is triggered after filer processed change events from local or remote filers func (f *Filer) onMetadataChangeEvent(event *filer_pb.SubscribeMetadataResponse) { if DirectoryEtc != event.Directory { + if DirectoryEtc != event.EventNotification.NewParentPath { + return + } + } + + entry := event.EventNotification.NewEntry + if entry == nil { return } glog.V(0).Infof("procesing %v", event) + if entry.Name == "filer.conf" { + f.reloadFilerConfiguration(entry) + } + +} + +func (f *Filer) readEntry(entry *filer_pb.Entry) ([]byte, error){ + var buf bytes.Buffer + err := StreamContent(f.MasterClient, &buf, entry.Chunks, 0, math.MaxInt64) + if err != nil { + return nil, err + } + return buf.Bytes(), nil +} + +func (f *Filer) reloadFilerConfiguration(entry *filer_pb.Entry) { + data, err := f.readEntry(entry) + if err != nil { + glog.Warningf("read entry %s: %v", entry.Name, err) + return + + } + println(string(data)) } |
