mirror of
https://github.com/logos-messaging/go-libp2p-pubsub.git
synced 2026-01-04 05:43:06 +00:00
fix handling of dead peers (#492)
* fix handling of dead peers * remove unnecessary continue
This commit is contained in:
parent
96efa27a1a
commit
60cf380032
23
pubsub.go
23
pubsub.go
@ -696,6 +696,16 @@ func (p *PubSub) handleDeadPeers() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
close(ch)
|
close(ch)
|
||||||
|
delete(p.peers, pid)
|
||||||
|
|
||||||
|
for t, tmap := range p.topics {
|
||||||
|
if _, ok := tmap[pid]; ok {
|
||||||
|
delete(tmap, pid)
|
||||||
|
p.notifyLeave(t, pid)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
p.rt.RemovePeer(pid)
|
||||||
|
|
||||||
if p.host.Network().Connectedness(pid) == network.Connected {
|
if p.host.Network().Connectedness(pid) == network.Connected {
|
||||||
backoffDelay, err := p.deadPeerBackoff.updateAndGet(pid)
|
backoffDelay, err := p.deadPeerBackoff.updateAndGet(pid)
|
||||||
@ -709,20 +719,9 @@ func (p *PubSub) handleDeadPeers() {
|
|||||||
log.Debugf("peer declared dead but still connected; respawning writer: %s", pid)
|
log.Debugf("peer declared dead but still connected; respawning writer: %s", pid)
|
||||||
messages := make(chan *RPC, p.peerOutboundQueueSize)
|
messages := make(chan *RPC, p.peerOutboundQueueSize)
|
||||||
messages <- p.getHelloPacket()
|
messages <- p.getHelloPacket()
|
||||||
go p.handleNewPeerWithBackoff(p.ctx, pid, backoffDelay, messages)
|
|
||||||
p.peers[pid] = messages
|
p.peers[pid] = messages
|
||||||
continue
|
go p.handleNewPeerWithBackoff(p.ctx, pid, backoffDelay, messages)
|
||||||
}
|
}
|
||||||
|
|
||||||
delete(p.peers, pid)
|
|
||||||
for t, tmap := range p.topics {
|
|
||||||
if _, ok := tmap[pid]; ok {
|
|
||||||
delete(tmap, pid)
|
|
||||||
p.notifyLeave(t, pid)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
p.rt.RemovePeer(pid)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user