From: Christopher Date: Sat, 7 Mar 2020 18:58:58 +0000 (-0600) Subject: use send instead of cast for sync messages X-Git-Url: http://git.entropealabs.com/?a=commitdiff_plain;h=cdd511288d22d4dd16f3e941bd8b60649d2425fd;p=cluster_kv.git use send instead of cast for sync messages --- diff --git a/lib/cluster_kv/ring.ex b/lib/cluster_kv/ring.ex index e69bc75..6486414 100644 --- a/lib/cluster_kv/ring.ex +++ b/lib/cluster_kv/ring.ex @@ -153,13 +153,13 @@ defmodule ClusterKV.Ring do %SL{data: %Ring{name: n, ring: r, replicas: repls}} = sl ) do nodes = HashRing.key_to_nodes(r, key, repls) - cast_sync(n, nodes, key, value) + send_sync(n, nodes, key, value) {:ok, sl, []} end def handle_cast({:put, _key, _value}, _, sl), do: {:ok, sl, []} - def handle_cast({:sync, keys}, @ready, %SL{data: %Ring{db: db}} = sl) do + def handle_info({:sync, keys}, @ready, %SL{data: %Ring{db: db}} = sl) do Enum.each(keys, fn {key, value} -> DB.put(db, key, value) end) @@ -167,7 +167,7 @@ defmodule ClusterKV.Ring do {:ok, sl, []} end - def handle_cast({:sync, _keys}, _, sl), do: {:ok, sl, []} + def handle_info({:sync, _keys}, _, sl), do: {:ok, sl, []} def handle_info({:get_key, key, ref, node}, @ready, %SL{data: %Ring{name: n, db: db}} = sl) do val = DB.get(db, key) @@ -245,7 +245,7 @@ defmodule ClusterKV.Ring do end) Logger.debug("Sync: #{key}: #{inspect(v)}") - cast_sync(name, nodes, key, v) + send_sync(name, nodes, key, v) end) end) |> Stream.run() @@ -293,10 +293,10 @@ defmodule ClusterKV.Ring do end) end - defp cast_sync(name, nodes, key, value) do + defp send_sync(name, nodes, key, value) do Enum.each(nodes, fn n -> Logger.info("Sending #{key} to #{n}") - :gen_statem.cast({name, n}, {:sync, [{key, value}]}) + send({name, n}, {:sync, [{key, value}]}) end) end