summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Watson <tim@rabbitmq.com>2013-12-19 12:39:20 +0000
committerTim Watson <tim@rabbitmq.com>2013-12-19 12:39:20 +0000
commit4a2ce63da3e7b8fe22d073cb9fcfb9a4ae0cc9e6 (patch)
tree1e68bfe624ece17213cf41623219247b57e95375
parent7f20df880f7c776bb78d04ad5e1c1bc548d7e36f (diff)
downloadrabbitmq-server-4a2ce63da3e7b8fe22d073cb9fcfb9a4ae0cc9e6.tar.gz
Tidy of specs and further re-working of tests
-rw-r--r--src/rabbit_amqqueue.erl2
-rw-r--r--src/rabbit_amqqueue_process.erl2
-rw-r--r--src/rabbit_backing_queue.erl11
-rw-r--r--src/rabbit_queue_index.erl3
-rw-r--r--src/rabbit_tests.erl6
5 files changed, 12 insertions, 12 deletions
diff --git a/src/rabbit_amqqueue.erl b/src/rabbit_amqqueue.erl
index f611573b..146ac776 100644
--- a/src/rabbit_amqqueue.erl
+++ b/src/rabbit_amqqueue.erl
@@ -117,7 +117,7 @@
(rabbit_types:amqqueue())
-> [{pid(), rabbit_types:ctag(), boolean(),
rabbit_framing:amqp_table()}]).
--spec(queue_name_to_dir_name/1 :: (rabbit_types:amqqueue()) -> string()).
+-spec(queue_name_to_dir_name/1 :: (rabbit_types:r('queue')) -> string()).
-spec(consumer_info_keys/0 :: () -> rabbit_types:info_keys()).
-spec(consumers_all/1 ::
(rabbit_types:vhost())
diff --git a/src/rabbit_amqqueue_process.erl b/src/rabbit_amqqueue_process.erl
index 3af2993e..4c4ebb25 100644
--- a/src/rabbit_amqqueue_process.erl
+++ b/src/rabbit_amqqueue_process.erl
@@ -226,7 +226,7 @@ recovery_status(new) ->
recovery_status({Recover, _}) ->
{true, Recover}.
-matches(new, Q1, Q2) ->
+matches(false, Q1, Q2) ->
%% i.e. not policy
Q1#amqqueue.name =:= Q2#amqqueue.name andalso
Q1#amqqueue.durable =:= Q2#amqqueue.durable andalso
diff --git a/src/rabbit_backing_queue.erl b/src/rabbit_backing_queue.erl
index 603c34a9..9943d732 100644
--- a/src/rabbit_backing_queue.erl
+++ b/src/rabbit_backing_queue.erl
@@ -27,8 +27,8 @@
('empty' | {rabbit_types:basic_message(), boolean(), Ack})).
-type(drop_result(Ack) ::
('empty' | {rabbit_types:msg_id(), Ack})).
--type(recovery_terms() :: [{file:filename(), [term()]}]).
--type(attempt_recovery() :: {boolean(), recovery_terms()}).
+-type(recovery_terms() :: [term()] | 'non_clean_shutdown').
+-type(recovery_info() :: 'new' | {pid(), recovery_terms()}).
-type(purged_msg_count() :: non_neg_integer()).
-type(async_callback() ::
fun ((atom(), fun ((atom(), state()) -> state())) -> 'ok')).
@@ -52,15 +52,16 @@
%%
%% Takes
%% 1. the amqqueue record
-%% 2. a boolean indicating whether the queue is an existing queue that
-%% should be recovered
+%% 2. a term indicating whether the queue is an existing queue that
+%% should be recovered or not, possibly containing recovery terms
+%% to be used in the recovery process
%% 3. an asynchronous callback which accepts a function of type
%% backing-queue-state to backing-queue-state. This callback
%% function can be safely invoked from any process, which makes it
%% useful for passing messages back into the backing queue,
%% especially as the backing queue does not have control of its own
%% mailbox.
--callback init(rabbit_types:amqqueue(), attempt_recovery(),
+-callback init(rabbit_types:amqqueue(), recovery_info(),
async_callback()) -> state().
%% Called on queue shutdown when queue isn't being deleted.
diff --git a/src/rabbit_queue_index.erl b/src/rabbit_queue_index.erl
index 95cb9d97..03c9db50 100644
--- a/src/rabbit_queue_index.erl
+++ b/src/rabbit_queue_index.erl
@@ -221,7 +221,8 @@
-spec(next_segment_boundary/1 :: (seq_id()) -> seq_id()).
-spec(bounds/1 :: (qistate()) ->
{non_neg_integer(), non_neg_integer(), qistate()}).
--spec(recover/1 :: ([rabbit_amqqueue:name()]) -> {[[any()]], {walker(A), A}}).
+-spec(recover/1 :: ([rabbit_amqqueue:name()]) ->
+ {[{file:filename(), [any()]}], {walker(A), A}}).
-spec(scan/3 :: (file:filename(),
fun ((seq_id(), rabbit_types:msg_id(),
diff --git a/src/rabbit_tests.erl b/src/rabbit_tests.erl
index 38af6dd5..bb923440 100644
--- a/src/rabbit_tests.erl
+++ b/src/rabbit_tests.erl
@@ -2129,12 +2129,10 @@ test_queue() ->
init_test_queue() ->
TestQueue = test_queue(),
- %% TODO: shutdown_terms is no longer relevant - rework this test case
- Terms = rabbit_queue_index:shutdown_terms(TestQueue),
- PRef = proplists:get_value(persistent_ref, Terms, rabbit_guid:gen()),
+ PRef = rabbit_guid:gen(),
PersistentClient = msg_store_client_init(?PERSISTENT_MSG_STORE, PRef),
Res = rabbit_queue_index:recover(
- TestQueue, {clean_shutdown, Terms}, false,
+ TestQueue, {clean_shutdown, []}, false,
fun (MsgId) ->
rabbit_msg_store:contains(MsgId, PersistentClient)
end,