Skip to content
This repository has been archived by the owner on Nov 17, 2020. It is now read-only.

Commit

Permalink
Merge branch 'master' into rabbitmq-server-500
Browse files Browse the repository at this point in the history
  • Loading branch information
michaelklishin committed Feb 3, 2016
2 parents 9720d12 + 56c8d46 commit 827b854
Show file tree
Hide file tree
Showing 12 changed files with 275 additions and 13 deletions.
2 changes: 0 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ BUILD_DEPS = rabbitmq_codegen
DEPS = lager
TEST_DEPS = mochiweb

dep_lager = git https://github.com/rabbitmq/lager.git master

.DEFAULT_GOAL = all

EXTRA_SOURCES += include/rabbit_framing.hrl \
Expand Down
7 changes: 7 additions & 0 deletions src/rabbit_auth_mechanism.erl
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@

-module(rabbit_auth_mechanism).

-behaviour(rabbit_registry_class).

-export([added_to_rabbit_registry/2, removed_from_rabbit_registry/1]).

-ifdef(use_specs).

%% A description.
Expand Down Expand Up @@ -54,3 +58,6 @@ behaviour_info(_Other) ->
undefined.

-endif.

added_to_rabbit_registry(_Type, _ModuleName) -> ok.
removed_from_rabbit_registry(_Type) -> ok.
15 changes: 15 additions & 0 deletions src/rabbit_channel.erl
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@
-export([list/0, info_keys/0, info/1, info/2, info_all/0, info_all/1,
info_all/3]).
-export([refresh_config_local/0, ready_for_close/1]).
-export([refresh_interceptors/0]).
-export([force_event_refresh/1]).

-export([init/1, terminate/2, code_change/3, handle_call/3, handle_cast/2,
Expand Down Expand Up @@ -149,6 +150,8 @@

-define(MAX_PERMISSION_CACHE_SIZE, 12).

-define(REFRESH_TIMEOUT, 15000).

-define(STATISTICS_KEYS,
[pid,
transactional,
Expand Down Expand Up @@ -337,6 +340,12 @@ refresh_config_local() ->
list_local()),
ok.

refresh_interceptors() ->
rabbit_misc:upmap(
fun (C) -> gen_server2:call(C, refresh_interceptors, ?REFRESH_TIMEOUT) end,
list_local()),
ok.

ready_for_close(Pid) ->
gen_server2:cast(Pid, ready_for_close).

Expand Down Expand Up @@ -430,6 +439,10 @@ handle_call({info, Items}, _From, State) ->
handle_call(refresh_config, _From, State = #ch{virtual_host = VHost}) ->
reply(ok, State#ch{trace_state = rabbit_trace:init(VHost)});

handle_call(refresh_interceptors, _From, State) ->
IState = rabbit_channel_interceptor:init(State),
reply(ok, State#ch{interceptor_state = IState});

handle_call({declare_fast_reply_to, Key}, _From,
State = #ch{reply_consumer = Consumer}) ->
reply(case Consumer of
Expand Down Expand Up @@ -1977,6 +1990,8 @@ i(state, #ch{state = State}) -> State;
i(prefetch_count, #ch{consumer_prefetch = C}) -> C;
i(global_prefetch_count, #ch{limiter = Limiter}) ->
rabbit_limiter:get_prefetch_limit(Limiter);
i(interceptors, #ch{interceptor_state = IState}) ->
IState;
i(Item, _) ->
throw({bad_argument, Item}).

Expand Down
9 changes: 9 additions & 0 deletions src/rabbit_channel_interceptor.erl
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@

-export([init/1, intercept_in/3]).

-behaviour(rabbit_registry_class).

-export([added_to_rabbit_registry/2, removed_from_rabbit_registry/1]).

-ifdef(use_specs).

-type(method_name() :: rabbit_framing:amqp_method_name()).
Expand Down Expand Up @@ -51,6 +55,11 @@ behaviour_info(_Other) ->

-endif.

added_to_rabbit_registry(_Type, _ModuleName) ->
rabbit_channel:refresh_interceptors().
removed_from_rabbit_registry(_Type) ->
rabbit_channel:refresh_interceptors().

init(Ch) ->
Mods = [M || {_, M} <- rabbit_registry:lookup_all(channel_interceptor)],
check_no_overlap(Mods),
Expand Down
23 changes: 12 additions & 11 deletions src/rabbit_exchange_decorator.erl
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,11 @@

-include("rabbit.hrl").

-export([select/2, set/1, register/2, unregister/1]).
-export([select/2, set/1]).

-behaviour(rabbit_registry_class).

-export([added_to_rabbit_registry/2, removed_from_rabbit_registry/1]).

%% This is like an exchange type except that:
%%
Expand Down Expand Up @@ -84,6 +88,13 @@ behaviour_info(_Other) ->

%%----------------------------------------------------------------------------

added_to_rabbit_registry(_Type, _ModuleName) ->
[maybe_recover(X) || X <- rabbit_exchange:list()],
ok.
removed_from_rabbit_registry(_Type) ->
[maybe_recover(X) || X <- rabbit_exchange:list()],
ok.

%% select a subset of active decorators
select(all, {Route, NoRoute}) -> filter(Route ++ NoRoute);
select(route, {Route, _NoRoute}) -> filter(Route);
Expand All @@ -105,16 +116,6 @@ list() -> [M || {_, M} <- rabbit_registry:lookup_all(exchange_decorator)].
cons_if_eq(Select, Select, Item, List) -> [Item | List];
cons_if_eq(_Select, _Other, _Item, List) -> List.

register(TypeName, ModuleName) ->
rabbit_registry:register(exchange_decorator, TypeName, ModuleName),
[maybe_recover(X) || X <- rabbit_exchange:list()],
ok.

unregister(TypeName) ->
rabbit_registry:unregister(exchange_decorator, TypeName),
[maybe_recover(X) || X <- rabbit_exchange:list()],
ok.

maybe_recover(X = #exchange{name = Name,
decorators = Decs}) ->
#exchange{decorators = Decs1} = set(X),
Expand Down
9 changes: 9 additions & 0 deletions src/rabbit_exchange_type.erl
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@

-module(rabbit_exchange_type).

-behaviour(rabbit_registry_class).

-export([added_to_rabbit_registry/2, removed_from_rabbit_registry/1]).

-ifdef(use_specs).

-type(tx() :: 'transaction' | 'none').
Expand Down Expand Up @@ -79,3 +83,8 @@ behaviour_info(_Other) ->
undefined.

-endif.

added_to_rabbit_registry(_Type, _ModuleName) -> ok.
removed_from_rabbit_registry(_Type) -> ok.


7 changes: 7 additions & 0 deletions src/rabbit_policy_validator.erl
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@

-module(rabbit_policy_validator).

-behaviour(rabbit_registry_class).

-export([added_to_rabbit_registry/2, removed_from_rabbit_registry/1]).

-ifdef(use_specs).

-export_type([validate_results/0]).
Expand All @@ -37,3 +41,6 @@ behaviour_info(_Other) ->
undefined.

-endif.

added_to_rabbit_registry(_Type, _ModuleName) -> ok.
removed_from_rabbit_registry(_Type) -> ok.
7 changes: 7 additions & 0 deletions src/rabbit_queue_decorator.erl
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@

-export([select/1, set/1, register/2, unregister/1]).

-behaviour(rabbit_registry_class).

-export([added_to_rabbit_registry/2, removed_from_rabbit_registry/1]).

%%----------------------------------------------------------------------------

-ifdef(use_specs).
Expand Down Expand Up @@ -51,6 +55,9 @@ behaviour_info(_Other) ->

%%----------------------------------------------------------------------------

added_to_rabbit_registry(_Type, _ModuleName) -> ok.
removed_from_rabbit_registry(_Type) -> ok.

select(Modules) ->
[M || M <- Modules, code:which(M) =/= non_existing].

Expand Down
7 changes: 7 additions & 0 deletions src/rabbit_queue_master_locator.erl
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@

-module(rabbit_queue_master_locator).

-behaviour(rabbit_registry_class).

-export([added_to_rabbit_registry/2, removed_from_rabbit_registry/1]).

-ifdef(use_specs).

-callback description() -> [proplists:property()].
Expand All @@ -31,3 +35,6 @@ behaviour_info(_Other) ->
undefined.

-endif.

added_to_rabbit_registry(_Type, _ModuleName) -> ok.
removed_from_rabbit_registry(_Type) -> ok.
Loading

0 comments on commit 827b854

Please sign in to comment.