diff options
author | Tim Watson <tim@rabbitmq.com> | 2012-10-17 13:57:55 +0100 |
---|---|---|
committer | Tim Watson <tim@rabbitmq.com> | 2012-10-17 13:57:55 +0100 |
commit | 11472c95a2e54d116206079444458af90f6845fc (patch) | |
tree | ba01a14fc447ab00019f60bb368aaae6ed980bc8 | |
parent | 5da4862faf958f1bfacc4b0a5f9326dac998afe0 (diff) | |
parent | a6210401aa5711d8c3d8adef4aa1ed943ae05a7d (diff) | |
download | rabbitmq-server-11472c95a2e54d116206079444458af90f6845fc.tar.gz |
merge default
-rw-r--r-- | src/rabbit.erl | 25 | ||||
-rw-r--r-- | src/rabbit_tests.erl | 15 |
2 files changed, 30 insertions, 10 deletions
diff --git a/src/rabbit.erl b/src/rabbit.erl index 93808f84..5dcf27ed 100644 --- a/src/rabbit.erl +++ b/src/rabbit.erl @@ -300,9 +300,11 @@ start() -> %% We do not want to HiPE compile or upgrade %% mnesia after just restarting the app ok = ensure_application_loaded(), - ok = rabbit_node_monitor:prepare_cluster_status_files(), - ok = rabbit_mnesia:check_cluster_consistency(), ok = ensure_working_log_handlers(), + apply_post_boot_step( + fun rabbit_node_monitor:prepare_cluster_status_files/0), + apply_post_boot_step( + fun rabbit_mnesia:check_cluster_consistency/0), ok = app_utils:start_applications( app_startup_order(), fun handle_app_error/2), ok = print_plugin_info(rabbit_plugins:active()) @@ -312,13 +314,15 @@ boot() -> start_it(fun() -> ok = ensure_application_loaded(), maybe_hipe_compile(), - ok = rabbit_node_monitor:prepare_cluster_status_files(), ok = ensure_working_log_handlers(), + apply_post_boot_step( + fun rabbit_node_monitor:prepare_cluster_status_files/0), ok = rabbit_upgrade:maybe_upgrade_mnesia(), %% It's important that the consistency check happens after %% the upgrade, since if we are a secondary node the %% primary node will have forgotten us - ok = rabbit_mnesia:check_cluster_consistency(), + apply_post_boot_step( + fun rabbit_mnesia:check_cluster_consistency/0), Plugins = rabbit_plugins:setup(), ToBeLoaded = Plugins ++ ?APPS, ok = app_utils:load_applications(ToBeLoaded), @@ -329,6 +333,13 @@ boot() -> ok = print_plugin_info(Plugins) end). +apply_post_boot_step(Step) -> + try + ok = Step() + catch + _:Reason -> boot_error(Reason, erlang:get_stacktrace()) + end. + handle_app_error(App, {bad_return, {_MFA, {'EXIT', {Reason, _}}}}) -> boot_error({could_not_start, App, Reason}, not_available); @@ -530,11 +541,13 @@ boot_error({error, {timeout_waiting_for_tables, _}}, _Stacktrace) -> Ns} end, basic_boot_error(Err ++ rabbit_nodes:diagnostics(Nodes) ++ "~n~n", []); - boot_error(Reason, Stacktrace) -> - Fmt = "Error description:~n ~p~n~n" + Fmt = "Error description:~n ~p~n~n" ++ "Log files (may contain more information):~n ~s~n ~s~n~n", Args = [Reason, log_location(kernel), log_location(sasl)], + boot_error(Fmt, Args, Stacktrace). + +boot_error(Fmt, Args, Stacktrace) -> case Stacktrace of not_available -> basic_boot_error(Fmt, Args); _ -> basic_boot_error(Fmt ++ "Stack trace:~n ~p~n~n", diff --git a/src/rabbit_tests.erl b/src/rabbit_tests.erl index aa48f228..e6054853 100644 --- a/src/rabbit_tests.erl +++ b/src/rabbit_tests.erl @@ -774,7 +774,9 @@ test_log_management_during_startup() -> ok = case catch control_action(start_app, []) of ok -> exit({got_success_but_expected_failure, log_rotation_tty_no_handlers_test}); - {error, {cannot_log_to_tty, _, _}} -> ok + {badrpc, {'EXIT', {rabbit,failure_during_boot, + {error,{cannot_log_to_tty, + _, not_installed}}}}} -> ok end, %% fix sasl logging @@ -798,7 +800,9 @@ test_log_management_during_startup() -> ok = case control_action(start_app, []) of ok -> exit({got_success_but_expected_failure, log_rotation_no_write_permission_dir_test}); - {error, {cannot_log_to_file, _, _}} -> ok + {badrpc, {'EXIT', + {rabbit, failure_during_boot, + {error, {cannot_log_to_file, _, _}}}}} -> ok end, %% start application with logging to a subdirectory which @@ -809,8 +813,11 @@ test_log_management_during_startup() -> ok = case control_action(start_app, []) of ok -> exit({got_success_but_expected_failure, log_rotatation_parent_dirs_test}); - {error, {cannot_log_to_file, _, - {error, {cannot_create_parent_dirs, _, eacces}}}} -> ok + {badrpc, + {'EXIT', {rabbit,failure_during_boot, + {error, {cannot_log_to_file, _, + {error, + {cannot_create_parent_dirs, _, eacces}}}}}}} -> ok end, ok = set_permissions(TmpDir, 8#00700), ok = set_permissions(TmpLog, 8#00600), |