Skip to content

Commit

Permalink
Fix nil check in Nebulex.Adapters.Multilevel.get/3 (#205)
Browse files Browse the repository at this point in the history
Co-authored-by: Niels Henrik Egsgaard <[email protected]>
  • Loading branch information
1100x1100 and Niels Henrik Egsgaard committed May 25, 2023
1 parent 909b967 commit c6d8d18
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 3 deletions.
8 changes: 5 additions & 3 deletions lib/nebulex/adapters/multilevel.ex
Original file line number Diff line number Diff line change
Expand Up @@ -313,10 +313,12 @@ defmodule Nebulex.Adapters.Multilevel do
@impl true
defspan get(adapter_meta, key, opts) do
fun = fn level, {default, prev} ->
if value = with_dynamic_cache(level, :get, [key, opts]) do
{:halt, {value, [level | prev]}}
else
value = with_dynamic_cache(level, :get, [key, opts])

if is_nil(value) do
{:cont, {default, [level | prev]}}
else
{:halt, {value, [level | prev]}}
end
end

Expand Down
8 changes: 8 additions & 0 deletions test/nebulex/adapters/multilevel_inclusive_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,14 @@ defmodule Nebulex.Adapters.MultilevelInclusiveTest do
assert Multilevel.get(3, level: 2) == 3
end

test "get boolean" do
:ok = Multilevel.put(1, true, level: 1)
:ok = Multilevel.put(2, false, level: 1)

assert Multilevel.get(1) == true
assert Multilevel.get(2) == false
end

test "fetched value is replicated with TTL on previous levels" do
assert Multilevel.put(:a, 1, ttl: 1000) == :ok
assert Multilevel.ttl(:a) > 0
Expand Down

0 comments on commit c6d8d18

Please sign in to comment.