From 7db9fad3370b5f272a42f542d39a79589ff5d73b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Christopher=20Cot=C3=A9?= Date: Fri, 4 Dec 2020 23:27:22 -0600 Subject: [PATCH] change how live node is filtered --- lib/router/session.ex | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) 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 -- 2.45.3