Consul Service meta wrongly computes and exposes non_voter meta (#8731)
* Consul Service meta wrongly computes and exposes non_voter meta In Serf Tags, entreprise members being non-voters use the tag `nonvoter=1`, not `non_voter = false`, so non-voters in members were wrongly displayed as voter. Demonstration: ``` consul members -detailed|grep voter consul20-hk5 10.200.100.110:8301 alive acls=1,build=1.8.4+ent,dc=hk5,expect=3,ft_fs=1,ft_ns=1,id=xxxxxxxx-5629-08f2-3a79-10a1ab3849d5,nonvoter=1,port=8300,raft_vsn=3,role=consul,segment=<all>,use_tls=1,vsn=2,vsn_max=3,vsn_min=2,wan_join_port=8302 ``` * Added changelog * Added changelog entry
This commit is contained in:
parent
f58806fbab
commit
54f9f247f8
|
@ -0,0 +1,3 @@
|
||||||
|
```release-note:bug
|
||||||
|
raft: (Enterprise only) properly update consul server meta non_voter for non-voting Enterprise Consul servers
|
||||||
|
```
|
|
@ -1208,7 +1208,7 @@ func (s *Server) handleAliveMember(member serf.Member) error {
|
||||||
Warning: 1,
|
Warning: 1,
|
||||||
},
|
},
|
||||||
Meta: map[string]string{
|
Meta: map[string]string{
|
||||||
"non_voter": strconv.FormatBool(member.Tags["non_voter"] == "true"),
|
"non_voter": strconv.FormatBool(member.Tags["nonvoter"] == "1"),
|
||||||
"raft_version": strconv.Itoa(parts.RaftVersion),
|
"raft_version": strconv.Itoa(parts.RaftVersion),
|
||||||
"serf_protocol_current": strconv.FormatUint(uint64(member.ProtocolCur), 10),
|
"serf_protocol_current": strconv.FormatUint(uint64(member.ProtocolCur), 10),
|
||||||
"serf_protocol_min": strconv.FormatUint(uint64(member.ProtocolMin), 10),
|
"serf_protocol_min": strconv.FormatUint(uint64(member.ProtocolMin), 10),
|
||||||
|
|
|
@ -334,7 +334,7 @@ func TestLeader_CheckServersMeta(t *testing.T) {
|
||||||
versionToExpect := "19.7.9"
|
versionToExpect := "19.7.9"
|
||||||
|
|
||||||
retry.Run(t, func(r *retry.R) {
|
retry.Run(t, func(r *retry.R) {
|
||||||
member.Tags["non_voter"] = "true"
|
member.Tags["nonvoter"] = "1"
|
||||||
member.Tags["build"] = versionToExpect
|
member.Tags["build"] = versionToExpect
|
||||||
err := s1.handleAliveMember(member)
|
err := s1.handleAliveMember(member)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -348,7 +348,7 @@ func TestLeader_CheckServersMeta(t *testing.T) {
|
||||||
r.Fatal("client not registered")
|
r.Fatal("client not registered")
|
||||||
}
|
}
|
||||||
if service.Meta["non_voter"] != "true" {
|
if service.Meta["non_voter"] != "true" {
|
||||||
r.Fatalf("Expected to be non_voter == false, was: %s", service.Meta["non_voter"])
|
r.Fatalf("Expected to be non_voter == true, was: %s", service.Meta["non_voter"])
|
||||||
}
|
}
|
||||||
newVersion := service.Meta["version"]
|
newVersion := service.Meta["version"]
|
||||||
if newVersion != versionToExpect {
|
if newVersion != versionToExpect {
|
||||||
|
|
Loading…
Reference in New Issue