From 148a7d23b139e33ecb35aceb70d4020bbe1dad2f Mon Sep 17 00:00:00 2001 From: Luca Moser <moser.luca@gmail.com> Date: Tue, 4 Feb 2020 14:02:37 +0100 Subject: [PATCH] increases send queue and ignore sending if connection is closed (#232) --- packages/gossip/manager.go | 2 +- packages/gossip/neighbor.go | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/gossip/manager.go b/packages/gossip/manager.go index 7984a9e6..2a44ddd4 100644 --- a/packages/gossip/manager.go +++ b/packages/gossip/manager.go @@ -174,7 +174,7 @@ func (m *Manager) send(b []byte, to ...peer.ID) { for _, nbr := range neighbors { if _, err := nbr.Write(b); err != nil { - m.log.Warnw("send error", "err", err) + m.log.Warnw("send error", "err", err, "neighbor", nbr.Peer.Address()) } } } diff --git a/packages/gossip/neighbor.go b/packages/gossip/neighbor.go index 8cfcee90..8a2762af 100644 --- a/packages/gossip/neighbor.go +++ b/packages/gossip/neighbor.go @@ -19,7 +19,7 @@ var ( ) const ( - neighborQueueSize = 1000 + neighborQueueSize = 5000 maxNumReadErrors = 10 ) @@ -99,8 +99,9 @@ func (n *Neighbor) writeLoop() { continue } if _, err := n.BufferedConnection.Write(msg); err != nil { - // ignore write errors n.log.Warn("Write error", "err", err) + _ = n.BufferedConnection.Close() + return } case <-n.closing: return @@ -146,6 +147,8 @@ func (n *Neighbor) Write(b []byte) (int, error) { select { case n.queue <- b: return l, nil + case <-n.closing: + return 0, nil default: return 0, ErrNeighborQueueFull } -- GitLab