diff options
author | Matthias Radestock <matthias@rabbitmq.com> | 2012-01-27 08:54:10 +0000 |
---|---|---|
committer | Matthias Radestock <matthias@rabbitmq.com> | 2012-01-27 08:54:10 +0000 |
commit | 1f4c62de9bdbce09fec1997b06d7b09243225388 (patch) | |
tree | 1463c86a67320423270cac4c76766dcfea79372c | |
parent | 4b80eef39e8101d1bf2ad4e485ce21007ceed652 (diff) | |
parent | bf72648dd1c632309d0b0fc469fa6a949cfe0558 (diff) | |
download | rabbitmq-server-1f4c62de9bdbce09fec1997b06d7b09243225388.tar.gz |
merge bug23706 into default
-rw-r--r-- | src/rabbit.erl | 11 | ||||
-rw-r--r-- | src/rabbit_networking.erl | 7 | ||||
-rw-r--r-- | src/tcp_listener.erl | 5 |
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. |