mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
fix panic when restart after removeMember
fix panic when restart after removeMember fix panic when restart after removeMember
This commit is contained in:
parent
682b867653
commit
d108a241d0
@ -339,24 +339,30 @@ func (t *Transport) RemoveAllPeers() {
|
|||||||
|
|
||||||
// the caller of this function must have the peers mutex.
|
// the caller of this function must have the peers mutex.
|
||||||
func (t *Transport) removePeer(id types.ID) {
|
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()
|
peer.stop()
|
||||||
} else {
|
delete(t.peers, id)
|
||||||
if t.Logger != nil {
|
delete(t.LeaderStats.Followers, id.String())
|
||||||
t.Logger.Panic("unexpected removal of unknown remote peer", zap.String("remote-peer-id", 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 {
|
if t.Logger != nil {
|
||||||
t.Logger.Info(
|
if ok {
|
||||||
"removed remote peer",
|
t.Logger.Info(
|
||||||
zap.String("local-member-id", t.ID.String()),
|
"removed remote peer",
|
||||||
zap.String("removed-remote-peer-id", id.String()),
|
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()),
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user