%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)
{: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)
end)
Logger.debug("Sync: #{key}: #{inspect(v)}")
- cast_sync(name, nodes, key, v)
+ send_sync(name, nodes, key, v)
end)
end)
|> Stream.run()
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