diff --git a/lib/rkv.ex b/lib/rkv.ex index 2b9357d..ec2bfd1 100644 --- a/lib/rkv.ex +++ b/lib/rkv.ex @@ -173,9 +173,10 @@ defmodule Rkv do """ @spec delete(bucket(), key()) :: :ok def delete(bucket, key) do - bucket |> ets() |> :ets.delete(key) - broadcast_delete(bucket, key) - :ok + case bucket |> ets() |> :ets.take(key) do + [_entry] -> broadcast_delete(bucket, key) + [] -> :ok + end end @doc """ diff --git a/test/rkv_test.exs b/test/rkv_test.exs index c5dda33..7e63610 100644 --- a/test/rkv_test.exs +++ b/test/rkv_test.exs @@ -99,6 +99,12 @@ defmodule RkvTest do assert Rkv.delete(bucket, :foo) == :ok assert Rkv.get(bucket, :foo) == nil end + + test "does not notify when the key does not exist", %{bucket: bucket} do + :ok = Rkv.watch_all(bucket) + assert Rkv.delete(bucket, :missing) == :ok + refute_received {:deleted, ^bucket, :missing} + end end describe "exists?" do