mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
etcdctl: fix member add command
This commit is contained in:
parent
d08bb07d6d
commit
b7ff97f54e
@ -158,12 +158,14 @@ func memberAddCommandFunc(cmd *cobra.Command, args []string) {
|
||||
if _, ok := (display).(*simplePrinter); ok {
|
||||
ctx, cancel = commandCtx(cmd)
|
||||
listResp, err := cli.MemberList(ctx)
|
||||
// get latest member list; if there's failover new member might have outdated list
|
||||
// make sure the member who served member list request has the latest member list.
|
||||
syncedMemberSet := make(map[uint64]struct{})
|
||||
syncedMemberSet[resp.Header.MemberId] = struct{}{} // the member who served member add is guaranteed to have the latest member list.
|
||||
for {
|
||||
if err != nil {
|
||||
ExitWithError(ExitError, err)
|
||||
}
|
||||
if listResp.Header.MemberId == resp.Header.MemberId {
|
||||
if _, ok := syncedMemberSet[listResp.Header.MemberId]; ok {
|
||||
break
|
||||
}
|
||||
// quorum get to sync cluster list
|
||||
@ -171,7 +173,7 @@ func memberAddCommandFunc(cmd *cobra.Command, args []string) {
|
||||
if gerr != nil {
|
||||
ExitWithError(ExitError, err)
|
||||
}
|
||||
resp.Header.MemberId = gresp.Header.MemberId
|
||||
syncedMemberSet[gresp.Header.MemberId] = struct{}{}
|
||||
listResp, err = cli.MemberList(ctx)
|
||||
}
|
||||
cancel()
|
||||
|
Loading…
x
Reference in New Issue
Block a user