fix(machine): Don't start business apps before emqx machine
This commit is contained in:
parent
f6756ef6f9
commit
f0ab8e36d1
205
mix.exs
205
mix.exs
|
@ -326,7 +326,7 @@ defmodule EMQXUmbrella.MixProject do
|
||||||
end
|
end
|
||||||
|
|
||||||
def applications(edition_type) do
|
def applications(edition_type) do
|
||||||
[
|
system_apps = [
|
||||||
crypto: :permanent,
|
crypto: :permanent,
|
||||||
public_key: :permanent,
|
public_key: :permanent,
|
||||||
asn1: :permanent,
|
asn1: :permanent,
|
||||||
|
@ -339,96 +339,121 @@ defmodule EMQXUmbrella.MixProject do
|
||||||
redbug: :permanent,
|
redbug: :permanent,
|
||||||
xmerl: :permanent,
|
xmerl: :permanent,
|
||||||
hocon: :load,
|
hocon: :load,
|
||||||
telemetry: :permanent,
|
telemetry: :permanent
|
||||||
emqx: :load,
|
]
|
||||||
emqx_conf: :load,
|
|
||||||
emqx_machine: :permanent
|
db_apps =
|
||||||
] ++
|
if enable_rocksdb?() do
|
||||||
if(enable_rocksdb?(),
|
[:mnesia_rocksdb]
|
||||||
do: [mnesia_rocksdb: :load],
|
else
|
||||||
else: []
|
[]
|
||||||
) ++
|
end ++
|
||||||
[
|
[
|
||||||
mnesia: :load,
|
:mnesia,
|
||||||
ekka: :load,
|
:mria,
|
||||||
esasl: :load,
|
:ekka
|
||||||
observer_cli: :permanent,
|
|
||||||
tools: :permanent,
|
|
||||||
covertool: :load,
|
|
||||||
system_monitor: :load,
|
|
||||||
emqx_utils: :load,
|
|
||||||
emqx_http_lib: :permanent,
|
|
||||||
emqx_resource: :permanent,
|
|
||||||
emqx_connector: :permanent,
|
|
||||||
emqx_authn: :permanent,
|
|
||||||
emqx_authz: :permanent,
|
|
||||||
emqx_auto_subscribe: :permanent,
|
|
||||||
emqx_gateway: :permanent,
|
|
||||||
emqx_gateway_stomp: :permanent,
|
|
||||||
emqx_gateway_mqttsn: :permanent,
|
|
||||||
emqx_gateway_coap: :permanent,
|
|
||||||
emqx_gateway_lwm2m: :permanent,
|
|
||||||
emqx_gateway_exproto: :permanent,
|
|
||||||
emqx_exhook: :permanent,
|
|
||||||
emqx_bridge: :permanent,
|
|
||||||
emqx_bridge_mqtt: :permanent,
|
|
||||||
emqx_bridge_http: :permanent,
|
|
||||||
emqx_rule_engine: :permanent,
|
|
||||||
emqx_modules: :permanent,
|
|
||||||
emqx_management: :permanent,
|
|
||||||
emqx_dashboard: :permanent,
|
|
||||||
emqx_retainer: :permanent,
|
|
||||||
emqx_prometheus: :permanent,
|
|
||||||
emqx_psk: :permanent,
|
|
||||||
emqx_slow_subs: :permanent,
|
|
||||||
emqx_mongodb: :permanent,
|
|
||||||
emqx_redis: :permanent,
|
|
||||||
emqx_mysql: :permanent,
|
|
||||||
emqx_plugins: :permanent,
|
|
||||||
emqx_mix: :none
|
|
||||||
] ++
|
|
||||||
if(enable_quicer?(), do: [quicer: :permanent], else: []) ++
|
|
||||||
if(enable_bcrypt?(), do: [bcrypt: :permanent], else: []) ++
|
|
||||||
if(enable_jq?(), do: [jq: :load], else: []) ++
|
|
||||||
if(is_app(:observer),
|
|
||||||
do: [observer: :load],
|
|
||||||
else: []
|
|
||||||
) ++
|
|
||||||
if(edition_type == :enterprise,
|
|
||||||
do: [
|
|
||||||
emqx_license: :permanent,
|
|
||||||
emqx_enterprise: :load,
|
|
||||||
emqx_bridge_kafka: :permanent,
|
|
||||||
emqx_bridge_pulsar: :permanent,
|
|
||||||
emqx_bridge_gcp_pubsub: :permanent,
|
|
||||||
emqx_bridge_cassandra: :permanent,
|
|
||||||
emqx_bridge_opents: :permanent,
|
|
||||||
emqx_bridge_clickhouse: :permanent,
|
|
||||||
emqx_bridge_dynamo: :permanent,
|
|
||||||
emqx_bridge_hstreamdb: :permanent,
|
|
||||||
emqx_bridge_influxdb: :permanent,
|
|
||||||
emqx_bridge_iotdb: :permanent,
|
|
||||||
emqx_bridge_matrix: :permanent,
|
|
||||||
emqx_bridge_mongodb: :permanent,
|
|
||||||
emqx_bridge_mysql: :permanent,
|
|
||||||
emqx_bridge_pgsql: :permanent,
|
|
||||||
emqx_bridge_redis: :permanent,
|
|
||||||
emqx_bridge_rocketmq: :permanent,
|
|
||||||
emqx_bridge_tdengine: :permanent,
|
|
||||||
emqx_bridge_timescale: :permanent,
|
|
||||||
emqx_bridge_sqlserver: :permanent,
|
|
||||||
emqx_oracle: :permanent,
|
|
||||||
emqx_bridge_oracle: :permanent,
|
|
||||||
emqx_bridge_rabbitmq: :permanent,
|
|
||||||
emqx_schema_registry: :permanent,
|
|
||||||
emqx_eviction_agent: :permanent,
|
|
||||||
emqx_node_rebalance: :permanent,
|
|
||||||
emqx_ft: :permanent
|
|
||||||
],
|
|
||||||
else: [
|
|
||||||
emqx_telemetry: :permanent
|
|
||||||
]
|
]
|
||||||
)
|
|
||||||
|
business_apps =
|
||||||
|
[
|
||||||
|
:emqx,
|
||||||
|
:emqx_conf,
|
||||||
|
:esasl,
|
||||||
|
:observer_cli,
|
||||||
|
:tools,
|
||||||
|
:covertool,
|
||||||
|
:system_monitor,
|
||||||
|
:emqx_utils,
|
||||||
|
:emqx_http_lib,
|
||||||
|
:emqx_resource,
|
||||||
|
:emqx_connector,
|
||||||
|
:emqx_authn,
|
||||||
|
:emqx_authz,
|
||||||
|
:emqx_auto_subscribe,
|
||||||
|
:emqx_gateway,
|
||||||
|
:emqx_gateway_stomp,
|
||||||
|
:emqx_gateway_mqttsn,
|
||||||
|
:emqx_gateway_coap,
|
||||||
|
:emqx_gateway_lwm2m,
|
||||||
|
:emqx_gateway_exproto,
|
||||||
|
:emqx_exhook,
|
||||||
|
:emqx_bridge,
|
||||||
|
:emqx_bridge_mqtt,
|
||||||
|
:emqx_bridge_http,
|
||||||
|
:emqx_rule_engine,
|
||||||
|
:emqx_modules,
|
||||||
|
:emqx_management,
|
||||||
|
:emqx_dashboard,
|
||||||
|
:emqx_retainer,
|
||||||
|
:emqx_prometheus,
|
||||||
|
:emqx_psk,
|
||||||
|
:emqx_slow_subs,
|
||||||
|
:emqx_mongodb,
|
||||||
|
:emqx_redis,
|
||||||
|
:emqx_mysql,
|
||||||
|
:emqx_plugins,
|
||||||
|
:emqx_mix
|
||||||
|
] ++
|
||||||
|
if enable_quicer?() do
|
||||||
|
[:quicer]
|
||||||
|
else
|
||||||
|
[]
|
||||||
|
end ++
|
||||||
|
if enable_bcrypt?() do
|
||||||
|
[:bcrypt]
|
||||||
|
else
|
||||||
|
[]
|
||||||
|
end ++
|
||||||
|
if enable_jq?() do
|
||||||
|
[:jq]
|
||||||
|
else
|
||||||
|
[]
|
||||||
|
end ++
|
||||||
|
if(is_app(:observer),
|
||||||
|
do: [:observer],
|
||||||
|
else: []
|
||||||
|
) ++
|
||||||
|
case edition_type do
|
||||||
|
:enterprise ->
|
||||||
|
[
|
||||||
|
:emqx_license,
|
||||||
|
:emqx_enterprise,
|
||||||
|
:emqx_bridge_kafka,
|
||||||
|
:emqx_bridge_pulsar,
|
||||||
|
:emqx_bridge_gcp_pubsub,
|
||||||
|
:emqx_bridge_cassandra,
|
||||||
|
:emqx_bridge_opents,
|
||||||
|
:emqx_bridge_clickhouse,
|
||||||
|
:emqx_bridge_dynamo,
|
||||||
|
:emqx_bridge_hstreamdb,
|
||||||
|
:emqx_bridge_influxdb,
|
||||||
|
:emqx_bridge_iotdb,
|
||||||
|
:emqx_bridge_matrix,
|
||||||
|
:emqx_bridge_mongodb,
|
||||||
|
:emqx_bridge_mysql,
|
||||||
|
:emqx_bridge_pgsql,
|
||||||
|
:emqx_bridge_redis,
|
||||||
|
:emqx_bridge_rocketmq,
|
||||||
|
:emqx_bridge_tdengine,
|
||||||
|
:emqx_bridge_timescale,
|
||||||
|
:emqx_bridge_sqlserver,
|
||||||
|
:emqx_oracle,
|
||||||
|
:emqx_bridge_oracle,
|
||||||
|
:emqx_bridge_rabbitmq,
|
||||||
|
:emqx_schema_registry,
|
||||||
|
:emqx_eviction_agent,
|
||||||
|
:emqx_node_rebalance,
|
||||||
|
:emqx_ft
|
||||||
|
]
|
||||||
|
|
||||||
|
_ ->
|
||||||
|
[:emqx_telemetry]
|
||||||
|
end
|
||||||
|
|
||||||
|
system_apps ++
|
||||||
|
Enum.map(db_apps, &{&1, :load}) ++
|
||||||
|
[emqx_machine: :permanent] ++
|
||||||
|
Enum.map(business_apps, &{&1, :load})
|
||||||
end
|
end
|
||||||
|
|
||||||
defp is_app(name) do
|
defp is_app(name) do
|
||||||
|
|
|
@ -386,38 +386,43 @@ overlay_vars_pkg(pkg) ->
|
||||||
].
|
].
|
||||||
|
|
||||||
relx_apps(ReleaseType, Edition) ->
|
relx_apps(ReleaseType, Edition) ->
|
||||||
[
|
SystemApps =
|
||||||
kernel,
|
|
||||||
sasl,
|
|
||||||
crypto,
|
|
||||||
public_key,
|
|
||||||
asn1,
|
|
||||||
syntax_tools,
|
|
||||||
ssl,
|
|
||||||
os_mon,
|
|
||||||
inets,
|
|
||||||
compiler,
|
|
||||||
runtime_tools,
|
|
||||||
redbug,
|
|
||||||
xmerl,
|
|
||||||
{hocon, load},
|
|
||||||
telemetry,
|
|
||||||
% started by emqx_machine
|
|
||||||
{emqx, load},
|
|
||||||
{emqx_conf, load},
|
|
||||||
emqx_machine
|
|
||||||
] ++
|
|
||||||
[{mnesia_rocksdb, load} || is_rocksdb_supported()] ++
|
|
||||||
[
|
[
|
||||||
{mnesia, load},
|
kernel,
|
||||||
{ekka, load},
|
sasl,
|
||||||
{esasl, load},
|
crypto,
|
||||||
|
public_key,
|
||||||
|
asn1,
|
||||||
|
syntax_tools,
|
||||||
|
ssl,
|
||||||
|
os_mon,
|
||||||
|
inets,
|
||||||
|
compiler,
|
||||||
|
runtime_tools,
|
||||||
|
redbug,
|
||||||
|
xmerl,
|
||||||
|
{hocon, load},
|
||||||
|
telemetry
|
||||||
|
],
|
||||||
|
DBApps =
|
||||||
|
[mnesia_rocksdb || is_rocksdb_supported()] ++
|
||||||
|
[
|
||||||
|
mnesia,
|
||||||
|
mria,
|
||||||
|
ekka
|
||||||
|
],
|
||||||
|
BusinessApps =
|
||||||
|
[
|
||||||
|
emqx,
|
||||||
|
emqx_conf,
|
||||||
|
|
||||||
|
esasl,
|
||||||
observer_cli,
|
observer_cli,
|
||||||
tools,
|
tools,
|
||||||
{covertool, load},
|
covertool,
|
||||||
% started by emqx_machine
|
% started by emqx_machine
|
||||||
{system_monitor, load},
|
system_monitor,
|
||||||
{emqx_utils, load},
|
emqx_utils,
|
||||||
emqx_http_lib,
|
emqx_http_lib,
|
||||||
emqx_resource,
|
emqx_resource,
|
||||||
emqx_connector,
|
emqx_connector,
|
||||||
|
@ -447,13 +452,18 @@ relx_apps(ReleaseType, Edition) ->
|
||||||
emqx_mysql,
|
emqx_mysql,
|
||||||
emqx_plugins
|
emqx_plugins
|
||||||
] ++
|
] ++
|
||||||
[quicer || is_quicer_supported()] ++
|
[quicer || is_quicer_supported()] ++
|
||||||
[bcrypt || provide_bcrypt_release(ReleaseType)] ++
|
[bcrypt || provide_bcrypt_release(ReleaseType)] ++
|
||||||
%% Started automatically when needed (only needs to be started when the
|
%% Started automatically when needed (only needs to be started when the
|
||||||
%% port implementation is used)
|
%% port implementation is used)
|
||||||
[{jq, load} || is_jq_supported()] ++
|
[jq || is_jq_supported()] ++
|
||||||
[{observer, load} || is_app(observer)] ++
|
[observer || is_app(observer)] ++
|
||||||
relx_apps_per_edition(Edition).
|
relx_apps_per_edition(Edition),
|
||||||
|
SystemApps ++
|
||||||
|
%% EMQX starts the DB and the business applications:
|
||||||
|
[{App, load} || App <- DBApps] ++
|
||||||
|
[emqx_machine] ++
|
||||||
|
[{App, load} || App <- BusinessApps].
|
||||||
|
|
||||||
is_app(Name) ->
|
is_app(Name) ->
|
||||||
case application:load(Name) of
|
case application:load(Name) of
|
||||||
|
@ -465,7 +475,7 @@ is_app(Name) ->
|
||||||
relx_apps_per_edition(ee) ->
|
relx_apps_per_edition(ee) ->
|
||||||
[
|
[
|
||||||
emqx_license,
|
emqx_license,
|
||||||
{emqx_enterprise, load},
|
emqx_enterprise,
|
||||||
emqx_bridge_kafka,
|
emqx_bridge_kafka,
|
||||||
emqx_bridge_pulsar,
|
emqx_bridge_pulsar,
|
||||||
emqx_bridge_gcp_pubsub,
|
emqx_bridge_gcp_pubsub,
|
||||||
|
|
Loading…
Reference in New Issue