Browse Source
Normalize hashicorp raft peer ids (#8253)
Normalize hashicorp raft peer ids (#8253)
* Normalize raft voter ids * 4.11 * Update raft_hashicorp.gopull/8271/head
committed by
GitHub
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 119 additions and 21 deletions
-
4k8s/charts/seaweedfs/Chart.yaml
-
2weed/server/master_server.go
-
45weed/server/raft_hashicorp.go
-
87weed/server/raft_hashicorp_test.go
-
2weed/util/version/constants.go
@ -1,6 +1,6 @@ |
|||||
apiVersion: v1 |
apiVersion: v1 |
||||
description: SeaweedFS |
description: SeaweedFS |
||||
name: seaweedfs |
name: seaweedfs |
||||
appVersion: "4.10" |
|
||||
|
appVersion: "4.11" |
||||
# Dev note: Trigger a helm chart release by `git tag -a helm-<version>` |
# Dev note: Trigger a helm chart release by `git tag -a helm-<version>` |
||||
version: 4.0.410 |
|
||||
|
version: 4.0.411 |
||||
@ -0,0 +1,87 @@ |
|||||
|
package weed_server |
||||
|
|
||||
|
import ( |
||||
|
"sort" |
||||
|
"testing" |
||||
|
|
||||
|
"github.com/hashicorp/raft" |
||||
|
"github.com/seaweedfs/seaweedfs/weed/pb" |
||||
|
) |
||||
|
|
||||
|
func TestRaftServerID(t *testing.T) { |
||||
|
tests := []struct { |
||||
|
name string |
||||
|
addr pb.ServerAddress |
||||
|
want string |
||||
|
}{ |
||||
|
{ |
||||
|
name: "without grpc suffix", |
||||
|
addr: pb.ServerAddress("master-0:9333"), |
||||
|
want: "master-0:9333", |
||||
|
}, |
||||
|
{ |
||||
|
name: "with grpc suffix", |
||||
|
addr: pb.NewServerAddress("master-0", 9333, 19333), |
||||
|
want: "master-0:9333", |
||||
|
}, |
||||
|
} |
||||
|
|
||||
|
for _, tt := range tests { |
||||
|
t.Run(tt.name, func(t *testing.T) { |
||||
|
if got := raftServerID(tt.addr); got != tt.want { |
||||
|
t.Fatalf("raftServerID(%q) = %q, want %q", tt.addr, got, tt.want) |
||||
|
} |
||||
|
}) |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
func TestGetPeerIdxUsesCanonicalID(t *testing.T) { |
||||
|
peers := map[string]pb.ServerAddress{ |
||||
|
"master-0:9333": pb.ServerAddress("master-0:9333"), |
||||
|
"master-1:9333": pb.ServerAddress("master-1:9333"), |
||||
|
"master-2:9333": pb.ServerAddress("master-2:9333"), |
||||
|
} |
||||
|
self := pb.NewServerAddress("master-2", 9333, 19333) |
||||
|
|
||||
|
if got := getPeerIdx(self, peers); got != 2 { |
||||
|
t.Fatalf("getPeerIdx(%q) = %d, want 2", self, got) |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
func TestAddPeersConfigurationUsesCanonicalIDs(t *testing.T) { |
||||
|
rs := &RaftServer{ |
||||
|
peers: map[string]pb.ServerAddress{ |
||||
|
"master-0:9333": pb.ServerAddress("master-0:9333"), |
||||
|
"master-1:9333": pb.ServerAddress("master-1:9333"), |
||||
|
"master-2:9333": pb.ServerAddress("master-2:9333"), |
||||
|
}, |
||||
|
} |
||||
|
|
||||
|
cfg := rs.AddPeersConfiguration() |
||||
|
if len(cfg.Servers) != 3 { |
||||
|
t.Fatalf("len(cfg.Servers) = %d, want 3", len(cfg.Servers)) |
||||
|
} |
||||
|
|
||||
|
var ids []string |
||||
|
var addrs []string |
||||
|
for _, s := range cfg.Servers { |
||||
|
if s.Suffrage != raft.Voter { |
||||
|
t.Fatalf("server %q has suffrage %q, want %q", s.ID, s.Suffrage, raft.Voter) |
||||
|
} |
||||
|
ids = append(ids, string(s.ID)) |
||||
|
addrs = append(addrs, string(s.Address)) |
||||
|
} |
||||
|
sort.Strings(ids) |
||||
|
sort.Strings(addrs) |
||||
|
|
||||
|
wantIDs := []string{"master-0:9333", "master-1:9333", "master-2:9333"} |
||||
|
wantAddrs := []string{"master-0:19333", "master-1:19333", "master-2:19333"} |
||||
|
for i := range wantIDs { |
||||
|
if ids[i] != wantIDs[i] { |
||||
|
t.Fatalf("ids[%d] = %q, want %q", i, ids[i], wantIDs[i]) |
||||
|
} |
||||
|
if addrs[i] != wantAddrs[i] { |
||||
|
t.Fatalf("addrs[%d] = %q, want %q", i, addrs[i], wantAddrs[i]) |
||||
|
} |
||||
|
} |
||||
|
} |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue