mirror of
https://github.com/processone/ejabberd.git
synced 2024-12-28 17:38:54 +01:00
When module start fails during server start, stop erlang (EJAB-1446)
This commit is contained in:
parent
dfbf32ecba
commit
f7d532f2f7
@ -70,11 +70,24 @@ start_module(Host, Module, Opts) ->
|
|||||||
catch Class:Reason ->
|
catch Class:Reason ->
|
||||||
del_module_mnesia(Host, Module),
|
del_module_mnesia(Host, Module),
|
||||||
ets:delete(ejabberd_modules, {Module, Host}),
|
ets:delete(ejabberd_modules, {Module, Host}),
|
||||||
?ERROR_MSG("Problem starting the module ~p for host ~p with options:~n ~p~n ~p: ~p",
|
ErrorText = io_lib:format("Problem starting the module ~p for host ~p ~n options: ~p~n ~p: ~p",
|
||||||
[Module, Host, Opts, Class, Reason]),
|
[Module, Host, Opts, Class, Reason]),
|
||||||
erlang:raise(Class, Reason, erlang:get_stacktrace())
|
?CRITICAL_MSG(ErrorText, []),
|
||||||
|
case is_app_running(ejabberd) of
|
||||||
|
true ->
|
||||||
|
erlang:raise(Class, Reason, erlang:get_stacktrace());
|
||||||
|
false ->
|
||||||
|
?CRITICAL_MSG("ejabberd initialization was aborted because a module start failed.", []),
|
||||||
|
timer:sleep(3000),
|
||||||
|
erlang:halt(lists:flatten(ErrorText))
|
||||||
|
end
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
is_app_running(AppName) ->
|
||||||
|
%% Use a high timeout to prevent a false positive in a high load system
|
||||||
|
Timeout = 15000,
|
||||||
|
lists:keymember(AppName, 1, application:which_applications(Timeout)).
|
||||||
|
|
||||||
%% @doc Stop the module in a host, and forget its configuration.
|
%% @doc Stop the module in a host, and forget its configuration.
|
||||||
stop_module(Host, Module) ->
|
stop_module(Host, Module) ->
|
||||||
case stop_module_keep_config(Host, Module) of
|
case stop_module_keep_config(Host, Module) of
|
||||||
|
Loading…
Reference in New Issue
Block a user