summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Sackman <matthew@lshift.net>2010-01-08 23:08:41 +0000
committerMatthew Sackman <matthew@lshift.net>2010-01-08 23:08:41 +0000
commitb75e805c8efe82e4f957ce1f1e962901dd9986ca (patch)
treef65ddc5f02d26df94bf74f0f943195469054e6e4
parent810c620e5d5d06381f901af488ec5b8b838440c9 (diff)
downloadrabbitmq-server-b75e805c8efe82e4f957ce1f1e962901dd9986ca.tar.gz
Scanning the common operation, so that should be prioritied. The open->close transition is much rarer (only on GC startup and file deletion) so can be slower.
-rw-r--r--src/rabbit_msg_store.erl12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/rabbit_msg_store.erl b/src/rabbit_msg_store.erl
index b66564bb..59b283cf 100644
--- a/src/rabbit_msg_store.erl
+++ b/src/rabbit_msg_store.erl
@@ -276,7 +276,7 @@ read(MsgId, CState) ->
%% already open.
%% this is fine to fail (already exists)
ets:insert_new(?FILE_HANDLES_ETS_NAME,
- {{File, self()}, open}),
+ {{self(), File}, open}),
CState1 = close_all_indicated(CState),
{Hdl, CState3} =
get_read_handle(File, CState1),
@@ -320,8 +320,8 @@ read(MsgId, CState) ->
end.
close_all_indicated(CState) ->
- Objs = ets:match_object(?FILE_HANDLES_ETS_NAME, {{'_', self()}, close}),
- lists:foldl(fun ({Key = {File, _Self}, close}, CStateM) ->
+ Objs = ets:match_object(?FILE_HANDLES_ETS_NAME, {{self(), '_'}, close}),
+ lists:foldl(fun ({Key = {_Self, File}, close}, CStateM) ->
true = ets:delete(?FILE_HANDLES_ETS_NAME, Key),
close_handle(File, CStateM)
end, CState, Objs).
@@ -740,9 +740,9 @@ close_handle(Key, FHC) ->
close_all_handles(CState = #client_msstate { file_handle_cache = FHC }) ->
Self = self(),
- ok = dict:fold(fun (Key, Hdl, ok) ->
+ ok = dict:fold(fun (File, Hdl, ok) ->
true =
- ets:delete(?FILE_HANDLES_ETS_NAME, {Key, Self}),
+ ets:delete(?FILE_HANDLES_ETS_NAME, {Self, File}),
file_handle_cache:close(Hdl)
end, ok, FHC),
CState #client_msstate { file_handle_cache = dict:new() };
@@ -1122,7 +1122,7 @@ mark_handle_to_close(File) ->
true
end
end,
- true, ets:match_object(?FILE_HANDLES_ETS_NAME, {{File, '_'}, open})).
+ true, ets:match_object(?FILE_HANDLES_ETS_NAME, {{'_', File}, open})).
find_files_to_gc(_N, '$end_of_table') ->
undefined;