aboutsummaryrefslogtreecommitdiff
path: root/weed/filer
diff options
context:
space:
mode:
authorchrislu <chris.lu@gmail.com>2024-07-20 11:27:11 -0700
committerchrislu <chris.lu@gmail.com>2024-07-20 11:27:11 -0700
commitaed2a18223950a2bf83fba11f0ef27e3f96ad045 (patch)
tree858f3a0e90066bc48df8c4a8cdce4d3606f810fa /weed/filer
parent96af5712195be37b309115795066f17c7cc6126d (diff)
downloadseaweedfs-aed2a18223950a2bf83fba11f0ef27e3f96ad045.tar.xz
seaweedfs-aed2a18223950a2bf83fba11f0ef27e3f96ad045.zip
get, set and add path conf
Diffstat (limited to 'weed/filer')
-rw-r--r--weed/filer/filer_conf.go20
1 files changed, 19 insertions, 1 deletions
diff --git a/weed/filer/filer_conf.go b/weed/filer/filer_conf.go
index 25bf83771..69755a16a 100644
--- a/weed/filer/filer_conf.go
+++ b/weed/filer/filer_conf.go
@@ -102,7 +102,7 @@ func (fc *FilerConf) LoadFromBytes(data []byte) (err error) {
func (fc *FilerConf) doLoadConf(conf *filer_pb.FilerConf) (err error) {
for _, location := range conf.Locations {
- err = fc.AddLocationConf(location)
+ err = fc.SetLocationConf(location)
if err != nil {
// this is not recoverable
return nil
@@ -111,7 +111,24 @@ func (fc *FilerConf) doLoadConf(conf *filer_pb.FilerConf) (err error) {
return nil
}
+func (fc *FilerConf) GetLocationConf(locationPrefix string)(locConf *filer_pb.FilerConf_PathConf, found bool) {
+ return fc.rules.Get([]byte(locationPrefix))
+}
+
+func (fc *FilerConf) SetLocationConf(locConf *filer_pb.FilerConf_PathConf) (err error) {
+ err = fc.rules.Put([]byte(locConf.LocationPrefix), locConf)
+ if err != nil {
+ glog.Errorf("put location prefix: %v", err)
+ }
+ return
+}
+
func (fc *FilerConf) AddLocationConf(locConf *filer_pb.FilerConf_PathConf) (err error) {
+ existingConf, found := fc.rules.Get([]byte(locConf.LocationPrefix))
+ if found {
+ mergePathConf(existingConf, locConf)
+ locConf = existingConf
+ }
err = fc.rules.Put([]byte(locConf.LocationPrefix), locConf)
if err != nil {
glog.Errorf("put location prefix: %v", err)
@@ -170,6 +187,7 @@ func mergePathConf(a, b *filer_pb.FilerConf_PathConf) {
a.DataCenter = util.Nvl(b.DataCenter, a.DataCenter)
a.Rack = util.Nvl(b.Rack, a.Rack)
a.DataNode = util.Nvl(b.DataNode, a.DataNode)
+ a.DisableChunkDeletion = b.DisableChunkDeletion || a.DisableChunkDeletion
}
func (fc *FilerConf) ToProto() *filer_pb.FilerConf {