~ubuntu-branches/ubuntu/saucy/rabbitmq-server/saucy

« back to all changes in this revision

Viewing changes to src/rabbit_amqqueue.erl

  • Committer: Package Import Robot
  • Author(s): Emile Joubert
  • Date: 2013-03-13 10:53:18 UTC
  • mfrom: (0.5.1) (0.1.36 sid)
  • Revision ID: package-import@ubuntu.com-20130313105318-8juqvm5209o27hbu
Tags: 3.0.4-1
New upstream release

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
-module(rabbit_amqqueue).
18
18
 
19
19
-export([recover/0, stop/0, start/1, declare/5,
20
 
         delete_immediately/1, delete/3, purge/1]).
 
20
         delete_immediately/1, delete/3, purge/1, forget_all_durable/1]).
21
21
-export([pseudo_queue/2]).
22
22
-export([lookup/1, not_found_or_absent/1, with/2, with/3, with_or_die/2,
23
23
         assert_equivalence/5,
134
134
           rabbit_types:error('in_use') |
135
135
           rabbit_types:error('not_empty')).
136
136
-spec(purge/1 :: (rabbit_types:amqqueue()) -> qlen()).
 
137
-spec(forget_all_durable/1 :: (node()) -> 'ok').
137
138
-spec(deliver/2 :: ([rabbit_types:amqqueue()], rabbit_types:delivery()) ->
138
139
                        {routing_result(), qpids()}).
139
140
-spec(deliver_flow/2 :: ([rabbit_types:amqqueue()], rabbit_types:delivery()) ->
585
586
              end
586
587
      end).
587
588
 
 
589
forget_all_durable(Node) ->
 
590
    %% Note rabbit is not running so we avoid e.g. the worker pool. Also why
 
591
    %% we don't invoke the return from rabbit_binding:process_deletions/1.
 
592
    {atomic, ok} =
 
593
        mnesia:sync_transaction(
 
594
          fun () ->
 
595
                  Qs = mnesia:match_object(rabbit_durable_queue,
 
596
                                           #amqqueue{_ = '_'}, write),
 
597
                  [rabbit_binding:process_deletions(
 
598
                     internal_delete1(Name)) ||
 
599
                      #amqqueue{name = Name, pid = Pid} = Q <- Qs,
 
600
                      node(Pid) =:= Node,
 
601
                      rabbit_policy:get(<<"ha-mode">>, Q)
 
602
                          =:= {error, not_found}],
 
603
                  ok
 
604
          end),
 
605
    ok.
 
606
 
588
607
run_backing_queue(QPid, Mod, Fun) ->
589
608
    gen_server2:cast(QPid, {run_backing_queue, Mod, Fun}).
590
609