Commit Graph

178 Commits

Author SHA1 Message Date
Thales Macedo Garitezi 80d35feb33 fix(license): change schema to allow updating license to different type
Before this change, if a license in `emqx.conf` was of type
`key`/`file` and then changed to the opposite type, such change would
be saved to `{cluster,local}-overrides.conf`.  When the node restarts
after that, the configs are merged naively and becomes invalid, as it
contains both the `key` and `file` keys, and crashes.
2022-07-28 17:29:59 -03:00
Chris 24f88679ae feat: Added emqx command to check configs 2022-07-25 11:01:08 +02:00
Zhongwen Deng 0ee732c076 fix: typo error +ssl_dist_optfile to \-ssl_dist_optfile 2022-07-02 17:19:21 +08:00
Zaiming (Stone) Shi b3f16ccb36 fix: Erlang distribution over TLS 2022-06-28 21:49:02 +02:00
Zaiming (Stone) Shi 41808fc2a2 chore: add a comment to describe why setting ESCRIPT_NAME 2022-06-11 14:41:01 +02:00
Zaiming (Stone) Shi 8151f79f45 fix(bin/emqx): turn off debug print when need to capture stderror 2022-05-31 16:31:16 +02:00
Thales Macedo Garitezi d0c5de1da6
chore(config): move db configs under cluster/node keys 2022-05-26 14:02:22 -03:00
DDDHuang 809c0bede7 fix: check node name, regular expression 2022-05-19 09:52:00 +08:00
Zhongwen Deng 41268dba01 fix: can't get emqx's priv_dir when whitespace in install path 2022-05-05 15:59:14 +08:00
Shawn 7ee0887237 fix: ./bin/emqx_ctl status failed
The CLI emqx_ctl fails:

```
./bin/emqx_ctl status

Node not initialized?
Generated config file vm.*.args is not found for command 'ctl'
in config dir: /Users/liuxy/code/emqx50/_build/emqx/rel/emqx/-emqx_data_dir /Users/liuxy/code/emqx50/_build/emqx/rel/emqx/data --/configs
In case the file has been deleted while the node is running,
set environment variable 'EMQX_NODE__NAME' to continue
```
2022-04-23 15:07:58 +08:00
Zaiming (Stone) Shi ce902b5405 refactor(bin/emqx): speed up boot
The main slow-down is the overheads of booting up beam with the
'start_clean' boot file (which loads all modules).

Prior to this change, beam is started multiple times in order to
resolve configuration values.

After this change:
* For boot commands such as 'start', 'console' and
  'foreground', it starts beam twice:
  - 1st is to check platform compatibility
  - 2nd is to resolve all configs required for boot in a batch
* For non-boot commands, such as 'ctl' and 'ping', it does not
  require to start beam for config resolution at all
2022-04-22 11:35:50 +02:00
Zaiming (Stone) Shi 18cebd9be7 feat: parameterise console flavor
so we can start an Erlang console in a Elixir release
by: env EMQX_CONSOLE_FLAVOR=erl ./bin/emqx console
2022-04-13 23:29:17 +02:00
Zaiming (Stone) Shi 82ef4c87e5 fix(bin/emqx): configure mnesia dir in vm.args file 2022-04-13 21:55:05 +02:00
Zaiming (Stone) Shi 3c03c0cfc1 feat(bin/emqx): make possible to boot Erlang node from Elixir build 2022-04-13 21:55:05 +02:00
Zaiming (Stone) Shi 2dbc65cfe3 fix(bin/emqx): make possible to start in path with space 2022-04-13 21:55:05 +02:00
Zaiming (Stone) Shi 72405f977c refactor(bin/emqx): remove unnecessary intermediate env variables 2022-04-13 13:50:56 +02:00
Zaiming (Stone) Shi c8242816b0 refactor(bin/emqx): no need to template-render RUNNER_ROOT_DIR 2022-04-13 13:50:25 +02:00
Zaiming (Stone) Shi c62f7e5baa chore: fix typos in bin/emqx 2022-04-13 13:50:25 +02:00
Thales Macedo Garitezi b5ac56ba50
feat(db): check if OTP has mnesia_hook, otherwise fallback to mnesia
Adds a check to `bin/emqx` to see if the OTP version being used has
support for `mnesia_hook`, which is required by Mria for using the
RLOG backend.  If OTP is not compatible and the user tries to use
RLOG, a warning is printed during startup and the configuration falls
back to using the Mnesia backend.
2022-04-11 14:33:16 -03:00
Zaiming (Stone) Shi 32694e601a refactor: rename RUNNER_ETC_DIR to EMQX_ETC_DIR 2022-04-05 23:08:45 +02:00
Zaiming (Stone) Shi 822a4f9f73 feat: parameterise EMQX_ETC_DIR
both at build time and at runtime
2022-04-05 16:36:13 +02:00
Zaiming (Stone) Shi 122e75c0b4 feat(systemd): start EMQX under systemd in foreground mode 2022-03-11 13:34:54 +01:00
Zaiming (Stone) Shi 68fb80fc29 chore(bin/emqx): refine boot message 2022-03-04 21:02:54 +01:00
Zaiming (Stone) Shi 4e64010a3b build: more structured build info 2022-03-02 21:22:03 +01:00
Zaiming (Stone) Shi e22104476a fix(data_dir): get data_dir config in the right way
now data_dir config is respected by boot script as well as
EMQX application after booted
2022-02-28 09:59:56 +01:00
Zaiming (Stone) Shi 2e94880bb6 docs: More EMQ X -> EMQX rename in descriptive strings 2022-02-15 22:39:11 +01:00
Ilya Averyanov 64c59b5469 feat(license): check license before node start 2022-02-11 11:49:29 +03:00
Ilya Averyanov 17599432d1 feat(license): add license application 2022-02-07 19:05:47 +03:00
Thales Macedo Garitezi 1b3b2c0d03
feat: add eval-erl command to `bin/emqx`
This allows Erlang expressions to be evaluated easily even on nodes
running Elixir.
2022-02-04 16:53:27 -03:00
Thales Macedo Garitezi bd0d331b64
Merge pull request #6636 from emqx/elixir-packages-mkII
ci(mix): build emqx packages with elixir
2022-01-27 11:10:30 -03:00
Kian-Meng Ang fc92e4c8bf docs: fix typos 2022-01-27 12:29:38 +01:00
Thales Macedo Garitezi 03e0c5ef2a
fix(eval): use running node for rpc eval, not a fresh one
With the previous arguments, a fresh hidden node with the same name as
the expected running one was being started and commands were being run
there.  This caused commands like `ekka_cluster:info()` to report
seemingly weird results.
2022-01-26 16:59:48 -03:00
Zaiming (Stone) Shi 1abac892c9 refactor: install_upgrade script no need to re-pack
OTP release handler only works with .tar.gz
as a result, we had to unpack .zip and re-pack .tar.gz
just to make OTP happy.

Now since we will be building .tar.gz packages
there is no need for this re-pack step anymore
2022-01-13 18:54:01 +01:00
Zaiming (Stone) Shi a935dcc1f5
Merge pull request #6718 from zmstone/refactor-bin-emqx-help-info
refactor(bin/emqx): refine help info
2022-01-12 23:34:53 +01:00
Zaiming (Stone) Shi 38ee224fac refactor(bin/emqx): refine help info
* refine usage print
* deleted restart command, as it only works for daemon mode.
  e.g. if EMQ X is started in 'foreground' mode the 'restart'
  command will make it start in daemon mode
* some commands such as ertspath does not requre RPC
2022-01-12 23:33:59 +01:00
Zaiming (Stone) Shi 635b056e03 fix(bin/emqx): print usage when no command given 2022-01-12 08:18:44 +01:00
Zaiming (Stone) Shi af82f51333 chore: emqx stop prints ok after stop
This is to make it behave the same as older versions
2022-01-07 09:03:31 +01:00
Thales Macedo Garitezi b9494662ae
fix(ci): fix shellcheck file pattern
Since we started to use the portable shebang style for our scripts, we
need to update the pattern used to find scripts for Shellcheck to
check.
2022-01-05 11:34:04 -03:00
Zaiming (Stone) Shi eae2e3ad0c Merge remote-tracking branch 'origin/master' into merge-5.0-beta.3-to-master 2022-01-04 21:11:30 +01:00
Zaiming (Stone) Shi 320506957c refactor(bin/emqx): wait for up to 120 seconds by default 2022-01-04 17:28:53 +01:00
Zaiming (Stone) Shi 2898fa76e1 Merge remote-tracking branch 'origin/release-5.0-beta.3' into merge-5.0-beta.3-to-master 2022-01-03 11:39:06 +01:00
Thales Macedo Garitezi c70a47bba6
refactor(mix): undo the `bin/emqx` script split into helper files 2021-12-30 13:45:13 -03:00
Thales Macedo Garitezi 0020cf592f
Merge remote-tracking branch 'origin/master' into build-with-mix-mkII 2021-12-28 11:28:40 -03:00
Zaiming (Stone) Shi 68eb13d478 fix: portable shebang 2021-12-27 15:45:12 +01:00
Thales Macedo Garitezi 0655572f64
chore(mix): fix: use Elixir's own rpc-eval call for "eval" 2021-12-24 11:40:30 -03:00
Thales Macedo Garitezi 67cca5d3a1
chore(mix): use the same script in mix release as in rebar release
Surprisingly enough, by doing small cirurgical changes in the existing
EMQX control scripts, we are able to get it running with Elixir and
with existing functionalities (`console`, `remote_console`, `start`,
`stop`, `ctl`, `foreground`, `eval`).
2021-12-23 17:20:04 -03:00
Thales Macedo Garitezi 014b6d3cfd
chore(shellcheck): fix shellcheck linting warnings 2021-12-22 15:43:43 -03:00
Thales Macedo Garitezi a5939790c5
refactor(bin): extract common script functionalities into separate files
In order for us to reuse most of the functionalities implemented in
`bin/eqmx` also in the Elixir release script, common variable and
function definitions are extracted in separated bash files that can be
sourced by both Rebar and Elixir release scripts.
2021-12-22 10:35:06 -03:00
Shawn c3eab16182 fix(boot_script): wait until the emqx running 2021-12-21 19:50:36 +08:00
Shawn 08da5f5267 fix(boot_script): LD_LIBRARY_PATH: unbound variable 2021-12-21 16:53:06 +08:00
Zaiming (Stone) Shi a681079ba7 refactor: remove special env override from schema
EMQX_NODE_NAME and EMQX_NODE_COOKIE are translated into
EMQX_NODE__NAME and EMQX_NODE__COOKIE
2021-12-06 08:00:42 +01:00
Zaiming (Stone) Shi 2a3f58f8ed chore: add a comment in bin/emqx to warn the config overlay 2021-12-06 08:00:42 +01:00
zhongwencool f697028b70
Fix ping not return pong (#6285)
* fix: ./bin/emqx ping return pong

* chore: waiting longer for logger flush log to disk

* fix: change swagger page's limit from 100 to 1000

* chore: type wrong

* fix: sync log to disk by logger_disk_log_h:filesync
2021-11-26 17:02:45 +08:00
Zaiming Shi 79d9f55dd6 build: copy only libcrypto and libtinfo 2021-11-22 15:46:38 +01:00
Zaiming Shi 00d3a832ba chore(bin/emqx): delete unused cookie file chown 2021-11-12 14:56:14 +01:00
Zaiming Shi e484fcc8c3 chore(bin/emqx): write sensible log if node not initialized 2021-11-10 21:15:54 +01:00
Zaiming Shi 160825095a chore(bin/emqx): add more usage prints 2021-11-10 20:19:38 +01:00
Zaiming Shi cf06ceb921 chore(bin/emqx): fix a typo in bash function 2021-11-09 23:00:53 +01:00
Zaiming Shi 25248a9e21 chore(bin/emqx): delete boot file start option
we have never tested using alternative boot file to start EMQ X
drop it
2021-11-09 23:00:53 +01:00
Zaiming Shi 9b9a070168 chore(bin/emqx): add default values for bash vars 2021-11-09 23:00:53 +01:00
Zaiming Shi 1480bb6158 chore(bin/emqx): delete RELX_CONFIG_PATH
this variable is to allow setting sys.config by user
however this feature is now broken because the
we always generate app.<time>.config
2021-11-09 23:00:53 +01:00
Zaiming Shi a27b452fe7 chore(bin/emqx): bash set -o 2021-11-09 22:59:09 +01:00
Zaiming Shi fdc4bb06d3 build: copy dynamic libs for zip package 2021-11-08 17:16:05 +01:00
Zaiming Shi ee817cfa6f fix(bin/emqx): mnesia dir name after node 2021-11-08 13:34:12 +01:00
zhongwencool d784e63b9f
emqx_conf (#5939)
* feat(emqx_conf): move conf manager for emqx_machine to emqx_conf

* chore(emqx_conf): change emqx:get_config/2 to emqx_conf:get/2

* fix: common test failed

* fix: badmatch by typo wrong key

* fix(emqx_conf): get the wrong core nodes

* fix(emqx_conf): get core node's tnx_id not latest tnx_id

* fix: add ro_transation when copy conf file

* fix: delete debug info

* fix: change ekka_rlog to mria_rlog

* fix: remove cluster_rpc from emqx_machine.

* fix: don't call ekka:start/0 explicitly

* fix: ekka should be start in emqx_machine
2021-10-21 18:08:51 +08:00
Zaiming Shi c2cf6b79b3 fix(bin/emqx): print pid info after wait 2021-09-27 11:36:04 +02:00
Zaiming Shi a17b3ad6ae chore(bin/emqx): print pid info if failed to stop 2021-09-27 10:34:21 +02:00
Zaiming Shi 01ce32094c refactor(bin/emax): delete cold_eval 2021-09-10 07:28:12 +02:00
Zaiming Shi cca3a4414f fix(bin/emqx): do not try to find vm.args file for cold_eval 2021-09-10 07:28:12 +02:00
Zaiming Shi 6f99f14540 feat(bin/emqx): add cold_eval nodetool command 2021-09-10 07:27:01 +02:00
zhongwencool 468102f462 chore: replace recon by obsserver_cli 1.7.0 2021-08-27 13:55:49 +08:00
Zaiming Shi 31b1646611 feat: inspect parent pid if emqx pid enters defunct state 2021-08-10 00:24:16 +02:00
Zaiming Shi 1a80b9dc47 fix: bin/emqx change use ps -p to check if pid is running 2021-08-09 22:46:31 +02:00
Zaiming Shi cd92f73ca1 test: add debug print 2021-08-09 22:09:11 +02:00
Zaiming Shi f1262e04bf feat: log error if timed out waiting after init:stop 2021-08-09 10:28:30 +02:00
Zaiming Shi 668ecbe97b fix: improve node stop wait loop 2021-08-09 10:28:04 +02:00
Zaiming Shi 9f3063a823 refactor: bin/emqx call fucntions for error logs 2021-08-09 10:28:04 +02:00
Zaiming Shi 562ce1a81b feat: bin/emqx pass down DEBUG if su exec 2021-08-08 11:14:20 +02:00
Zaiming Shi bc23ff5e47 feat: add graceful shutdown
prior to this cahnge emqx node shutdown is done by init:stop
which might have undesired stop order of the applications

in this change, emqx_machine_terminator is added to stop apps
in defined order and then terminate the node in infinite loop
2021-08-05 14:11:58 +02:00
Zaiming Shi 522d8e0a4a refactor(config): split config and schema 2021-08-04 08:36:10 +02:00
Zaiming (Stone) Shi 3d0cb11682
Merge pull request #5374 from zmstone/chore-delete-emqx-name-and-emqx-host-env-var
chore: delete EMQX_NAME and EMQX_HOST env variables
2021-08-03 17:08:50 +02:00
Zaiming Shi 2fd0742d2b refactor(emqx_ctl): simplify emqx_ctl 2021-08-02 20:35:24 +02:00
Zaiming Shi 8d687e50fd chore: delete EMQX_NAME and EMQX_HOST env variables 2021-07-31 12:02:38 +02:00
Zaiming (Stone) Shi cb2909dfbf
Merge pull request #5369 from zmstone/fix-boot-log
fix(bin/emqx): fix boot log
2021-07-31 08:53:15 +02:00
Zaiming Shi 2e3c98dd55 fix(bin/emqx): fix boot log
prior to this fix the logger message (syslog) has the name and pid
missing.
with this change, the programe name, and its boot command is logged
to syslog, so the console boot is cleaner
2021-07-31 00:29:53 +02:00
Zaiming Shi d68589e0cb feat(boot): make possible to boot on short name 2021-07-27 22:16:10 +02:00
Zaiming Shi 02206dd428 fix(bin/emqx): delete stale todo 2021-07-27 20:33:29 +02:00
Shawn 4d279e47d8 chore(merge): merge code from master 2021-07-17 01:20:57 +08:00
William Yang 3a7d0c3e84 fix(script): emqx die if call_hocon failed 2021-07-16 23:16:51 +08:00
Shawn 8e32d5314d
Merge branch 'master' into emqx_config 2021-07-14 09:33:58 +08:00
zhanghongtong 54c776ebdf fix(emqx-edge): fix sed error when emqx-edge start 2021-07-12 14:22:47 +08:00
Zaiming (Stone) Shi 6b3cfd7c5d
fix(boot): boot exit on config error (#5200)
* fix(hocon): fail on hocon command errors

call_hocon bash function respects exit code

* fix(bin/emax): get dist_port config from hocon

after config file refactoring (to hocon format) the grep pattern
no longer works

* fix(bin/emqx): set -o pipefail

* feat(bin/emqx): add a DEBUG option
2021-07-10 08:51:35 +08:00
Shawn 0ac2492b36 fix(config): read app env 'config_files' to get the path to emqx.conf 2021-07-08 19:27:36 +08:00
Shawn db38137d5c feat(config): apply new config struct to emqx_alarm 2021-07-01 15:00:59 +08:00
Shawn d2c50baf93 fix(config): set console_handler.enable to turewhen start from console 2021-06-30 19:24:37 +08:00
Zaiming Shi 2919623563 chore(bin/emqx): print env override when generating config 2021-06-18 09:02:25 +08:00
Zaiming Shi c3bbe2c6b6 refactor(bin/emqx): invoke hocon_cli from nodetool
nodetool has all lib paths set up correctly by reading the
persisted RELEASES file

calling hocon escript directly has two problems:
1. it may not be able to find the beams compiled
2. if we use ERL_LIBS, it may find the version after hot beam upgrade
2021-06-15 14:12:34 +02:00
Zaiming Shi 49f844b1dd feat(bin/emqx): simlified config generation commands 2021-06-15 12:35:08 +02:00
z8674558 9c6276a654 chore(bin/emqx): support license conf option 2021-06-04 22:10:16 +09:00
z8674558 b4eb0c4df6 chore(bin/emqx): use hocon get 2021-06-03 17:03:08 +09:00