diff --git a/weed/command/master.go b/weed/command/master.go index b1fbf44cf..02a155da8 100644 --- a/weed/command/master.go +++ b/weed/command/master.go @@ -2,13 +2,14 @@ package command import ( "fmt" - hashicorpRaft "github.com/hashicorp/raft" "net/http" "os" "path" "strings" "time" + hashicorpRaft "github.com/hashicorp/raft" + "golang.org/x/exp/slices" "github.com/gorilla/mux" @@ -163,11 +164,11 @@ func startMaster(masterOption MasterOptions, masterWhiteList []string) { RaftResumeState: *masterOption.raftResumeState, HeartbeatInterval: *masterOption.heartbeatInterval, ElectionTimeout: *masterOption.electionTimeout, - RaftBootstrap: *m.raftBootstrap, + RaftBootstrap: *masterOption.raftBootstrap, } var raftServer *weed_server.RaftServer var err error - if *m.raftHashicorp { + if *masterOption.raftHashicorp { if raftServer, err = weed_server.NewHashicorpRaftServer(raftServerOption); err != nil { glog.Fatalf("NewHashicorpRaftServer: %s", err) } @@ -180,7 +181,7 @@ func startMaster(masterOption MasterOptions, masterWhiteList []string) { ms.SetRaftServer(raftServer) r.HandleFunc("/cluster/status", raftServer.StatusHandler).Methods("GET") r.HandleFunc("/cluster/healthz", raftServer.HealthzHandler).Methods("GET", "HEAD") - if *m.raftHashicorp { + if *masterOption.raftHashicorp { r.HandleFunc("/raft/stats", raftServer.StatsRaftHandler).Methods("GET") } // starting grpc server @@ -191,7 +192,7 @@ func startMaster(masterOption MasterOptions, masterWhiteList []string) { } grpcS := pb.NewGrpcServer(security.LoadServerTLS(util.GetViper(), "grpc.master")) master_pb.RegisterSeaweedServer(grpcS, ms) - if *m.raftHashicorp { + if *masterOption.raftHashicorp { raftServer.TransportManager.Register(grpcS) } else { protobuf.RegisterRaftServer(grpcS, raftServer) @@ -204,7 +205,7 @@ func startMaster(masterOption MasterOptions, masterWhiteList []string) { go grpcS.Serve(grpcL) timeSleep := 1500 * time.Millisecond - if !*m.raftHashicorp { + if !*masterOption.raftHashicorp { go func() { time.Sleep(timeSleep) diff --git a/weed/command/server.go b/weed/command/server.go index ba56d8897..978cea117 100644 --- a/weed/command/server.go +++ b/weed/command/server.go @@ -97,6 +97,7 @@ func init() { masterOptions.metricsIntervalSec = cmdServer.Flag.Int("master.metrics.intervalSeconds", 15, "Prometheus push interval in seconds") masterOptions.raftResumeState = cmdServer.Flag.Bool("master.resumeState", false, "resume previous state on start master server") masterOptions.raftHashicorp = cmdServer.Flag.Bool("master.raftHashicorp", false, "use hashicorp raft") + masterOptions.raftBootstrap = cmdMaster.Flag.Bool("master.raftBootstrap", false, "Whether to bootstrap the Raft cluster") masterOptions.heartbeatInterval = cmdServer.Flag.Duration("master.heartbeatInterval", 300*time.Millisecond, "heartbeat interval of master servers, and will be randomly multiplied by [1, 1.25)") masterOptions.electionTimeout = cmdServer.Flag.Duration("master.electionTimeout", 10*time.Second, "election timeout of master servers")