diff options
author | Simon MacMullen <simon@rabbitmq.com> | 2014-01-10 15:17:36 +0000 |
---|---|---|
committer | Simon MacMullen <simon@rabbitmq.com> | 2014-01-10 15:17:36 +0000 |
commit | 558d079debd740c4ef2593219a443a46c54bb2f0 (patch) | |
tree | 5533affc54549dc2d63ce96829ef905118641b9b | |
parent | 58bd26a768277206f24901167850bc9c79c9f106 (diff) | |
download | rabbitmq-server-bug25910.tar.gz |
Revert changes to add proc_name via gen_server2, instead do it explicitly with a helper macro.bug25910
-rw-r--r-- | include/rabbit.hrl | 2 | ||||
-rw-r--r-- | src/gen_server2.erl | 27 | ||||
-rw-r--r-- | src/gm.erl | 4 | ||||
-rw-r--r-- | src/rabbit_amqqueue_process.erl | 4 | ||||
-rw-r--r-- | src/rabbit_channel.erl | 4 | ||||
-rw-r--r-- | src/rabbit_limiter.erl | 8 | ||||
-rw-r--r-- | src/rabbit_mirror_queue_coordinator.erl | 4 | ||||
-rw-r--r-- | src/rabbit_mirror_queue_slave.erl | 5 | ||||
-rw-r--r-- | src/rabbit_mirror_queue_sync.erl | 2 | ||||
-rw-r--r-- | src/rabbit_queue_collector.erl | 13 | ||||
-rw-r--r-- | src/rabbit_reader.erl | 2 | ||||
-rw-r--r-- | src/rabbit_writer.erl | 2 |
12 files changed, 33 insertions, 44 deletions
diff --git a/include/rabbit.hrl b/include/rabbit.hrl index bd7a0eed..afb6e576 100644 --- a/include/rabbit.hrl +++ b/include/rabbit.hrl @@ -111,3 +111,5 @@ -define(INVALID_HEADERS_KEY, <<"x-invalid-headers">>). -define(ROUTING_HEADERS, [<<"CC">>, <<"BCC">>]). -define(DELETED_HEADER, <<"BCC">>). + +-define(store_proc_name(N), rabbit_misc:store_proc_name(?MODULE, N)). diff --git a/src/gen_server2.erl b/src/gen_server2.erl index b0212e47..6690d181 100644 --- a/src/gen_server2.erl +++ b/src/gen_server2.erl @@ -81,10 +81,6 @@ %% process as sys:get_status/1 would). Pass through a function which %% can be invoked on the state, get back the result. The state is not %% modified. -%% -%% 10) The Options parameter to start / start_link can include -%% {proc_name, Name}. This name is stored in the process dictionary -%% for later debugging. %% All modifications are (C) 2009-2013 GoPivotal, Inc. @@ -287,7 +283,7 @@ behaviour_info(_Other) -> %%% Name ::= {local, atom()} | {global, atom()} %%% Mod ::= atom(), callback module implementing the 'real' server %%% Args ::= term(), init arguments (to Mod:init/1) -%%% Options ::= [{timeout, Timeout} | {debug, [Flag]} | {proc_name, term()}] +%%% Options ::= [{timeout, Timeout} | {debug, [Flag]}] %%% Flag ::= trace | log | {logfile, File} | statistics | debug %%% (debug == log && statistics) %%% Returns: {ok, Pid} | @@ -467,10 +463,6 @@ init_it(Starter, Parent, Name0, Mod, Args, Options) -> mod = Mod, queue = Queue, debug = Debug }), - case opt(proc_name, Options) of - {ok, ProcName} -> put(process_name, {Mod, ProcName}); - false -> ok - end, case catch Mod:init(Args) of {ok, State} -> proc_lib:init_ack(Starter, {ok, self()}), @@ -909,17 +901,9 @@ common_noreply(_Name, _NState, [] = _Debug) -> common_noreply(Name, NState, Debug) -> sys:handle_debug(Debug, fun print_event/3, Name, {noreply, NState}). - -common_become(Name, OldMod, NewMod, NState, Debug) -> - case get(process_name) of - {OldMod, ProcName} -> put(process_name, {NewMod, ProcName}); - _ -> ok - end, - common_become0(Name, NewMod, NState, Debug). - -common_become0(_Name, _Mod, _NState, [] = _Debug) -> +common_become(_Name, _Mod, _NState, [] = _Debug) -> []; -common_become0(Name, Mod, NState, Debug) -> +common_become(Name, Mod, NState, Debug) -> sys:handle_debug(Debug, fun print_event/3, Name, {become, Mod, NState}). handle_msg({'$gen_call', From, Msg}, GS2State = #gs2_state { mod = Mod, @@ -951,7 +935,6 @@ handle_msg(Msg, GS2State = #gs2_state { mod = Mod, state = State }) -> handle_common_reply(Reply, Msg, GS2State). handle_common_reply(Reply, Msg, GS2State = #gs2_state { name = Name, - mod = Mod0, debug = Debug}) -> case Reply of {noreply, NState} -> @@ -965,14 +948,14 @@ handle_common_reply(Reply, Msg, GS2State = #gs2_state { name = Name, time = Time1, debug = Debug1}); {become, Mod, NState} -> - Debug1 = common_become(Name, Mod0, Mod, NState, Debug), + Debug1 = common_become(Name, Mod, NState, Debug), loop(find_prioritisers( GS2State #gs2_state { mod = Mod, state = NState, time = infinity, debug = Debug1 })); {become, Mod, NState, Time1} -> - Debug1 = common_become(Name, Mod0, Mod, NState, Debug), + Debug1 = common_become(Name, Mod, NState, Debug), loop(find_prioritisers( GS2State #gs2_state { mod = Mod, state = NState, @@ -517,8 +517,7 @@ table_definitions() -> [{Name, [?TABLE_MATCH | Attributes]}]. start_link(GroupName, Module, Args, TxnFun) -> - gen_server2:start_link( - ?MODULE, [GroupName, Module, Args, TxnFun], [{proc_name, GroupName}]). + gen_server2:start_link(?MODULE, [GroupName, Module, Args, TxnFun], []). leave(Server) -> gen_server2:cast(Server, leave). @@ -543,6 +542,7 @@ forget_group(GroupName) -> ok. init([GroupName, Module, Args, TxnFun]) -> + put(process_name, {?MODULE, GroupName}), {MegaSecs, Secs, MicroSecs} = now(), random:seed(MegaSecs, Secs, MicroSecs), Self = make_member(GroupName), diff --git a/src/rabbit_amqqueue_process.erl b/src/rabbit_amqqueue_process.erl index 9cb5d6d0..08509c96 100644 --- a/src/rabbit_amqqueue_process.erl +++ b/src/rabbit_amqqueue_process.erl @@ -99,8 +99,7 @@ %%---------------------------------------------------------------------------- -start_link(Q) -> - gen_server2:start_link(?MODULE, Q, [{proc_name, Q#amqqueue.name}]). +start_link(Q) -> gen_server2:start_link(?MODULE, Q, []). info_keys() -> ?INFO_KEYS. @@ -108,6 +107,7 @@ info_keys() -> ?INFO_KEYS. init(Q) -> process_flag(trap_exit, true), + ?store_proc_name(Q#amqqueue.name), {ok, init_state(Q#amqqueue{pid = self()}), hibernate, {backoff, ?HIBERNATE_AFTER_MIN, ?HIBERNATE_AFTER_MIN, ?DESIRED_HIBERNATE}}. diff --git a/src/rabbit_channel.erl b/src/rabbit_channel.erl index 0c786c07..0dd58929 100644 --- a/src/rabbit_channel.erl +++ b/src/rabbit_channel.erl @@ -119,8 +119,7 @@ start_link(Channel, ReaderPid, WriterPid, ConnPid, ConnName, Protocol, User, VHost, Capabilities, CollectorPid, Limiter) -> gen_server2:start_link( ?MODULE, [Channel, ReaderPid, WriterPid, ConnPid, ConnName, Protocol, - User, VHost, Capabilities, CollectorPid, Limiter], - [{proc_name, {ConnName, Channel}}]). + User, VHost, Capabilities, CollectorPid, Limiter], []). do(Pid, Method) -> do(Pid, Method, none). @@ -195,6 +194,7 @@ force_event_refresh() -> init([Channel, ReaderPid, WriterPid, ConnPid, ConnName, Protocol, User, VHost, Capabilities, CollectorPid, LimiterPid]) -> process_flag(trap_exit, true), + ?store_proc_name({ConnName, Channel}), ok = pg_local:join(rabbit_channels, self()), State = #ch{state = starting, protocol = Protocol, diff --git a/src/rabbit_limiter.erl b/src/rabbit_limiter.erl index fb81dbf5..d26b27fb 100644 --- a/src/rabbit_limiter.erl +++ b/src/rabbit_limiter.erl @@ -117,6 +117,8 @@ -module(rabbit_limiter). +-include("rabbit.hrl"). + -behaviour(gen_server2). -export([start_link/1]). @@ -194,8 +196,7 @@ %% API %%---------------------------------------------------------------------------- -start_link(ProcName) -> - gen_server2:start_link(?MODULE, [], [{proc_name, ProcName}]). +start_link(ProcName) -> gen_server2:start_link(?MODULE, [ProcName], []). new(Pid) -> %% this a 'call' to ensure that it is invoked at most once. @@ -322,7 +323,8 @@ update_credit(CTag, Credit, Drain, Credits) -> %% gen_server callbacks %%---------------------------------------------------------------------------- -init([]) -> {ok, #lim{}}. +init([ProcName]) -> ?store_proc_name(ProcName), + {ok, #lim{}}. prioritise_call(get_prefetch_limit, _From, _Len, _State) -> 9; prioritise_call(_Msg, _From, _Len, _State) -> 0. diff --git a/src/rabbit_mirror_queue_coordinator.erl b/src/rabbit_mirror_queue_coordinator.erl index 0a034b6d..6661408c 100644 --- a/src/rabbit_mirror_queue_coordinator.erl +++ b/src/rabbit_mirror_queue_coordinator.erl @@ -310,8 +310,7 @@ %%---------------------------------------------------------------------------- start_link(Queue, GM, DeathFun, DepthFun) -> - gen_server2:start_link(?MODULE, [Queue, GM, DeathFun, DepthFun], - [{proc_name, Queue#amqqueue.name}]). + gen_server2:start_link(?MODULE, [Queue, GM, DeathFun, DepthFun], []). get_gm(CPid) -> gen_server2:call(CPid, get_gm, infinity). @@ -324,6 +323,7 @@ ensure_monitoring(CPid, Pids) -> %% --------------------------------------------------------------------------- init([#amqqueue { name = QueueName } = Q, GM, DeathFun, DepthFun]) -> + ?store_proc_name(QueueName), GM1 = case GM of undefined -> {ok, GM2} = gm:start_link( diff --git a/src/rabbit_mirror_queue_slave.erl b/src/rabbit_mirror_queue_slave.erl index 3027f62b..d562210a 100644 --- a/src/rabbit_mirror_queue_slave.erl +++ b/src/rabbit_mirror_queue_slave.erl @@ -71,8 +71,7 @@ %%---------------------------------------------------------------------------- -start_link(Q) -> gen_server2:start_link( - ?MODULE, Q, [{proc_name, Q#amqqueue.name}]). +start_link(Q) -> gen_server2:start_link(?MODULE, Q, []). set_maximum_since_use(QPid, Age) -> gen_server2:cast(QPid, {set_maximum_since_use, Age}). @@ -80,6 +79,7 @@ set_maximum_since_use(QPid, Age) -> info(QPid) -> gen_server2:call(QPid, info, infinity). init(Q) -> + ?store_proc_name(Q#amqqueue.name), {ok, {not_started, Q}, hibernate, {backoff, ?HIBERNATE_AFTER_MIN, ?HIBERNATE_AFTER_MIN, ?DESIRED_HIBERNATE}}. @@ -617,6 +617,7 @@ promote_me(From, #state { q = Q = #amqqueue { name = QName }, KS1 = lists:foldl(fun (ChPid0, KS0) -> pmon:demonitor(ChPid0, KS0) end, KS, AwaitGmDown), + rabbit_misc:store_proc_name(rabbit_amqqueue_process, QName), rabbit_amqqueue_process:init_with_backing_queue_state( Q1, rabbit_mirror_queue_master, MasterState, RateTRef, Deliveries, KS1, MTC). diff --git a/src/rabbit_mirror_queue_sync.erl b/src/rabbit_mirror_queue_sync.erl index b4c409b2..e3fae4c0 100644 --- a/src/rabbit_mirror_queue_sync.erl +++ b/src/rabbit_mirror_queue_sync.erl @@ -84,7 +84,7 @@ master_prepare(Ref, QName, Log, SPids) -> MPid = self(), spawn_link(fun () -> - rabbit_misc:store_proc_name(?MODULE, QName), + ?store_proc_name(QName), syncer(Ref, Log, MPid, SPids) end). diff --git a/src/rabbit_queue_collector.erl b/src/rabbit_queue_collector.erl index 1620f89a..855c7995 100644 --- a/src/rabbit_queue_collector.erl +++ b/src/rabbit_queue_collector.erl @@ -16,7 +16,7 @@ -module(rabbit_queue_collector). --behaviour(gen_server2). +-behaviour(gen_server). -export([start_link/1, register/2, delete_all/1]). @@ -41,17 +41,18 @@ %%---------------------------------------------------------------------------- start_link(ProcName) -> - gen_server2:start_link(?MODULE, [], [{proc_name, ProcName}]). + gen_server:start_link(?MODULE, [ProcName], []). register(CollectorPid, Q) -> - gen_server2:call(CollectorPid, {register, Q}, infinity). + gen_server:call(CollectorPid, {register, Q}, infinity). delete_all(CollectorPid) -> - gen_server2:call(CollectorPid, delete_all, infinity). + gen_server:call(CollectorPid, delete_all, infinity). %%---------------------------------------------------------------------------- -init([]) -> +init([ProcName]) -> + ?store_proc_name(ProcName), {ok, #state{monitors = pmon:new(), delete_from = undefined}}. %%-------------------------------------------------------------------------- @@ -79,7 +80,7 @@ handle_info({'DOWN', _MRef, process, DownPid, _Reason}, State = #state{monitors = QMons, delete_from = Deleting}) -> QMons1 = pmon:erase(DownPid, QMons), case Deleting =/= undefined andalso pmon:is_empty(QMons1) of - true -> gen_server2:reply(Deleting, ok); + true -> gen_server:reply(Deleting, ok); false -> ok end, {noreply, State#state{monitors = QMons1}}. diff --git a/src/rabbit_reader.erl b/src/rabbit_reader.erl index 6d70f1bd..8553e36d 100644 --- a/src/rabbit_reader.erl +++ b/src/rabbit_reader.erl @@ -214,7 +214,7 @@ start_connection(Parent, HelperSup, Deb, Sock, SockTransform) -> erlang:send_after(?HANDSHAKE_TIMEOUT * 1000, self(), handshake_timeout), {PeerHost, PeerPort, Host, Port} = socket_op(Sock, fun (S) -> rabbit_net:socket_ends(S, inbound) end), - rabbit_misc:store_proc_name(?MODULE, list_to_binary(Name)), + ?store_proc_name(list_to_binary(Name)), State = #v1{parent = Parent, sock = ClientSock, connection = #connection{ diff --git a/src/rabbit_writer.erl b/src/rabbit_writer.erl index 64ddb092..3571692b 100644 --- a/src/rabbit_writer.erl +++ b/src/rabbit_writer.erl @@ -144,7 +144,7 @@ system_code_change(Misc, _Module, _OldVsn, _Extra) -> enter_mainloop(Identity, State) -> Deb = sys:debug_options([]), - rabbit_misc:store_proc_name(?MODULE, Identity), + ?store_proc_name(Identity), mainloop(Deb, State). mainloop(Deb, State) -> |