aboutsummaryrefslogtreecommitdiff
path: root/weed/server
diff options
context:
space:
mode:
authorchrislu <chris.lu@gmail.com>2022-01-12 01:11:25 -0800
committerchrislu <chris.lu@gmail.com>2022-01-12 01:11:25 -0800
commit826a7b307e37299528d7b3b2aa8f374800bd28b6 (patch)
tree351e5654880bc15c96a8a63ab45ec85d68094c92 /weed/server
parentcd1ad88f30419f330af22333e1621b92d3a9b695 (diff)
downloadseaweedfs-826a7b307e37299528d7b3b2aa8f374800bd28b6.tar.xz
seaweedfs-826a7b307e37299528d7b3b2aa8f374800bd28b6.zip
master: remove hard coded filer settings in master.toml
fix https://github.com/chrislusf/seaweedfs/issues/2529
Diffstat (limited to 'weed/server')
-rw-r--r--weed/server/master_grpc_server_cluster.go23
-rw-r--r--weed/server/master_server.go15
2 files changed, 26 insertions, 12 deletions
diff --git a/weed/server/master_grpc_server_cluster.go b/weed/server/master_grpc_server_cluster.go
index 4a61d2e29..a5c82627a 100644
--- a/weed/server/master_grpc_server_cluster.go
+++ b/weed/server/master_grpc_server_cluster.go
@@ -2,7 +2,10 @@ package weed_server
import (
"context"
+ "github.com/chrislusf/seaweedfs/weed/cluster"
+ "github.com/chrislusf/seaweedfs/weed/pb"
"github.com/chrislusf/seaweedfs/weed/pb/master_pb"
+ "math/rand"
)
func (ms *MasterServer) ListClusterNodes(ctx context.Context, req *master_pb.ListClusterNodesRequest) (*master_pb.ListClusterNodesResponse, error) {
@@ -12,10 +15,26 @@ func (ms *MasterServer) ListClusterNodes(ctx context.Context, req *master_pb.Lis
for _, node := range clusterNodes {
resp.ClusterNodes = append(resp.ClusterNodes, &master_pb.ListClusterNodesResponse_ClusterNode{
- Address: string(node.Address),
- Version: node.Version,
+ Address: string(node.Address),
+ Version: node.Version,
IsLeader: ms.Cluster.IsOneLeader(node.Address),
})
}
return resp, nil
}
+
+func (ms *MasterServer) GetOneFiler() pb.ServerAddress {
+
+ clusterNodes := ms.Cluster.ListClusterNode(cluster.FilerType)
+
+ var filers []pb.ServerAddress
+ for _, node := range clusterNodes {
+ if ms.Cluster.IsOneLeader(node.Address) {
+ filers = append(filers, node.Address)
+ }
+ }
+ if len(filers) > 0 {
+ return filers[rand.Intn(len(filers))]
+ }
+ return "localhost:8888"
+}
diff --git a/weed/server/master_server.go b/weed/server/master_server.go
index cbc0aa337..3851c4d2a 100644
--- a/weed/server/master_server.go
+++ b/weed/server/master_server.go
@@ -208,7 +208,6 @@ func (ms *MasterServer) proxyToLeader(f http.HandlerFunc) http.HandlerFunc {
}
func (ms *MasterServer) startAdminScripts() {
- var err error
v := util.GetViper()
adminScripts := v.GetString("master.maintenance.scripts")
@@ -220,9 +219,6 @@ func (ms *MasterServer) startAdminScripts() {
v.SetDefault("master.maintenance.sleep_minutes", 17)
sleepMinutes := v.GetInt("master.maintenance.sleep_minutes")
- v.SetDefault("master.filer.default", "localhost:8888")
- filerHostPort := v.GetString("master.filer.default")
-
scriptLines := strings.Split(adminScripts, "\n")
if !strings.Contains(adminScripts, "lock") {
scriptLines = append(append([]string{}, "lock"), scriptLines...)
@@ -235,14 +231,9 @@ func (ms *MasterServer) startAdminScripts() {
shellOptions.GrpcDialOption = security.LoadClientTLS(v, "grpc.master")
shellOptions.Masters = &masterAddress
- shellOptions.FilerAddress = pb.ServerAddress(filerHostPort)
shellOptions.Directory = "/"
- if err != nil {
- glog.V(0).Infof("failed to parse master.filer.default = %s : %v\n", filerHostPort, err)
- return
- }
- commandEnv := shell.NewCommandEnv(shellOptions)
+ commandEnv := shell.NewCommandEnv(&shellOptions)
reg, _ := regexp.Compile(`'.*?'|".*?"|\S+`)
@@ -254,6 +245,10 @@ func (ms *MasterServer) startAdminScripts() {
for {
time.Sleep(time.Duration(sleepMinutes) * time.Minute)
if ms.Topo.IsLeader() {
+ shellOptions.FilerAddress = ms.GetOneFiler()
+ if shellOptions.FilerAddress == "" {
+ continue
+ }
for _, line := range scriptLines {
for _, c := range strings.Split(line, ";") {
processEachCmd(reg, c, commandEnv)