Skip to content

Commit

Permalink
Correct an issue with false positive key loading
Browse files Browse the repository at this point in the history
  • Loading branch information
whitfin committed Apr 9, 2016
1 parent 9738c81 commit 81dc6aa
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 33 deletions.
17 changes: 6 additions & 11 deletions lib/cachex/worker/local.ex
Original file line number Diff line number Diff line change
Expand Up @@ -36,17 +36,12 @@ defmodule Cachex.Worker.Local do

case val do
:missing ->
{ status, new_value } =
result =
state
|> Util.get_fallback(key, fb_fun)

state
|> Worker.set(key, new_value)

case status do
:ok -> { :missing, new_value }
:loaded -> result
case Util.get_fallback(state, key, fb_fun) do
{ :ok, new_value } ->
{ :missing, new_value }
{ :loaded, new_value } = result ->
Worker.set(state, key, new_value)
result
end
val ->
{ :ok, val }
Expand Down
17 changes: 6 additions & 11 deletions lib/cachex/worker/remote.ex
Original file line number Diff line number Diff line change
Expand Up @@ -36,17 +36,12 @@ defmodule Cachex.Worker.Remote do

case val do
:missing ->
{ status, new_value } =
result =
state
|> Util.get_fallback(key, fb_fun)

state
|> Worker.set(key, new_value)

case status do
:ok -> { :missing, new_value }
:loaded -> result
case Util.get_fallback(state, key, fb_fun) do
{ :ok, new_value } ->
{ :missing, new_value }
{ :loaded, new_value } = result ->
Worker.set(state, key, new_value)
result
end
val ->
{ :ok, val }
Expand Down
17 changes: 6 additions & 11 deletions lib/cachex/worker/transactional.ex
Original file line number Diff line number Diff line change
Expand Up @@ -35,17 +35,12 @@ defmodule Cachex.Worker.Transactional do

case val do
:missing ->
{ status, new_value } =
result =
state
|> Util.get_fallback(key, fb_fun)

state
|> Worker.set(key, new_value)

case status do
:ok -> { :missing, new_value }
:loaded -> result
case Util.get_fallback(state, key, fb_fun) do
{ :ok, new_value } ->
{ :missing, new_value }
{ :loaded, new_value } = result ->
Worker.set(state, key, new_value)
result
end
val ->
{ :ok, val }
Expand Down

0 comments on commit 81dc6aa

Please sign in to comment.