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 | 07cee505b0bdbbf01de7c50afe57e0aea75521af (patch) | |
| tree | 1463c86a67320423270cac4c76766dcfea79372c | |
| parent | 25a31a2ed1499fff3c74f5e3ba853ea96e997bdf (diff) | |
| parent | cffda8a6e880c5b0b99db562b0e76e0a6e73ab69 (diff) | |
| download | rabbitmq-server-git-07cee505b0bdbbf01de7c50afe57e0aea75521af.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 9609eb0400..2354e55288 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 e81f8134f8..923967ead1 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 9a82ac88c1..e5db4c9f11 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. |
