From: Christopher Coté Date: Sat, 5 Dec 2020 05:27:22 +0000 (-0600) Subject: change how live node is filtered X-Git-Url: http://git.entropealabs.com/?a=commitdiff_plain;h=7db9fad3370b5f272a42f542d39a79589ff5d73b;p=wampex_router.git change how live node is filtered --- diff --git a/lib/router/session.ex b/lib/router/session.ex index 5cba836..6cabd49 100644 --- a/lib/router/session.ex +++ b/lib/router/session.ex @@ -775,18 +775,16 @@ defmodule Wampex.Router.Session do end defp get_live_callee(proxy, callees, index, tries) when is_list(callees) do - {_id, {pid, node}} = c = Enum.at(callees, index, Enum.at(callees, 0)) + {_id, {_pid, node}} = c = Enum.at(callees, index, Enum.at(callees, 0)) - case GenServer.call({proxy, node}, {:is_up, pid}) do + nodes = [Node.self() | Node.list()] + + case node in nodes do true -> c false -> - index = - case index + 1 do - ni when ni < length(callees) -> ni - _ -> 0 - end + index = get_round_robin_index(index, callees) get_live_callee(proxy, callees, index, tries - 1) end @@ -800,6 +798,13 @@ defmodule Wampex.Router.Session do {:error, :no_live_callees} end + defp get_round_robin_index(index, callees) do + case index + 1 do + ni when ni < length(callees) -> ni + _ -> 0 + end + end + defp send_to_peer(msg, transport, pid) do transport.send_request(pid, remove_nil_values(msg)) end