Skip to content

Commit ae63a44

Browse files
Merge branch 'stable'
2 parents 7ba2571 + 990bc9a commit ae63a44

File tree

3 files changed

+176
-74
lines changed

3 files changed

+176
-74
lines changed

ebin/rabbit_app.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
%% breaks the QPid Java client
2727
{frame_max, 131072},
2828
{channel_max, 0},
29-
{heartbeat, 580},
29+
{heartbeat, 60},
3030
{msg_store_file_size_limit, 16777216},
3131
{fhc_write_buffering, true},
3232
{fhc_read_buffering, true},

src/rabbit_queue_index.erl

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
-module(rabbit_queue_index).
1818

19-
-export([erase/1, init/3, recover/6,
19+
-export([erase/1, init/3, reset_state/1, recover/6,
2020
terminate/2, delete_and_terminate/1,
2121
pre_publish/7, flush_pre_publish_cache/2,
2222
publish/6, deliver/2, ack/2, sync/1, needs_sync/1, flush/1,
@@ -224,6 +224,7 @@
224224
-type(shutdown_terms() :: [term()] | 'non_clean_shutdown').
225225

226226
-spec(erase/1 :: (rabbit_amqqueue:name()) -> 'ok').
227+
-spec(reset_state/1 :: (qistate()) -> qistate()).
227228
-spec(init/3 :: (rabbit_amqqueue:name(),
228229
on_sync_fun(), on_sync_fun()) -> qistate()).
229230
-spec(recover/6 :: (rabbit_amqqueue:name(), shutdown_terms(), boolean(),
@@ -261,10 +262,19 @@
261262

262263
erase(Name) ->
263264
#qistate { dir = Dir } = blank_state(Name),
264-
case rabbit_file:is_dir(Dir) of
265-
true -> rabbit_file:recursive_delete([Dir]);
266-
false -> ok
267-
end.
265+
erase_index_dir(Dir).
266+
267+
%% used during variable queue purge when there are no pending acks
268+
reset_state(#qistate{ dir = Dir,
269+
on_sync = OnSyncFun,
270+
on_sync_msg = OnSyncMsgFun,
271+
journal_handle = JournalHdl }) ->
272+
ok = erase_index_dir(Dir),
273+
ok = case JournalHdl of
274+
undefined -> ok;
275+
_ -> file_handle_cache:close(JournalHdl)
276+
end,
277+
blank_state_dir_funs(Dir, OnSyncFun, OnSyncMsgFun).
268278

269279
init(Name, OnSyncFun, OnSyncMsgFun) ->
270280
State = #qistate { dir = Dir } = blank_state(Name),
@@ -507,20 +517,31 @@ all_queue_directory_names(Dir) ->
507517
%% startup and shutdown
508518
%%----------------------------------------------------------------------------
509519

520+
erase_index_dir(Dir) ->
521+
case rabbit_file:is_dir(Dir) of
522+
true -> rabbit_file:recursive_delete([Dir]);
523+
false -> ok
524+
end.
525+
510526
blank_state(QueueName) ->
511527
blank_state_dir(
512528
filename:join(queues_dir(), queue_name_to_dir_name(QueueName))).
513529

514530
blank_state_dir(Dir) ->
531+
blank_state_dir_funs(Dir,
532+
fun (_) -> ok end,
533+
fun (_) -> ok end).
534+
535+
blank_state_dir_funs(Dir, OnSyncFun, OnSyncMsgFun) ->
515536
{ok, MaxJournal} =
516537
application:get_env(rabbit, queue_index_max_journal_entries),
517538
#qistate { dir = Dir,
518539
segments = segments_new(),
519540
journal_handle = undefined,
520541
dirty_count = 0,
521542
max_journal_entries = MaxJournal,
522-
on_sync = fun (_) -> ok end,
523-
on_sync_msg = fun (_) -> ok end,
543+
on_sync = OnSyncFun,
544+
on_sync_msg = OnSyncMsgFun,
524545
unconfirmed = gb_sets:new(),
525546
unconfirmed_msg = gb_sets:new(),
526547
pre_publish_cache = [],

0 commit comments

Comments
 (0)