diff --git a/etc/emqx.conf b/etc/emqx.conf index 70320e91b..1eebed652 100644 --- a/etc/emqx.conf +++ b/etc/emqx.conf @@ -301,6 +301,8 @@ node.crash_dump = {{ platform_log_dir }}/crash.dump node.dist_listen_min = 6369 node.dist_listen_max = 6369 +node.backtrace_depth = 16 + ## CONFIG_SECTION_BGN=rpc ====================================================== ## RPC Mode. diff --git a/priv/emqx.schema b/priv/emqx.schema index 2e1248c50..d254c24e6 100644 --- a/priv/emqx.schema +++ b/priv/emqx.schema @@ -334,6 +334,11 @@ end}. hidden ]}. +{mapping, "node.backtrace_depth", "emqx.backtrace_depth", [ + {default, 16}, + {datatype, integer} +]}. + %%-------------------------------------------------------------------- %% RPC %%-------------------------------------------------------------------- diff --git a/src/emqx_app.erl b/src/emqx_app.erl index ca1a2ce09..ca6ce1073 100644 --- a/src/emqx_app.erl +++ b/src/emqx_app.erl @@ -33,6 +33,7 @@ %%-------------------------------------------------------------------- start(_Type, _Args) -> + set_backtrace_depth(), print_otp_version_warning(), print_banner(), ekka:start(), @@ -40,8 +41,7 @@ start(_Type, _Args) -> ok = start_autocluster(), ok = emqx_plugins:init(), _ = emqx_plugins:load(), - emqx_boot:is_enabled(listeners) - andalso (ok = emqx_listeners:start()), + emqx_boot:is_enabled(listeners) andalso (ok = emqx_listeners:start()), register(emqx, self()), ok = emqx_alarm_handler:load(), print_vsn(), @@ -53,6 +53,11 @@ stop(_State) -> emqx_boot:is_enabled(listeners) andalso emqx_listeners:stop(). +set_backtrace_depth() -> + Depth = application:get_env(?APP, backtrace_depth, 16), + _ = erlang:system_flag(backtrace_depth, Depth), + ok. + %%-------------------------------------------------------------------- %% Print Banner %%--------------------------------------------------------------------