]> Entropealabs - wampex_router.git/commitdiff
change how live node is filtered
authorChristopher Coté <ccote@cohesionib.com>
Sat, 5 Dec 2020 05:27:22 +0000 (23:27 -0600)
committerChristopher Coté <ccote@cohesionib.com>
Sat, 5 Dec 2020 05:27:22 +0000 (23:27 -0600)
lib/router/session.ex

index 5cba8367fcbb01930de717b36ba216c43eac567e..6cabd498ad3f8eac13e9e8e301e5dbc20e5ff42e 100644 (file)
@@ -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