force raft bootstrap

avoid err bootstrap only works on new clusters
This commit is contained in:
Konstantin Lebedev 2022-04-06 12:18:43 +05:00
parent 0e796a5582
commit c1aeded2dd

View file

@ -13,12 +13,18 @@ import (
"google.golang.org/grpc" "google.golang.org/grpc"
"math/rand" "math/rand"
"os" "os"
"path"
"path/filepath" "path/filepath"
"sort" "sort"
"strings" "strings"
"time" "time"
) )
const (
ldbFile = "logs.dat"
sdbFile = "stable.dat"
)
func getPeerIdx(self pb.ServerAddress, mapPeers map[string]pb.ServerAddress) int { func getPeerIdx(self pb.ServerAddress, mapPeers map[string]pb.ServerAddress) int {
peers := make([]pb.ServerAddress, 0, len(mapPeers)) peers := make([]pb.ServerAddress, 0, len(mapPeers))
for _, peer := range mapPeers { for _, peer := range mapPeers {
@ -108,14 +114,19 @@ func NewHashicorpRaftServer(option *RaftServerOption) (*RaftServer, error) {
c.LogLevel = "Error" c.LogLevel = "Error"
} }
if option.RaftBootstrap {
os.RemoveAll(path.Join(s.dataDir, ldbFile))
os.RemoveAll(path.Join(s.dataDir, sdbFile))
os.RemoveAll(path.Join(s.dataDir, "snapshot"))
}
baseDir := s.dataDir baseDir := s.dataDir
ldb, err := boltdb.NewBoltStore(filepath.Join(baseDir, "logs.dat")) ldb, err := boltdb.NewBoltStore(filepath.Join(baseDir, ldbFile))
if err != nil { if err != nil {
return nil, fmt.Errorf(`boltdb.NewBoltStore(%q): %v`, filepath.Join(baseDir, "logs.dat"), err) return nil, fmt.Errorf(`boltdb.NewBoltStore(%q): %v`, filepath.Join(baseDir, "logs.dat"), err)
} }
sdb, err := boltdb.NewBoltStore(filepath.Join(baseDir, "stable.dat")) sdb, err := boltdb.NewBoltStore(filepath.Join(baseDir, sdbFile))
if err != nil { if err != nil {
return nil, fmt.Errorf(`boltdb.NewBoltStore(%q): %v`, filepath.Join(baseDir, "stable.dat"), err) return nil, fmt.Errorf(`boltdb.NewBoltStore(%q): %v`, filepath.Join(baseDir, "stable.dat"), err)
} }