Commit 81a51448 authored by Andreas Bigger's avatar Andreas Bigger

fix peer gater logs

parent ef5c1f77
...@@ -40,15 +40,18 @@ func NewPeerGater(connGater ConnectionGater, log log.Logger, banEnabled bool) Pe ...@@ -40,15 +40,18 @@ func NewPeerGater(connGater ConnectionGater, log log.Logger, banEnabled bool) Pe
func (s *gater) Update(id peer.ID, score float64) { func (s *gater) Update(id peer.ID, score float64) {
// Check if the peer score is below the threshold // Check if the peer score is below the threshold
// If so, we need to block the peer // If so, we need to block the peer
isAlreadyBlocked := slices.Contains(s.connGater.ListBlockedPeers(), id)
if score < PeerScoreThreshold && s.banEnabled { if score < PeerScoreThreshold && s.banEnabled {
s.log.Warn("peer blocking enabled, blocking peer", "id", id.String(), "score", score) if !isAlreadyBlocked {
s.log.Warn("peer blocking enabled, blocking peer", "id", id.String(), "score", score)
}
err := s.connGater.BlockPeer(id) err := s.connGater.BlockPeer(id)
if err != nil { if err != nil {
s.log.Warn("connection gater failed to block peer", "id", id.String(), "err", err) s.log.Warn("connection gater failed to block peer", "id", id.String(), "err", err)
} }
} }
// Unblock peers whose score has recovered to an acceptable level // Unblock peers whose score has recovered to an acceptable level
if (score > PeerScoreThreshold) && slices.Contains(s.connGater.ListBlockedPeers(), id) { if (score > PeerScoreThreshold) && isAlreadyBlocked {
err := s.connGater.UnblockPeer(id) err := s.connGater.UnblockPeer(id)
if err != nil { if err != nil {
s.log.Warn("connection gater failed to unblock peer", "id", id.String(), "err", err) s.log.Warn("connection gater failed to unblock peer", "id", id.String(), "err", err)
......
...@@ -44,6 +44,9 @@ func (testSuite *PeerGaterTestSuite) TestPeerGaterUpdate() { ...@@ -44,6 +44,9 @@ func (testSuite *PeerGaterTestSuite) TestPeerGaterUpdate() {
true, true,
) )
// Return an empty list of already blocked peers
testSuite.mockGater.On("ListBlockedPeers").Return([]peer.ID{})
// Mock a connection gater peer block call // Mock a connection gater peer block call
// Since the peer score is below the [PeerScoreThreshold] of -100, // Since the peer score is below the [PeerScoreThreshold] of -100,
// the [BlockPeer] method should be called // the [BlockPeer] method should be called
...@@ -61,6 +64,9 @@ func (testSuite *PeerGaterTestSuite) TestPeerGaterUpdateNoBanning() { ...@@ -61,6 +64,9 @@ func (testSuite *PeerGaterTestSuite) TestPeerGaterUpdateNoBanning() {
false, false,
) )
// Return an empty list of already blocked peers
testSuite.mockGater.On("ListBlockedPeers").Return([]peer.ID{})
// Notice: [BlockPeer] should not be called since banning is not enabled // Notice: [BlockPeer] should not be called since banning is not enabled
gater.Update(peer.ID("peer1"), float64(-100000)) gater.Update(peer.ID("peer1"), float64(-100000))
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment