summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Radestock <matthias@rabbitmq.com>2012-01-27 08:54:10 +0000
committerMatthias Radestock <matthias@rabbitmq.com>2012-01-27 08:54:10 +0000
commit1f4c62de9bdbce09fec1997b06d7b09243225388 (patch)
tree1463c86a67320423270cac4c76766dcfea79372c
parent4b80eef39e8101d1bf2ad4e485ce21007ceed652 (diff)
parentbf72648dd1c632309d0b0fc469fa6a949cfe0558 (diff)
downloadrabbitmq-server-1f4c62de9bdbce09fec1997b06d7b09243225388.tar.gz
merge bug23706 into default
-rw-r--r--src/rabbit.erl11
-rw-r--r--src/rabbit_networking.erl7
-rw-r--r--src/tcp_listener.erl5
3 files changed, 17 insertions, 6 deletions
diff --git a/src/rabbit.erl b/src/rabbit.erl
index 9609eb04..2354e552 100644
--- a/src/rabbit.erl
+++ b/src/rabbit.erl
@@ -442,8 +442,7 @@ run_boot_step({StepName, Attributes}) ->
[try
apply(M,F,A)
catch
- _:Reason -> boot_error("FAILED~nReason: ~p~nStacktrace: ~p~n",
- [Reason, erlang:get_stacktrace()])
+ _:Reason -> boot_step_error(Reason, erlang:get_stacktrace())
end || {M,F,A} <- MFAs],
io:format("done~n"),
ok
@@ -502,8 +501,14 @@ sort_boot_steps(UnsortedSteps) ->
end])
end.
+boot_step_error(Reason, Stacktrace) ->
+ boot_error("Error description:~n ~p~n~n"
+ "Log files (may contain more information):~n ~s~n ~s~n~n"
+ "Stack trace:~n ~p~n~n",
+ [Reason, log_location(kernel), log_location(sasl), Stacktrace]).
+
boot_error(Format, Args) ->
- io:format("BOOT ERROR: " ++ Format, Args),
+ io:format("~n~nBOOT FAILED~n===========~n~n" ++ Format, Args),
error_logger:error_msg(Format, Args),
timer:sleep(1000),
exit({?MODULE, failure_during_boot}).
diff --git a/src/rabbit_networking.erl b/src/rabbit_networking.erl
index e81f8134..923967ea 100644
--- a/src/rabbit_networking.erl
+++ b/src/rabbit_networking.erl
@@ -220,7 +220,12 @@ start_listener(Listener, Protocol, Label, OnConnect) ->
start_listener0(Address, Protocol, Label, OnConnect) ->
Spec = tcp_listener_spec(rabbit_tcp_listener_sup, Address, tcp_opts(),
Protocol, Label, OnConnect),
- {ok,_} = supervisor:start_child(rabbit_sup, Spec).
+ case supervisor:start_child(rabbit_sup, Spec) of
+ {ok, _} -> ok;
+ {error, {shutdown, _}} -> {IPAddress, Port, _Family} = Address,
+ exit({could_not_start_tcp_listener,
+ {rabbit_misc:ntoa(IPAddress), Port}})
+ end.
stop_tcp_listener(Listener) ->
[stop_tcp_listener0(Address) ||
diff --git a/src/tcp_listener.erl b/src/tcp_listener.erl
index 9a82ac88..e5db4c9f 100644
--- a/src/tcp_listener.erl
+++ b/src/tcp_listener.erl
@@ -72,8 +72,9 @@ init({IPAddress, Port, SocketOpts,
label = Label}};
{error, Reason} ->
error_logger:error_msg(
- "failed to start ~s on ~s:~p - ~p~n",
- [Label, rabbit_misc:ntoab(IPAddress), Port, Reason]),
+ "failed to start ~s on ~s:~p - ~p (~s)~n",
+ [Label, rabbit_misc:ntoab(IPAddress), Port,
+ Reason, inet:format_error(Reason)]),
{stop, {cannot_listen, IPAddress, Port, Reason}}
end.