aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2020-11-14 21:21:20 -0800
committerChris Lu <chris.lu@gmail.com>2020-11-14 21:21:20 -0800
commit0fc9ffc603cd5ceeb7d268ff6bb559f2967573b2 (patch)
tree2073c4deba3880d96b9d094b548190007cc91579
parent7cfa616843d88a5557d166cacfc64b9b3fce5e9c (diff)
downloadseaweedfs-0fc9ffc603cd5ceeb7d268ff6bb559f2967573b2.tar.xz
seaweedfs-0fc9ffc603cd5ceeb7d268ff6bb559f2967573b2.zip
able to read filer.conf if updated
-rw-r--r--weed/filer/filer_on_meta_event.go33
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))
}