diff --git a/lib/lambda_ethereum_consensus/p2p/peerbook.ex b/lib/lambda_ethereum_consensus/p2p/peerbook.ex index d04d3a1dd..f42653ffc 100644 --- a/lib/lambda_ethereum_consensus/p2p/peerbook.ex +++ b/lib/lambda_ethereum_consensus/p2p/peerbook.ex @@ -111,24 +111,26 @@ defmodule LambdaEthereumConsensus.P2P.Peerbook do defp prune() do peerbook = fetch_peerbook!() len = map_size(peerbook) + prune_size = if len > 0, do: calculate_prune_size(peerbook, len), else: 0 - if len != 0 do - prune_size = - (len * @prune_percentage) - |> round() - |> min(@max_prune_size) - |> min(len - @target_peers) - |> max(0) - - if prune_size > 0 do - peerbook - |> Enum.sort_by(fn {_peer_id, score} -> -score end) - |> Enum.take(prune_size) - |> Enum.each(fn peer_id -> Task.start(__MODULE__, :challenge_peer, [peer_id]) end) - end + if prune_size > 0 do + Logger.debug("[Peerbook] Pruning #{prune_size} peers by challenge") + + peerbook + |> Enum.sort_by(fn {_peer_id, score} -> -score end) + |> Enum.take(prune_size) + |> Enum.each(fn peer_id -> Task.start(__MODULE__, :challenge_peer, [peer_id]) end) end end + defp calculate_prune_size(peerbook, len) do + (len * @prune_percentage) + |> round() + |> min(@max_prune_size) + |> min(len - @target_peers) + |> max(0) + end + defp store_peerbook(peerbook), do: put("", peerbook) defp fetch_peerbook(), do: get("")