summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Sackman <matthew@rabbitmq.com>2011-01-14 13:21:32 +0000
committerMatthew Sackman <matthew@rabbitmq.com>2011-01-14 13:21:32 +0000
commitea7785249e7e7cfcc1d22dc621a680e47a271cd9 (patch)
tree34e337bb83e1d5594bcf76be416391e6a1c9cc60
parent99297ce0fc3c1939b0dc4c9df103cf1a5f81250d (diff)
downloadrabbitmq-server-ea7785249e7e7cfcc1d22dc621a680e47a271cd9.tar.gz
And now it works
-rw-r--r--src/rabbit_msg_store.erl4
-rw-r--r--src/rabbit_variable_queue.erl8
2 files changed, 7 insertions, 5 deletions
diff --git a/src/rabbit_msg_store.erl b/src/rabbit_msg_store.erl
index ff6f732d..9c98324c 100644
--- a/src/rabbit_msg_store.erl
+++ b/src/rabbit_msg_store.erl
@@ -1262,7 +1262,9 @@ safe_file_delete_fun(FileHandlesEts, File, Dir) ->
fun () -> safe_file_delete(FileHandlesEts, File, Dir) end.
safe_file_delete(FileHandlesEts, File, Dir) ->
- case ets:match_object(FileHandlesEts, {{'_', File}, open}, 1) of
+ %% do not match on any value - it's the absence of the row that
+ %% indicates the client has really closed the file.
+ case ets:match_object(FileHandlesEts, {{'_', File}, '_'}, 1) of
{[_|_], _Cont} ->
false;
_ ->
diff --git a/src/rabbit_variable_queue.erl b/src/rabbit_variable_queue.erl
index 8c048575..4d56e48b 100644
--- a/src/rabbit_variable_queue.erl
+++ b/src/rabbit_variable_queue.erl
@@ -967,7 +967,7 @@ msg_store_sync(MSCState, IsPersistent, Guids, Callback) ->
msg_store_close_fds(MSCState, IsPersistent) ->
with_msg_store_state(
MSCState, IsPersistent,
- fun (MSCState1) -> rabbit_msg_store:close_all_indicated(MSCState1) end).
+ fun (MSCState1) -> {ok, rabbit_msg_store:close_all_indicated(MSCState1)} end).
msg_store_close_fds_fun(IsPersistent) ->
Self = self(),
@@ -975,9 +975,9 @@ msg_store_close_fds_fun(IsPersistent) ->
rabbit_amqqueue:maybe_run_queue_via_backing_queue_async(
Self,
fun (State = #vqstate { msg_store_clients = MSCState }) ->
- {[], State #vqstate { msg_store_clients =
- msg_store_close_fds(
- MSCState, IsPersistent) }}
+ {ok, MSCState1} =
+ msg_store_close_fds(MSCState, IsPersistent),
+ {[], State #vqstate { msg_store_clients = MSCState1 }}
end)
end.