aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStewart Miles <stewartamiles@gmail.com>2023-03-15 13:03:20 -0700
committerGitHub <noreply@github.com>2023-03-15 13:03:20 -0700
commitdd71f54c6b8355a35cda134173d9ebb76a53b62c (patch)
tree7cf89eebda151db9cae221cb9a1726333a84aac8
parent71b33faef0925307880cf6752f1825efb2a96430 (diff)
downloadseaweedfs-dd71f54c6b8355a35cda134173d9ebb76a53b62c.tar.xz
seaweedfs-dd71f54c6b8355a35cda134173d9ebb76a53b62c.zip
Fix -raftHashicorp and -raftBootstrap flag propagation. (#4309)
`weed server` was not correctly propagating `-master.raftHashicorp` and `-master.raftBootstrap` flags when starting the master server. Related to #4307
-rw-r--r--weed/command/master.go13
-rw-r--r--weed/command/server.go1
2 files changed, 8 insertions, 6 deletions
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")