summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichal Kuratczyk <mkuratczyk@vmware.com>2023-03-24 20:05:29 +0000
committerMichal Kuratczyk <mkuratczyk@vmware.com>2023-03-24 20:05:29 +0000
commitccb31b0f28c9ecb53ba706eaa5a1ff0db76e8863 (patch)
tree48ad786d4372083c320cdb22d595f0c5a515a026
parent5b5d4d2e295aae24ae8822e324131efcdcb9d47f (diff)
downloadrabbitmq-server-git-recovery-terms-no-ram-file-ets-cache.tar.gz
Experiment with ETS on read/startrecovery-terms-no-ram-file-ets-cache
-rw-r--r--deps/rabbit/src/rabbit_queue_index.erl9
-rw-r--r--deps/rabbit/src/rabbit_recovery_terms.erl6
2 files changed, 10 insertions, 5 deletions
diff --git a/deps/rabbit/src/rabbit_queue_index.erl b/deps/rabbit/src/rabbit_queue_index.erl
index 37a05263fd..bb4017a97c 100644
--- a/deps/rabbit/src/rabbit_queue_index.erl
+++ b/deps/rabbit/src/rabbit_queue_index.erl
@@ -541,10 +541,11 @@ start(VHost, DurableQueueNames) ->
lists:foldl(
fun(QName, {RecoveryTerms, ValidDirectories}) ->
DirName = queue_name_to_dir_name(QName),
- RecoveryInfo = case rabbit_recovery_terms:read(VHost, DirName) of
- {error, _} -> non_clean_shutdown;
- {ok, Terms} -> Terms
- end,
+ [{_, RecoveryInfo}] = ets:lookup(recovery, DirName),
+ % RecoveryInfo = case ets:lookup(recovery, DirName) of
+ % {error, _} -> non_clean_shutdown;
+ % {ok, Terms} -> Terms
+ % end,
{[RecoveryInfo | RecoveryTerms],
sets:add_element(DirName, ValidDirectories)}
end, {[], sets:new()}, DurableQueueNames),
diff --git a/deps/rabbit/src/rabbit_recovery_terms.erl b/deps/rabbit/src/rabbit_recovery_terms.erl
index 9ddba02001..51f6e111bf 100644
--- a/deps/rabbit/src/rabbit_recovery_terms.erl
+++ b/deps/rabbit/src/rabbit_recovery_terms.erl
@@ -77,6 +77,7 @@ read(VHost, DirBaseName) ->
clear(VHost) ->
try
_ = dets:delete_all_objects(VHost),
+ % _ = ets:delete_all_objects(recovery),
ok
%% see start/1
catch _:badarg ->
@@ -124,7 +125,10 @@ open_table(VHost, RetriesLeft) ->
{ram_file, false},
{auto_save, infinity}],
case dets:open_file(VHost, Opts) of
- {ok, _} -> ok;
+ {ok, _} ->
+ ets:new(recovery, [named_table, set]),
+ dets:to_ets(VHost, recovery),
+ ok;
{error, Error} ->
case RetriesLeft of
0 ->