summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Radestock <matthias@rabbitmq.com>2010-07-29 23:51:39 +0100
committerMatthias Radestock <matthias@rabbitmq.com>2010-07-29 23:51:39 +0100
commit568730fa6f898d23305aeb3a96ef53007987047e (patch)
tree88d835f9eb44bde15dc12c2adbbe7d7fefe213d3
parentbe4a2b09d6b9867dda53461fe65f88eb50f33f26 (diff)
downloadrabbitmq-server-bug23032.tar.gz
consistently return {ok, Pid} from start_{link} functionsbug23032
-rw-r--r--src/rabbit_channel.erl10
-rw-r--r--src/rabbit_framing_channel.erl15
-rw-r--r--src/rabbit_limiter.erl5
-rw-r--r--src/rabbit_reader.erl8
-rw-r--r--src/rabbit_tests.erl12
-rw-r--r--src/rabbit_writer.erl18
6 files changed, 32 insertions, 36 deletions
diff --git a/src/rabbit_channel.erl b/src/rabbit_channel.erl
index dafc3075..dd639dd0 100644
--- a/src/rabbit_channel.erl
+++ b/src/rabbit_channel.erl
@@ -78,7 +78,7 @@
-spec(start_link/6 ::
(channel_number(), pid(), pid(), rabbit_access_control:username(),
- rabbit_types:vhost(), pid()) -> pid()).
+ rabbit_types:vhost(), pid()) -> rabbit_types:ok(pid())).
-spec(do/2 :: (pid(), rabbit_framing:amqp_method_record()) -> 'ok').
-spec(do/3 :: (pid(), rabbit_framing:amqp_method_record(),
rabbit_types:maybe(rabbit_types:content())) -> 'ok').
@@ -102,10 +102,8 @@
%%----------------------------------------------------------------------------
start_link(Channel, ReaderPid, WriterPid, Username, VHost, CollectorPid) ->
- {ok, Pid} = gen_server2:start_link(
- ?MODULE, [Channel, ReaderPid, WriterPid,
- Username, VHost, CollectorPid], []),
- Pid.
+ gen_server2:start_link(?MODULE, [Channel, ReaderPid, WriterPid,
+ Username, VHost, CollectorPid], []).
do(Pid, Method) ->
do(Pid, Method, none).
@@ -1031,7 +1029,7 @@ fold_per_queue(F, Acc0, UAQ) ->
Acc0, D).
start_limiter(State = #ch{unacked_message_q = UAMQ}) ->
- LPid = rabbit_limiter:start_link(self(), queue:len(UAMQ)),
+ {ok, LPid} = rabbit_limiter:start_link(self(), queue:len(UAMQ)),
ok = limit_queues(LPid, State),
LPid.
diff --git a/src/rabbit_framing_channel.erl b/src/rabbit_framing_channel.erl
index bc1a2a08..31be1cf7 100644
--- a/src/rabbit_framing_channel.erl
+++ b/src/rabbit_framing_channel.erl
@@ -40,13 +40,14 @@
%%--------------------------------------------------------------------
start_link(StartFun, StartArgs) ->
- spawn_link(
- fun () ->
- %% we trap exits so that a normal termination of the
- %% channel or reader process terminates us too.
- process_flag(trap_exit, true),
- mainloop(apply(StartFun, StartArgs))
- end).
+ {ok, spawn_link(
+ fun () ->
+ %% we trap exits so that a normal termination of
+ %% the channel or reader process terminates us too.
+ process_flag(trap_exit, true),
+ {ok, ChannelPid} = apply(StartFun, StartArgs),
+ mainloop(ChannelPid)
+ end)}.
process(Pid, Frame) ->
Pid ! {frame, Frame},
diff --git a/src/rabbit_limiter.erl b/src/rabbit_limiter.erl
index 878af029..491ae7d6 100644
--- a/src/rabbit_limiter.erl
+++ b/src/rabbit_limiter.erl
@@ -45,7 +45,7 @@
-type(maybe_pid() :: pid() | 'undefined').
--spec(start_link/2 :: (pid(), non_neg_integer()) -> pid()).
+-spec(start_link/2 :: (pid(), non_neg_integer()) -> {'ok', pid()}).
-spec(shutdown/1 :: (maybe_pid()) -> 'ok').
-spec(limit/2 :: (maybe_pid(), non_neg_integer()) -> 'ok' | 'stopped').
-spec(can_send/3 :: (maybe_pid(), pid(), boolean()) -> boolean()).
@@ -74,8 +74,7 @@
%%----------------------------------------------------------------------------
start_link(ChPid, UnackedMsgCount) ->
- {ok, Pid} = gen_server2:start_link(?MODULE, [ChPid, UnackedMsgCount], []),
- Pid.
+ gen_server2:start_link(?MODULE, [ChPid, UnackedMsgCount], []).
shutdown(undefined) ->
ok;
diff --git a/src/rabbit_reader.erl b/src/rabbit_reader.erl
index b5514c82..83bc7e68 100644
--- a/src/rabbit_reader.erl
+++ b/src/rabbit_reader.erl
@@ -771,10 +771,10 @@ send_to_new_channel(Channel, AnalyzedFrame,
frame_max = FrameMax,
user = #user{username = Username},
vhost = VHost}} = State,
- WriterPid = rabbit_writer:start(Sock, Channel, FrameMax),
- ChPid = rabbit_framing_channel:start_link(
- fun rabbit_channel:start_link/6,
- [Channel, self(), WriterPid, Username, VHost, Collector]),
+ {ok, WriterPid} = rabbit_writer:start(Sock, Channel, FrameMax),
+ {ok, ChPid} = rabbit_framing_channel:start_link(
+ fun rabbit_channel:start_link/6,
+ [Channel, self(), WriterPid, Username, VHost, Collector]),
put({channel, Channel}, {chpid, ChPid}),
put({chpid, ChPid}, {channel, Channel}),
ok = rabbit_framing_channel:process(ChPid, AnalyzedFrame).
diff --git a/src/rabbit_tests.erl b/src/rabbit_tests.erl
index 090c714b..dc77dbbf 100644
--- a/src/rabbit_tests.erl
+++ b/src/rabbit_tests.erl
@@ -938,8 +938,8 @@ test_user_management() ->
test_server_status() ->
%% create a few things so there is some useful information to list
Writer = spawn(fun () -> receive shutdown -> ok end end),
- Ch = rabbit_channel:start_link(1, self(), Writer, <<"user">>, <<"/">>,
- self()),
+ {ok, Ch} = rabbit_channel:start_link(1, self(), Writer,
+ <<"user">>, <<"/">>, self()),
[Q, Q2] = [Queue || Name <- [<<"foo">>, <<"bar">>],
{new, Queue = #amqqueue{}} <-
[rabbit_amqqueue:declare(
@@ -1068,8 +1068,8 @@ test_memory_pressure_sync(Ch, Writer) ->
test_memory_pressure_spawn() ->
Me = self(),
Writer = spawn(fun () -> test_memory_pressure_receiver(Me) end),
- Ch = rabbit_channel:start_link(1, self(), Writer, <<"user">>, <<"/">>,
- self()),
+ {ok, Ch} = rabbit_channel:start_link(1, self(), Writer,
+ <<"user">>, <<"/">>, self()),
ok = rabbit_channel:do(Ch, #'channel.open'{}),
MRef = erlang:monitor(process, Ch),
receive #'channel.open_ok'{} -> ok
@@ -1142,8 +1142,8 @@ test_memory_pressure() ->
alarm_handler:set_alarm({vm_memory_high_watermark, []}),
Me = self(),
Writer4 = spawn(fun () -> test_memory_pressure_receiver(Me) end),
- Ch4 = rabbit_channel:start_link(1, self(), Writer4, <<"user">>, <<"/">>,
- self()),
+ {ok, Ch4} = rabbit_channel:start_link(1, self(), Writer4,
+ <<"user">>, <<"/">>, self()),
ok = rabbit_channel:do(Ch4, #'channel.open'{}),
MRef4 = erlang:monitor(process, Ch4),
Writer4 ! sync,
diff --git a/src/rabbit_writer.erl b/src/rabbit_writer.erl
index 80602038..8857784b 100644
--- a/src/rabbit_writer.erl
+++ b/src/rabbit_writer.erl
@@ -50,12 +50,10 @@
-spec(start/3 ::
(rabbit_net:socket(), rabbit_channel:channel_number(),
- non_neg_integer())
- -> pid()).
+ non_neg_integer()) -> rabbit_types:ok(pid())).
-spec(start_link/3 ::
(rabbit_net:socket(), rabbit_channel:channel_number(),
- non_neg_integer())
- -> pid()).
+ non_neg_integer()) -> rabbit_types:ok(pid())).
-spec(send_command/2 ::
(pid(), rabbit_framing:amqp_method_record()) -> 'ok').
-spec(send_command/3 ::
@@ -85,14 +83,14 @@
%%----------------------------------------------------------------------------
start(Sock, Channel, FrameMax) ->
- spawn(?MODULE, mainloop, [#wstate{sock = Sock,
- channel = Channel,
- frame_max = FrameMax}]).
+ {ok, spawn(?MODULE, mainloop, [#wstate{sock = Sock,
+ channel = Channel,
+ frame_max = FrameMax}])}.
start_link(Sock, Channel, FrameMax) ->
- spawn_link(?MODULE, mainloop, [#wstate{sock = Sock,
- channel = Channel,
- frame_max = FrameMax}]).
+ {ok, spawn_link(?MODULE, mainloop, [#wstate{sock = Sock,
+ channel = Channel,
+ frame_max = FrameMax}])}.
mainloop(State) ->
receive