diff options
author | Matthew Sackman <matthew@rabbitmq.com> | 2011-01-14 13:21:32 +0000 |
---|---|---|
committer | Matthew Sackman <matthew@rabbitmq.com> | 2011-01-14 13:21:32 +0000 |
commit | ea7785249e7e7cfcc1d22dc621a680e47a271cd9 (patch) | |
tree | 34e337bb83e1d5594bcf76be416391e6a1c9cc60 | |
parent | 99297ce0fc3c1939b0dc4c9df103cf1a5f81250d (diff) | |
download | rabbitmq-server-ea7785249e7e7cfcc1d22dc621a680e47a271cd9.tar.gz |
And now it works
-rw-r--r-- | src/rabbit_msg_store.erl | 4 | ||||
-rw-r--r-- | src/rabbit_variable_queue.erl | 8 |
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. |