mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
Merge pull request #12815 from dbavatar/release-3.4-peervalidation
etcdserver: Fix PeerURL validation
This commit is contained in:
commit
30799c97be
@ -763,16 +763,21 @@ func ValidateClusterAndAssignIDs(lg *zap.Logger, local *RaftCluster, existing *R
|
|||||||
if len(ems) != len(lms) {
|
if len(ems) != len(lms) {
|
||||||
return fmt.Errorf("member count is unequal")
|
return fmt.Errorf("member count is unequal")
|
||||||
}
|
}
|
||||||
sort.Sort(MembersByPeerURLs(ems))
|
|
||||||
sort.Sort(MembersByPeerURLs(lms))
|
|
||||||
|
|
||||||
ctx, cancel := context.WithTimeout(context.TODO(), 30*time.Second)
|
ctx, cancel := context.WithTimeout(context.TODO(), 30*time.Second)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
for i := range ems {
|
for i := range ems {
|
||||||
if ok, err := netutil.URLStringsEqual(ctx, lg, ems[i].PeerURLs, lms[i].PeerURLs); !ok {
|
var err error
|
||||||
return fmt.Errorf("unmatched member while checking PeerURLs (%v)", err)
|
ok := false
|
||||||
|
for j := range lms {
|
||||||
|
if ok, err = netutil.URLStringsEqual(ctx, lg, ems[i].PeerURLs, lms[j].PeerURLs); ok {
|
||||||
|
lms[j].ID = ems[i].ID
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !ok {
|
||||||
|
return fmt.Errorf("PeerURLs: no match found for existing member (%v, %v), last resolver error (%v)", ems[i].ID, ems[i].PeerURLs, err)
|
||||||
}
|
}
|
||||||
lms[i].ID = ems[i].ID
|
|
||||||
}
|
}
|
||||||
local.members = make(map[types.ID]*Member)
|
local.members = make(map[types.ID]*Member)
|
||||||
for _, m := range lms {
|
for _, m := range lms {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user