| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- %%--------------------------------------------------------------------
- %% Copyright (c) 2021-2022 EMQ Technologies Co., Ltd. All Rights Reserved.
- %%
- %% Licensed under the Apache License, Version 2.0 (the "License");
- %% you may not use this file except in compliance with the License.
- %% You may obtain a copy of the License at
- %%
- %% http://www.apache.org/licenses/LICENSE-2.0
- %%
- %% Unless required by applicable law or agreed to in writing, software
- %% distributed under the License is distributed on an "AS IS" BASIS,
- %% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- %% See the License for the specific language governing permissions and
- %% limitations under the License.
- %%--------------------------------------------------------------------
- -module(emqx_machine).
- -export([ start/0
- , graceful_shutdown/0
- , is_ready/0
- ]).
- -include_lib("emqx/include/logger.hrl").
- %% @doc EMQ X boot entrypoint.
- start() ->
- case os:type() of
- {win32, nt} -> ok;
- _nix ->
- os:set_signal(sighup, ignore),
- os:set_signal(sigterm, handle) %% default is handle
- end,
- ok = set_backtrace_depth(),
- start_sysmon(),
- ekka:start(),
- ok = print_otp_version_warning().
- graceful_shutdown() ->
- emqx_machine_terminator:graceful_wait().
- set_backtrace_depth() ->
- {ok, Depth} = application:get_env(emqx_machine, backtrace_depth),
- _ = erlang:system_flag(backtrace_depth, Depth),
- ok.
- %% @doc Return true if boot is complete.
- is_ready() ->
- emqx_machine_terminator:is_running().
- -if(?OTP_RELEASE > 22).
- print_otp_version_warning() -> ok.
- -else.
- print_otp_version_warning() ->
- ?ULOG("WARNING: Running on Erlang/OTP version ~p. Recommended: 23~n",
- [?OTP_RELEASE]).
- -endif. % OTP_RELEASE > 22
- start_sysmon() ->
- case application:get_env(system_monitor, db_hostname) of
- undefined ->
- %% If there is no sink for the events, there is no reason
- %% to run system_monitor_top, ignore it:
- ok;
- _ ->
- application:set_env(system_monitor, callback_mod, system_monitor_pg),
- _ = application:ensure_all_started(system_monitor, temporary),
- ok
- end.
|