Merge pull request #13645 from yangxuanjia/yxjetcd_fix_panic_when_restart_after_removeMember

fix panic when restart after removeMember
This commit is contained in:
Marek Siarkowicz 2022-02-20 12:28:14 +01:00 committed by GitHub
commit a63fa17b76
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -339,24 +339,30 @@ func (t *Transport) RemoveAllPeers() {
// the caller of this function must have the peers mutex.
func (t *Transport) removePeer(id types.ID) {
if peer, ok := t.peers[id]; ok {
// etcd may remove a member again on startup due to WAL files replaying.
peer, ok := t.peers[id]
if ok {
peer.stop()
} else {
if t.Logger != nil {
t.Logger.Panic("unexpected removal of unknown remote peer", zap.String("remote-peer-id", id.String()))
}
delete(t.peers, id)
delete(t.LeaderStats.Followers, id.String())
t.pipelineProber.Remove(id.String())
t.streamProber.Remove(id.String())
}
delete(t.peers, id)
delete(t.LeaderStats.Followers, id.String())
t.pipelineProber.Remove(id.String())
t.streamProber.Remove(id.String())
if t.Logger != nil {
t.Logger.Info(
"removed remote peer",
zap.String("local-member-id", t.ID.String()),
zap.String("removed-remote-peer-id", id.String()),
)
if ok {
t.Logger.Info(
"removed remote peer",
zap.String("local-member-id", t.ID.String()),
zap.String("removed-remote-peer-id", id.String()),
)
} else {
t.Logger.Warn(
"skipped removing already removed peer",
zap.String("local-member-id", t.ID.String()),
zap.String("removed-remote-peer-id", id.String()),
)
}
}
}