* release-50: (73 commits) feat: add RabbitMQ bridge docs: improve rule engine labels and descriptions chore: bump version && update changes refactor(rocketmq): move rocketmq bridge into its own app test: dashboard_listener_test crash chore: bump chart versions chore: bump ee version to e5.0.4-alpha.1 test: fix inter-suite flakiness build: compatibility to make 4.4+ feat: add IotDB bridge ci: ensure git safe dir in build_packages ci: ensure git safe dir test: check_oom's max_mailbox_size feat: rename max_message_queue_len to max_mailbox_size fix(buffer_worker): fix inflight count when updating inflight item chore: prepare for v5.0.25-rc.1 release docs: add change log entry fix: non_neg_integer() translated to minimum = 1 in bridge-api-en.json chore: `MQTT X` -> `MQTTX` chore: make sure brod_gssapi app is included in relese package ... |
||
|---|---|---|
| .. | ||
| src | ||
| test | ||
| README.md | ||
| rebar.config | ||
EMQX machine
This application manages other OTP applications in EMQX and serves as the entry point when BEAM VM starts up.
It prepares the node before starting mnesia/mria, as well as EMQX business logic.
It keeps track of the business applications storing data in Mnesia, which need to be restarted when the node joins the cluster by registering ekka callbacks.
Also it kicks off autoclustering (EMQX cluster discovery) on the core nodes.
emqx_machine application doesn't do much on its own, but it facilitates the environment for running other EMQX applications.
Features
Global GC
emqx_global_gc is a gen_server that forces garbage collection of all Erlang processes running in the BEAM VM.
This is meant to save the RAM.
Restricted shell
emqx_restricted_shell module prevents user from accidentally issuing Erlang shell commands that can stop the remote node.
Signal handler
emqx_machine_signal_handler handles POSIX signals sent to BEAM VM process.
It helps to shut down EMQX broker gracefully when it receives SIGTERM signal.
Cover
emqx_cover is a helper module that helps to collect coverage reports during testing.
Limitation
Currently emqx_machine boots the business apps before starting autocluster, so a fresh node joining the cluster actually starts business application twice: first in the singleton mode, and then in clustered mode.
Documentation links
Configuration: node.global_gc_interval
Configurations
The following application environment variables are used:
emqx_machine.global_gc_interval: interval at which global GC is runemqx_machine.custom_shard_transports: contains a map that allows to fine tune transport (rpcorgen_rpc) used to send Mria transactions from the core node to the replicantemqx_machine.backtrace_depth: set maximum depth of Erlang stacktraces in crash reports
Contributing
Please see our contributing.md.