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
commit3a746c1e5e1125891aa48490649ea7144a905463 (patch)
tree34e337bb83e1d5594bcf76be416391e6a1c9cc60
parenta9e8d35cc4a20f19427d7adf44ad1a054e1cec14 (diff)
downloadrabbitmq-server-git-3a746c1e5e1125891aa48490649ea7144a905463.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 ff6f732d34..9c98324c18 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 8c048575a8..4d56e48b22 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.