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 |
|||
description: SeaweedFS |
|||
name: seaweedfs |
|||
appVersion: "4.10" |
|||
appVersion: "4.11" |
|||
# 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