]> Entropealabs - cluster_kv.git/commitdiff
use send instead of cast for sync messages
authorChristopher <chris@entropealabs.com>
Sat, 7 Mar 2020 18:58:58 +0000 (12:58 -0600)
committerChristopher <chris@entropealabs.com>
Sat, 7 Mar 2020 18:58:58 +0000 (12:58 -0600)
lib/cluster_kv/ring.ex

index e69bc7534aad27823c0d3601ef2034902e1d53bb..64864143c3fec59dbe49f278020bd82c4f750cc3 100644 (file)
@@ -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