Commit Graph

2701 Commits

Author SHA1 Message Date
JimMoen 31b006a0d1 fix(frame): `server_keepalive` only for MQTT v5.0 2022-02-21 18:46:53 +08:00
Ilya Averyanov 557c52dd8a chore(codestyle): remove Elvis 2022-02-18 20:35:19 +03:00
JianBo He a42927f173 chore(emqx): fix mutiply defined module in emqx.appup.src 2022-02-16 13:46:38 +08:00
Thales Macedo Garitezi 3f31df2297
docs: add comment explaining application and release vsn discrepancy 2022-02-14 13:18:53 -03:00
Thales Macedo Garitezi acf3b8cbe9
chore(emqx): update appup 2022-02-14 13:18:07 -03:00
Thales Macedo Garitezi 8302cac329
fix(channel): wrong case clause when alias is inexistent
Fixes #6978 .
2022-02-14 13:18:07 -03:00
JianBo He a88dd4aaa5 Merge tag 'v4.3.12' into main-v4.4 2022-02-14 19:37:59 +08:00
DDDHuang e9f1af8098 feat(ws): appup remove old 2022-02-11 11:16:31 +08:00
DDDHuang c6bafd5131 feat(ws): appup 2022-02-11 11:04:14 +08:00
DDDHuang 0bb01210ae feat(ws): more client metrics 2022-02-11 10:50:46 +08:00
Shawn 646ef25d96
Merge branch 'main-v4.3' into fix-ctl-print-43 2022-02-10 19:13:29 +08:00
Zaiming (Stone) Shi 1392fa0b1d Merge remote-tracking branch 'origin/main-v4.3' into merge-v4.3-to-v4.4 2022-02-10 11:25:17 +01:00
Shawn 8cf268dffb fix: emqx_message:format/1 failed on undefined message id 2022-02-10 12:43:39 +08:00
Shawn 038136fc83 fix(appup): update appup file for module emqx_message 2022-02-10 11:04:25 +08:00
Shawn 3b5b4b99ed fix(log): format the message id to hexstring before printing 2022-02-10 09:47:33 +08:00
Thales Macedo Garitezi e053700441
style: please elvis checks 2022-02-09 11:02:05 -03:00
Thales Macedo Garitezi 5e223ac64f
chore(appup): update appup files 2022-02-09 09:54:39 -03:00
Thales Macedo Garitezi b968d4c416
fix(ctl): fix formatting when printing messages without arguments (4.3)
Without passing an empty argument list to `emqx_ctl:print`, formatting
instructions like `~n` are being printed literally.

```
Ignore.~nJoin the cluster successfully.~nCluster status: #{running_nodes =>
                      ['emqx@emqx-0.int.thalesmg','emqx@emqx-1.int.thalesmg',
                       'emqx@emqx-2.int.thalesmg','emqx@emqx-3.int.thalesmg',
                       'emqx@emqx-4.int.thalesmg'],
                  stopped_nodes => []}
```
2022-02-09 09:36:27 -03:00
Shawn 31a68f4627 fix(appup): No such module: emqx_mod_sup 2022-01-28 14:33:18 +08:00
Shawn 0500c475cf fix(appup): Multiply defined module: emqx_slow_subs 2022-01-28 12:22:29 +08:00
Shawn d15fd95ad4 fix(appup): Multiply defined module: emqx_session 2022-01-28 11:54:10 +08:00
Shawn 791b22f151
Merge branch 'main-v4.4' into copy_of_main-v4.3 2022-01-27 18:46:49 +08:00
Shawn 6319c3402f fix(appup): Multiply defined module: emqx_metrics
make emqx-zip failed:

```
===> Error generating relup:
          Multiply defined module: emqx_metrics
```
2022-01-27 18:01:17 +08:00
zhongwencool e2dec09b0d fix(alarm): watermark replace >= =< with > < 2022-01-27 11:59:48 +08:00
zhongwencool 9d633507f5 fix(appup): add emqx.erl to appup.src 2022-01-26 14:32:00 +08:00
Zaiming (Stone) Shi 16a5eb4493 Merge remote-tracking branch 'origin/main-v4.3' into merge-v4.3-to-v4.4 2022-01-25 22:29:01 +01:00
DDDHuang 2eae1088ac fix(metrics): client metrics key name 2022-01-25 17:11:22 +08:00
zhongwencool 78f294cda2 fix: sys_mem alarm is not triggered after reboot. 2022-01-25 16:12:17 +08:00
lafirest 0fadc85c15
Merge pull request #6841 from lafirest/fix/slow_subs_qos2
fix(emqx_slow_subs): fix qos2 pattern matching error
2022-01-24 17:35:25 +08:00
lafirest 954e85bb73 fix(emqx_slow_subs): fix qos2 pattern matching error 2022-01-24 17:03:37 +08:00
JianBo He b635d56aec Merge branch 'main-v4.3' into merge-main-v4.3-into-v4.4 2022-01-21 16:27:56 +08:00
JianBo He 14538e5f6d chore(emqx): update appup.src 2022-01-21 14:24:01 +08:00
JianBo He c56be7dcd7 refactor(metrics): more clear for acl metrics
For clarity in the meaning of metrics, we put `client.acl.allow`,
`client.acl.deny` into emqx_metrics and increased after a acl checking
returned.
2022-01-21 11:21:25 +08:00
lafirest e82c73988b
Merge pull request #6790 from lafirest/fix/slow_subs
fix(emqx_slow_subs): add ClientInfo into the args of the delivery.com…
2022-01-19 15:54:44 +08:00
lafirest 46f86204c0 fix(emqx_slow_subs): add ClientInfo into the args of the delivery.completed hook 2022-01-19 14:02:30 +08:00
zhongwencool 24f8c353dc Merge branch 'main-v4.4' into sync-from-4.3-to-4.4 2022-01-19 11:24:57 +08:00
lafirest 6414f7e55a fix(emqx_slow_subs): add compatibility for old code 2022-01-19 09:50:31 +08:00
lafirest 696acbfc5c fix(emqx_slow_subs): change on_publish_completed to on_delivery_completed 2022-01-19 09:50:31 +08:00
lafirest 0a85e71e09 fix(appup): add slow subs into appup file 2022-01-19 09:50:31 +08:00
lafirest 44fe882f14 refactor(emqx_slow_subs): refactor slow subs 2022-01-19 09:50:31 +08:00
DDDHuang 040d04c9fb fix(test): for paho qos3 2022-01-18 18:46:03 +08:00
lafirest deada0ea44 chore(appup): update appup file and esockd version 2022-01-18 16:26:01 +08:00
lafirest eb003e3305 feat(emqx_limiter): add support for update overall limiter 2022-01-18 14:06:26 +08:00
DDDHuang 578199ad3a fix: client metrics count with qos 2022-01-18 10:38:06 +08:00
DDDHuang 6278951d57 fix: code style 2022-01-17 15:43:59 +08:00
DDDHuang 5397d80680 feat(metrics): session metrics & api format 2022-01-17 15:15:00 +08:00
DDDHuang 1ce77de080 feat(metrics): client metrics 2022-01-17 14:51:46 +08:00
Shawn 1daf2e4fc9
fix(appup): add emqx_alarm into appup file 2022-01-14 15:57:50 +08:00
Shawn 2da30465de fix(merge): solve conflicts when merge 4.4 to 4.3 2022-01-14 15:45:33 +08:00
zhongwencool 729ab6f60d
Merge branch 'main-v4.3' into auth-mnesia-default-import 2022-01-14 11:29:41 +08:00
zhongwencool ab18020eea
Merge pull request #6736 from zhongwencool/support-license-alarm-type
chore(alarm): support license alarm type
2022-01-14 11:19:48 +08:00
zhongwencool 9a17bcfcc9 chore(appup): update eqmx.appup.src 2022-01-14 11:03:27 +08:00
zhongwencool 7c0d70cfde feat(license): license expriy early alarm. 2022-01-14 00:31:56 +08:00
Shawn 4abcab8d52 fix(appup): update appup files for emqx,emqx_sn,rule_engine 2022-01-13 18:37:22 +08:00
zhongwencool c6a571c207 chore(alarm): support license alarm type 2022-01-13 17:41:16 +08:00
JianBo He b3862fb283 chore: fix the app vsn and appup.src 2022-01-13 17:30:20 +08:00
Shawn a6408cee4f fix(session): update testcases for emqx_session 2022-01-13 15:28:18 +08:00
Shawn 9f7f5070b2 fix(channel): update the calls to emqx_session APIs 2022-01-13 13:33:27 +08:00
Shawn 217acc0154 feat(rule): add new event 'delivery_dropped' 2022-01-12 20:11:08 +08:00
Shawn 9434c0fa6c feat(hook): new emqx hook 'delivery.dropped' 2022-01-12 18:34:20 +08:00
JianBo He b297388c20 Merge branch 'main-v4.3' into merge-main-v4.3-into-v4.4 2022-01-11 10:03:28 +08:00
JianBo He 02dc216173 chore: update appup.src 2021-12-23 08:48:24 +08:00
JianBo He cb8a3725b4 fix: disconnect the client due to exceed receive-maximum packets
As described in the 5.0 specification, we should disconnect clients that
exceed the receive-maximum limit.

> If it receives more than Receive Maximum QoS 1 and QoS 2 PUBLISH packets
where it has not sent a PUBACK or PUBCOMP in response, **the Server uses a
DISCONNECT packet with Reason Code 0x9**

fix: #6447
2021-12-23 08:48:24 +08:00
Shawn 799aabdd04 chore(emqx): bump emqx to 4.4.0 2021-12-20 15:12:09 +08:00
Zaiming (Stone) Shi c1cbf39552 fix(appup): add missing beams to emqx.appup.src
also re-formated emqx_sn.appup.src
2021-12-17 13:41:25 +01:00
zhongwencool b592565363 fix: trace not work if client is utf8 2021-12-15 09:53:46 +08:00
JimMoen d76159d543 Merge remote-tracking branch 'emqx/main-v4.3' into sync-from-v4.3 2021-12-13 18:46:23 +08:00
JimMoen 24060285c5 chore(appup): update appup.src 2021-12-10 18:08:47 +08:00
JimMoen 3ecc79e1bc test(frame): test packet proxy_protocol config disabled 2021-12-10 18:08:47 +08:00
JimMoen b9acf94fd7 feat(frame): better log for proxy_protocol config disabled 2021-12-10 18:08:47 +08:00
tigercl 2ed5e01054
Merge branch 'main-v4.4' into sync-from-v4.3 2021-12-09 18:49:38 +08:00
Thales Macedo Garitezi d435f1211e
fix(live_conn): fix live connection count on race condition
When multiple clients try to connect concurrently using the same
client ID, they all call `emqx_channel:ensure_connected`, increasing
the live connection count, but only one will successfully acquire the
lock for that client ID.  This means that all other clients that
increased the live connection count will not get to call neither
`emqx_channel:ensure_disconnected` nor be monitored for `DOWN`
messages, effectively causing a count leak.

By moving the increment to `emqx_cm:register_channel`, which is only
called inside the lock, we can remove this leakage.

Also, during the handling of `DOWN` messages, we now iterate over all
channel PIDs returned by `eqmx_misc:drain_down`, since it could be
that one or more PIDs are not contained in the `pmon` state.
2021-12-08 10:33:57 -03:00
Zaiming (Stone) Shi c2cc3c78f1
Merge pull request #6395 from zhongwencool/sync-from-4.3
Sync from 4.3
2021-12-08 10:57:55 +01:00
lafirest e651becd99 fix(emqx_slow_subs): fix threshold related bugs
1. limit the interval between calling hooks
2. improve the code of update threshold
2021-12-08 15:05:39 +08:00
zhongwencool 2c2145dfe6 Merge branch 'main-v4.3' into sync-from-4.3 2021-12-07 23:20:01 +08:00
Tobias Lindahl 2348e612fa fix(emqx_channel): fix race condition in session takeover
Sessions must not enqueue messages when another process is taking over
the client id, since it already passed on the message queue in the
session state.

Without this fix, messages arriving after `{takeover, 'begin'} to a
channel with no connection (i.e., a persistent session) would be lost.
2021-12-07 16:05:49 +01:00
JimMoen 14aa408b5e style: make elvis happy 2021-12-07 14:17:33 +08:00
JimMoen c5e28bd32b fix(vm): add literal_alloc memory calculation 2021-12-07 14:17:33 +08:00
lafirest 3f49e3186c fix(emqx_slow_subs): add default threshold macro 2021-12-06 17:22:36 +08:00
lafirest 48f8c735ea feat(emqx_slow_subs): add dyanamic threshold 2021-12-03 18:11:07 +08:00
JianBo He ef6f867304 chore(conn): change terminated print to debug level 2021-12-02 18:01:36 +08:00
lafirest 8dd4d88d5b
fix(emx_slow_updates): fix the error of topk update (#6312) 2021-11-26 14:57:25 +08:00
lafirest fef3fc27cb
refactor(emqx_slow_subs): refactor use moving average (#6287)
* refactor(emqx_slow_subs): refactor use moving average

* fix(emqx_slow_subs): change elapsed to latency, and fix some error

* fix(emqx_slow_subs): fix emqx_mgmt_api.erl indent

* fix(emqx_slow_subs): change api name

* fix(emqx_slow_subs): fix and improve some code

* fix(emqx_slow_subs): move clienid filed from latency_stats to session
2021-11-26 10:42:15 +08:00
Thales Macedo Garitezi 64ce2eea1c
chore(appup): run ./scripts/update_appup.escript to bump vsns 2021-11-25 12:08:02 -03:00
Thales Macedo Garitezi 0260db6640
feat(sys_mon): Add proc_lib:initial_call/1 and current_stacktrace (4.3)
(Same as #6289 )

This adds the information from `proc_lib:initial_call/1` and the
current stacktrace from the process info to `emqx_sys_mon:procinfo/1`
to aid in debugging some warnings with no context such as the
following:

```
2021-11-23T12:33:59.387818+00:00 [warning] info: [{old_heap_block_size,45988046},{heap_block_size,22177879},{mbuf_size,0},{stack_size,40},{old_heap_size,22354134},{heap_size,7106339}], line: 130, mfa: emqx_sys_mon:handle_info/2, msg: large_heap, procinfo: [{pid,<0.2667.0>},{memory,579763664},{total_heap_size,68510672},{heap_size,22177879},{stack_size,40},{min_heap_size,233},{initial_call,{proc_lib,init_p,5}},{current_function,{gen,do_call,4}},{registered_name,[]},{status,running},{message_queue_len,360945},{group_leader,<0.1660.0>},{priority,normal},{trap_exit,false},{reductions,16493271},{last_calls,false},{catchlevel,4},{trace,0},{suspending,[]},{sequential_trace_token,[]},{error_handler,error_handler}]
```
2021-11-25 12:08:02 -03:00
Zaiming (Stone) Shi 2514f474b0
Sync v4.3 to v4.4 (#6262)
* fix(http): fix duplicate http headers

* chore(appup): add appup.src

* fix(appup): fix multiply defined module in appup

* chore(appup): fix wrong version

* chore(ekka): Bump version to 0.8.1.5

* fix(update_appup): Fix warnings, add support for external repos

* build: use find command's -delete option

* ci: do not sync master branch

* build: ensure openssl11

* build: copy only libcrypto and libtinfo

* fix(trace): handler_id now always return atom

Co-authored-by: zhouzb <zhouzb@emqx.io>
Co-authored-by: k32 <10274441+k32@users.noreply.github.com>
2021-11-23 09:33:20 +08:00
Zaiming Shi 0f52824872 refactor(trace): hash non-printable or too long names 2021-11-22 16:59:17 +01:00
Zaiming (Stone) Shi 1c64a9d95d
Merge pull request #6251 from zhongwencool/log-trace-api
feat: add support ip_address trace options
2021-11-22 16:19:53 +01:00
zhongwencool 30fb9dd7ae fix: name must be printable unicode and len < 256 2021-11-22 22:20:02 +08:00
zhongwencool a91f975dc2
fix: make sure keepalive only 0~65535 (#6232) 2021-11-22 18:08:48 +08:00
zhongwencool d76275d17d feat: add support ip_address trace options 2021-11-22 15:20:24 +08:00
zhouzb 3b25df9b47 fix(appup): fix multiply defined module in appup 2021-11-17 15:18:16 +08:00
zhouzb f948eb927d chore(appup): add appup.src 2021-11-17 14:31:37 +08:00
zhouzb 5e3fe6714e fix(http): fix duplicate http headers 2021-11-17 14:14:12 +08:00
Zaiming Shi 88efc6612d Merge remote-tracking branch 'origin/main-v4.4' into chore/rename-packages-name 2021-11-16 09:47:13 +01:00
Zaiming Shi 2dc63cffea fix(emqx_misc): call gen_tcp to decide if ipv6_probe is supported 2021-11-16 08:37:53 +01:00
Zaiming Shi d05e2ff0b1 Merge remote-tracking branch 'origin/main-v4.3' into main-v4.4-alpha.1 2021-11-15 13:41:51 +01:00
lafirest 0357f7ad85
improve(emqx_st_statistics): optimize the parameters of on_publish_done (#6151)
* fix(emqx_st_statistics): optimize the parameters of on_publish_done
2021-11-15 11:00:04 +08:00
JianBo He 641f36514f chore: fix elvis warnings 2021-11-15 09:50:32 +08:00
JianBo He 6fb3ff1f9f feat(exhook): expose headers for on_messages_publish hook 2021-11-15 09:50:32 +08:00
zhongwencool 8bf6668e4c
Set keepalive via http api (#6143)
* feat: set keepalive over http api

* chore: elvis warning

* fix: bump retainer to 4.4.0
2021-11-12 20:11:59 +08:00
lafirest a4a7cac647
fix(eqmx_st_statistics): add ignore_before_create in config (#6140)
1. allows not to process the message before the session is created
to solve the problem caused by clean session = false
2. fix some elvis errors
2021-11-12 14:00:48 +08:00
zhongwencool 835ad52498
feat(trace): http api for trace (#6052)
* feat(trace): add http trace API

* feat: sub/unsub trace topic

* chore(trace): stream log use _page and _limit

* fix: elvis warning

* fix: mod_trace test failed

* fix: http api meta rename _page/_limit to _page/_limit

* fix: clientid string not working

* fix: add emqx_mod_trace to module

* fix(trace): fixed by review suggestions
2021-11-11 14:54:40 +08:00
JianBo He 86b8d88165 chore(emqx): update appup.src 2021-11-11 11:55:57 +08:00
JianBo He 8f07f26744 fix: ensure starting listeners before plugins 2021-11-11 11:37:54 +08:00
Zaiming Shi 6222e1b0eb Merge remote-tracking branch 'origin/main-v4.3' into sync-v4.3-to-v4.4 2021-11-08 21:01:14 +01:00
Thales Macedo Garitezi b9270ad719
feat(stats): track live / connected channel count for monitoring
In order to correctly display the number of connected clients in our
monitor dashboard, we need to track those connections that are
actually connected to clients, not considering connections from
persistent sessions that are disconnected.  Today, the
`connections.count` that is displayed in the dashboards considers
those disconnected persistent sessions as well.
2021-11-08 14:45:57 -03:00
k32 7d07e8d948 chore(emqx): Update version and appup file 2021-11-08 14:24:37 +01:00
k32 27afecb3ac fix(emqx_connection): Introduce backpressure while sending data
Fixes #5494
2021-11-04 15:25:34 +01:00
JianBo He f36abc281a chore(types): add comment for ver type 2021-11-04 09:11:02 +08:00
lafirest f8acb31f89 feat: add slow topics statistics plugin 2021-11-03 17:20:07 +08:00
JianBo He 2c4d3d1d24 chore(stomp): fix dialyzer warnings 2021-11-02 17:09:57 +08:00
JianBo He 763f567f7d chore(appup): update appup.src 2021-11-01 18:35:41 +08:00
JianBo He c9d39b4d35 chore(channel): remove redundant logs
Multiple sock_closed events may be generated,
so we need to allow sock_closed events to be reentrant
2021-11-01 18:17:38 +08:00
Zaiming Shi fb62487801 fix(emqx/appup): add emqx_cm to appup 2021-10-30 16:39:04 +02:00
Zaiming Shi 7f4809f61a fix(session): force kill session for 'kick' and 'discard'
Prior to this fix, 'kick' and 'discard' calls may timeout (or
fail for other reason), failures lead to only a log, then
continue to allow the new session to get registered.

As a result, in case a client is stuck, there is no way to
force it to step down, end up with multiple connections (sessions)
for the client ID in dashboard.

After this fix, the stale pids are notified to shutdown
via a gen_server:call, and forced with a exit(Pid, kill) for any
exception happend to the gen_server:call
2021-10-30 16:38:36 +02:00
Zaiming Shi 9038da0bd2 fix(ws_connection): check origin failure should return 403 not 500 2021-10-15 15:49:26 +08:00
k32 4643415b0b chore(appup): Update appup scripts 2021-10-12 17:45:10 +02:00
Ilya Averyanov 85723e4a35 fix(emqx_rpc): removed unnecessary call wrapper 2021-10-11 15:20:31 +03:00
Zaiming Shi 7804b39e08 chore(emqx.app): bump emqx app to vsn 4.3.10
app 4.3.9 was release as a part of enterprise e4.3.4
but opensource v4.3.9 is not releasd yet, but we have
to bump app version to 4.3.10 to make appup work for the next
release (either opensource or enterprise).
2021-10-05 12:03:47 +02:00
JimMoen 19031e21ec fix(frame): variable byte integer could be larger than 4 bytes. 2021-09-28 15:15:05 +08:00
k32 9b097ac73f chore(mqueue): Remove forgotten debug message 2021-09-07 11:33:16 +02:00
k32 5fc1036cf7 chore(mqueue): Implement live upgrade 2021-09-06 23:15:14 +02:00
k32 ed61999fdf chore(emqx): Bump version 2021-09-06 22:22:48 +02:00
k32 4eacaa29bd feat(mqueue): Interleave messages with different priorities 2021-09-06 22:22:48 +02:00
Shawn 1245020ec0 fix(force_shutdown): add some comments for the range of max_heap_size 2021-08-13 09:46:49 +08:00
Shawn 844133c7c5 fix(appup): always reload emqx_app 2021-08-13 09:46:49 +08:00
Shawn f9601804e5 chore(emqx): bump the emqx version to 4.3.8 2021-08-13 09:46:49 +08:00
Shawn 31a1942b61 fix(force_shutdown): cannot suicide if the process hangs up 2021-08-13 09:46:49 +08:00
Turtle c45de03ac8 chore(version): update emqx version to 4.3.7
Signed-off-by: zhanghongtong <rory-z@outlook.com>
2021-08-05 10:00:03 +08:00
Turtle 87ee94b6f2 chore(version): update emqx version to 4.3.7 2021-08-04 18:44:47 +08:00
JianBo He d3d019cb89 chore(emqx): update appup.src 2021-07-28 13:54:13 +08:00
JianBo He 07c29e8c55 chore(acl): support ipaddr list 2021-07-28 13:54:13 +08:00
Zaiming Shi dd23ee6b15 fix(emqx_app): stop listeners in application prep_stop callback
Application:stop is call after the root supervisor is stopped,
in our case, prior to this fix, emqx_sup is stopped before
the listeners (hence the emqx_connection processes).

This causes shutdown to emit a lot of error logs
e.g. emqx_broker pool is down, but emqx_connection process is still
trying to call the pool
2021-07-28 08:52:04 +08:00
Turtle 5edb5351b0 chore(relup): update emqx appup 2021-07-16 19:01:05 +08:00
JianBo He 46d0cb69dc chore(emqx): update appup.src 2021-07-13 17:53:34 +08:00
JianBo He 240a4b88a5 fix(cm): add a timeout to rpc_call function
An infinite wait will leave the client process waiting for
a return and cause the client to go to a dead state
2021-07-13 17:53:34 +08:00
Shawn 5fbf83e7f0 fix(shared_sub): discard all unexpected msgs 2021-06-28 09:37:34 +08:00
Shawn 513cd001ac chore(appup): update the appup for 4.3.5 2021-06-25 20:38:43 +08:00
Shawn 868cd6e57c fix(shared_sub): failed to clean the emqx_shared_subscription tab
A trick that fixes the issue that we demonitored the shared subscriber
too early if it not unsubscribed all of the topics.
2021-06-25 20:38:43 +08:00
Turtle 1a438125c7 chore(review): review 4.3.4 2021-06-23 17:51:17 +08:00
JianBo He 3ddbdbc6c1
fix(emqx_cm): catch noproc exception from rpc_call (#5048) 2021-06-23 09:45:24 +08:00
JianBo He bbed1b55e0 fix(ws): avoid funcation_clause for un-inited websocket 2021-06-15 11:27:47 +08:00
JianBo He 42a6f2aba5
fix(mqttsn): fix proto_name to MQTT-SN instead of MQTT (#4961) 2021-06-11 11:08:24 +08:00
Turtle eac04b243f fix(relup): fix relup badfun 2021-06-05 02:02:16 +08:00
Zaiming Shi 8bf3c511d8 test: fix a flacky test case 2021-06-04 16:04:58 +02:00
Zaiming Shi 54458e3924 chore(appup): ensure emqx_app alwasy loaded in appup 2021-06-03 13:02:49 +02:00
Tobias Lindahl 981364341e chore(appup): load emqx_channel in appup
Note that the large whitespace diff on the appup file is because this
is the first time the new script for modifying appup files is used.
2021-06-03 12:22:58 +02:00
Tobias Lindahl 90529e18c6 fix: including subscription id keeps correct return code for qos > 0
When subscription id is set, the return code was set to 0 rather than
the provided qos number due to earlier fix of acl check order.
2021-06-03 10:44:13 +02:00
JianBo He 3a89b1f00b
chore(action): fix syntax error (#4885) 2021-05-31 15:08:52 +08:00
Rory-Z 231c800f40 fix(ws connect): fix ws connect with Proxy Protocol capture wrong client-ip 2021-05-27 08:18:34 +00:00
Zaiming Shi 1e2bd2610f feat(emqx_connection): async_set_keepalive defaults to self() 2021-05-27 16:18:17 +08:00
Turtle c02a9f0101 fix(appup): update appup 2021-05-27 13:55:07 +08:00
Zaiming Shi dabf7c66ad fix: external plugin load all
Load all apps in external plugins directory
this is to allow adding other apps as external plugin's dependency
2021-05-27 13:36:57 +08:00
k32 812faf08a1 chore(logger): Update snabbkaffe to 0.13.0 2021-05-25 21:15:59 +02:00
Zaiming (Stone) Shi 37c559a08d
Merge pull request #4858 from zmstone/fix-frame-parse-split-function-clause
fix(emqx_frame): no need to split incoming bytes
2021-05-25 06:57:17 +02:00
Zaiming Shi 1ec3c2d7b9 fix(emqx_node_dump): call atom_to_binary/2
atom_to_binary/1 is added in otp 23,
we still need to support older version
2021-05-25 12:46:47 +08:00
Zaiming Shi 979e495a1e fix(emqx_frame): no need to split incoming bytes
Prior to this commit, there was a bug in emqx_frame:split/2
the tail number of bytes was used for header number of bytes
whens split. As a result, if the tail happens to be longer
then haeder, the parsing state becomes invalid and it crashes
when the next packet arrives

The split was a over-engineered micro-optimization, so it
has been deleted instead of fixed
2021-05-24 21:07:03 +02:00
Zaiming Shi 6701d716dd feat: async API to support tcp keepalive inet options 2021-05-24 19:01:13 +02:00
Zaiming Shi 623ffc7861 fix: add emqx_plugins to appup 2021-05-24 10:45:56 +02:00
Zaiming Shi 4ec1046160 fix: bad test case 2021-05-24 10:45:56 +02:00
Zaiming Shi faecde9ce1 fix(emqx_plugins): allow loading conf for plugin app dir
Prior to this change, plugin config files are only allowed
to be placed in the collective config dir etc/plugins.
In order to support external plugin's drop-in deployment,
this commit made emqx_plugins module to read conf file
in application's etc dir
2021-05-24 10:45:56 +02:00
Zaiming Shi 67245b06b1 chore: make sure emqx_app is reloaded
we bump release version number in emqx_release.hrl for each release
this version is retrieved from emqx_app module, so we must always
reload this module during hot upgrade
2021-05-22 14:56:11 +08:00
Turtle e8790f6e11 fix(mqtt-sn): Fix stop due to keepAlive at sleep mode 2021-05-21 19:22:32 +08:00
Zaiming Shi 4e1798e3f3 fix(emqx_cm): do not log noproc as error
1. websocket call exit with noproc reason.
2. do not capture stacktrace when no need for it
2021-05-19 23:16:11 +02:00
Zaiming Shi dfab9492c6 fix(emqx_connection): do not log einval error
einval happens when trying to send data to a closed socket.
2021-05-18 20:30:27 +08:00
Shawn 97e27faf05
fix(emqx): check if the congestion alarm was sent before clearing (#4824) 2021-05-18 10:34:23 +08:00
Zaiming Shi 5013fb6920 fix(node_dump): obfuscate more secrets 2021-05-17 09:17:29 +02:00
Zaiming Shi ed0ad3e796 chore: skip printing memory 2021-05-14 10:45:58 +02:00
Zaiming Shi 78fd1a80c5 fix(bench): test more publish levels 2021-05-14 10:45:58 +02:00
Zaiming Shi 55316b3ac3 perf: micro optimisation: no lookup for non-wildcard in trie 2021-05-14 10:45:58 +02:00
Zaiming Shi 3c03047c9f fix(emqx_trie): performance issue when many levels 2021-05-14 10:45:58 +02:00
Zaiming Shi 30990edbd4 fix(emqx_broker_bench): test real match performance 2021-05-14 10:45:17 +02:00
Zaiming Shi d0971ceb53 fix: add emqx appup 2021-05-14 10:42:11 +02:00
Zaiming Shi de43da881a fix(emqx_frame): poor large frame concatenation performance
piror to this change, binary concatenation eats most of the CPU
2021-05-13 22:58:22 +02:00
Zaiming Shi 1e3f7319ac fix(emqx_metrics): infinity gen_server call in upgrade 2021-05-13 22:57:44 +02:00
JianBo He c929306cb9 chore(metrics): update ets table in the metrics proc 2021-05-13 22:57:44 +02:00
JianBo He 1ba8d71e7e fix(metrics): set the retained/delayed metrics to counter type
The metrics for messages.* shows the number of times such messages are
received, and it should be a counter rather than a gauge type.
2021-05-12 22:16:14 +08:00
Zaiming Shi 1cabd140c5 fix(logging): add line-break after each JSON log 2021-05-10 12:03:01 +02:00
Zaiming Shi 18cd7e7af5 fix(emqx_logger_jsonfmt): corner test case 2021-05-07 21:25:10 +02:00
Zaiming Shi 05c5378265 feat(http_lib): add normalise_headers API 2021-05-07 10:14:19 +08:00
Zaiming Shi c81cd8550d perf(trie): do not call ets:info/2 to check if table is empty
emqx_trie table is a ordered_set, with write_concurrency set to
true, the counter is not centrialsed, the ets:info/2 call to
check size == 0 is very expensive
2021-05-06 23:27:29 +08:00
Zaiming Shi cfec4c9690 fix(logger): fix json formatter
crash when invalid string as json key.
2021-05-06 15:12:56 +02:00
k32 1db8483bb3 feat(node_dump): Hide `secret' configuration keys
Co-authored-by: Zaiming (Stone) Shi <zmstone@gmail.com>
2021-05-06 14:19:09 +02:00
k32 e6c85dfb04 fix(node_dump): Attempt to censor passwords 2021-05-06 14:19:09 +02:00
Zaiming Shi 4cff5c4dac chore: fix config doc 2021-05-06 11:03:02 +02:00
Zaiming Shi 6b0487d69d feat(logger): merge metadata to log data 2021-05-06 11:03:02 +02:00
Zaiming Shi 79181072e2 feat(logger): add formatter emqx_logger_jsonfmt 2021-05-06 11:03:02 +02:00
Zaiming Shi 92d3e16d43 perf(router): receive-mark optimise for short-lived transaction process 2021-05-05 11:00:00 +02:00
Zaiming Shi f8700e3f27 fix(emqx_packet): no crash if publish packet has no data 2021-05-04 13:48:35 +02:00
Zaiming Shi bf4baf708a fix(emqx_packet): list element index out of range 2021-05-04 09:24:54 +02:00
Zaiming Shi 171933301a fix(dashboard): display full Erlang/OTP version 2021-04-30 12:26:59 +02:00
William Yang e122ac5716 perf(broker): speedup trans when broker has a big mqueue 2021-04-29 08:52:42 +02:00
William Yang e7fc75fdf2 perf(broker): Optimization for handling bursty traffic
intro. new lock type: 'spawn' of broker.perf.route_lock_type

mnesia get lock calls are not optimized for selective receive.

hence taking locks would be very expensive while there are tones of
messages in the brokers message queue.

This optimization run the transaction in a separate process to utilize
the selective receive optimization of the compiler.
2021-04-28 15:39:46 +02:00
Zaiming Shi 29475eb610 feat(emqx_http_lib): try to parse host ip 2021-04-28 10:43:36 +02:00
Zaiming Shi b688bcfe74 feat(eqmx_misc): add an api to ensure ipv6_probe socket option 2021-04-28 10:43:36 +02:00
Zaiming Shi e54433d342 feat(emqx_vm): add api to inspect which otp version running on 2021-04-28 10:43:36 +02:00
Zaiming Shi d926800204 chore: add emqx_broker_bench.erl 2021-04-26 14:40:39 +02:00
Zaiming Shi cdacaf8694 perf(emqx_trie): use ordered_set 2021-04-26 14:18:40 +02:00
Zaiming Shi b1df759adc refactor(emqx_trie): rename internal function to match_# 2021-04-26 14:18:40 +02:00
Zaiming Shi 8d55d425dc chore(emqx_trie): add test case to cover multiple levels of + wildcards 2021-04-26 14:18:40 +02:00
Zaiming Shi eb946eb80c fix(emqx_trie): do not try to match wildcard topics 2021-04-26 14:18:40 +02:00
Zaiming Shi 22e72cdd82 refactor(emqx_trie): rename record from eqmx_topic to emqx_trie 2021-04-26 14:18:40 +02:00
Zaiming Shi bc6a87946c refactor(emqx_trie): store only prefixes
This commit refactors emqx_trie implementation
with mainly two changes

1. Deleted the edge table.

   In the old implementation, trie consist of nodes and edges.
   e.g. for topic 'a/b/+/d', node 'a' with edge 'b'
   points to node 'a/b' and so on.

   However, edges can be computed at runtime,
   so there is no need to store them in a table.
2021-04-26 14:18:40 +02:00
Zaiming Shi 7128bc9e6e chore(emqx_app): do not print 'starting' log when test 2021-04-26 14:18:40 +02:00
Zaiming Shi 5569c86319 docs(emqx_trie): no doc for internal functions 2021-04-26 14:18:40 +02:00
Zaiming Shi 6be28cecab chore(logging): default to multi-line logging 2021-04-26 11:11:27 +02:00
William Yang 907502fed0
Merge pull request #4645 from qzhuyan/dev/william/fix-issue-2985-c3
fix: issue 2985 attempt 3
2021-04-25 12:39:52 +02:00
Zaiming Shi 708420eb97 fix(emqx_connection): log true stacktrace 2021-04-25 12:01:05 +02:00
Zaiming Shi 2e6ad828a0 chore: remove copyright and license Erlang macros 2021-04-23 20:43:00 +02:00
Zaiming Shi 6354e75626 chore: update copyrights 2021-04-23 20:43:00 +02:00
William Yang 9b13bab2c9 perf: new perf toggle broker.perf.route_lock_type 2021-04-23 13:51:42 +02:00
Zaiming Shi 3547dc4c93 fix(log): client id as string for log metadata
so it does not print <<"...">> to the logs
2021-04-23 06:54:10 +02:00
Zaiming Shi fd69969014 refactor(logging): Log to single line 2021-04-23 06:54:10 +02:00
William Yang 0166bb5a87 fix: broker call should not timeout before client timeout
So change broker call timeout to infinity.
2021-04-21 18:59:46 +02:00
William Yang 17870fdb39 perf(router): add route runs in async dirty context 2021-04-21 18:59:46 +02:00
William Yang 3972a6b435 perf(trie): use global lock
Use global lock to reduce remote lock overhead.

So that emqx route trans can run in dirty *sync* context.

At least 10X subscribe/unsubscribe improvments.
2021-04-21 18:59:24 +02:00
Zaiming Shi 97f2e5d544 test(auth_http): test unset acl_req app env 2021-04-19 08:39:26 +02:00
zhouzb 49502b4e7c feat(uri): add missed function 2021-04-16 20:19:45 +08:00
zhouzb bd1051d1e6 feat(uri): support decoding uri in string 2021-04-16 20:19:45 +08:00
Shawn 4885171e4f fix(emqx): add timeout for open/kick a session 2021-04-15 23:09:58 +08:00
zhanghongtong 446a69c814 fix(ws connection): fix peer_cert_as_username error when ws connect 2021-04-15 09:06:27 +08:00
z8674558 a48e7df4f5 feat(emqx_ws_connection): check http header to know real IP/port 2021-04-14 06:45:39 +00:00
JianBo He 49b7d870e0 fix(modules): load application first for ekka_mnesia scanner 2021-04-13 09:57:33 +08:00
JianBo He 16c999ed9b
Start emqx-modules application by default (#4518)
* fix(modules): start emqx_modules by default

* chore(test): eliminate some compile warnings
2021-04-12 09:45:31 +08:00
Shawn f902d880c1 fix(emqx): rename wont_clear_alarm_in to min_alarm_sustain_duration 2021-04-10 12:17:04 +08:00
Shawn df0e905754 refactor(emqx): the congestion alarm 2021-04-10 12:17:04 +08:00
Shawn 327b0c0995 fix(mqtt_sn): send pingresp until all pubacks received 2021-04-10 09:36:56 +08:00
Yudai Kiyofuji e3a5f65c88
feat(config): print override env (#4517) 2021-04-09 16:28:01 +02:00
Zaiming Shi 7667b65710 fix(emqx): Do not io:format when testing 2021-04-09 10:18:25 +02:00
Zaiming Shi 6f5aa88562 chore(emqx_connection): Add a test case to cover oom kill 2021-03-30 10:08:13 +02:00
Zaiming Shi 6e1a55e9ed perf(emqx_connection): no priority receive
Prior to this change the main message receive loop of emqx_connection
is a priority receive which selects system messages and parent EXIT
signals prior to other message.
This accidental (not intended) design may cause the receive operation
to scan potentially large mail box.
2021-03-30 10:08:13 +02:00
Zaiming Shi 66693d6846 fix(emqx_connection): connection OOM kill immediately
Prior to this change, connection process' OOM kill is a loopback
message, which results in a delayed kill when message queue length
is large.
In this change, the loopback message is changed to an exit signal.
2021-03-30 10:08:13 +02:00
wwhai 2e30d7803f fix(channel): fix `keep-alive` problem 2021-03-30 16:01:42 +08:00
Shawn 7bf6ee0f4b
fix(mqtt-sn): sleep mode not working #4434 (#4435) 2021-03-29 17:51:49 +08:00
Zaiming Shi 6c77fa1bf7 fix(emqx_channel): Receive Maximum spec compliance
According to MQTT 5.0 specification
If the Receive Maximum value is absent then its value defaults to
65,535.
2021-03-29 09:42:07 +02:00
Zaiming Shi b10a60cddb fix(conninfo): Ensure receive_maximum do not exceed limit 2021-03-29 09:42:07 +02:00
JianBo He 496e5381fb chore(rule-engine): compatible with the lower case hash string 2021-03-25 09:10:05 +08:00
Zaiming Shi a4b30ea77c feat(emqx): Add backtrace_depth configuration 2021-03-23 21:30:49 +01:00
Zaiming Shi 4c5273c1d1 style(emqx_inflight): elvis: User UPPER_CASE macro 2021-03-23 21:30:49 +01:00
JianBo He 277cab86d3 refactor: improve the speed of hexstr and binary conversions 2021-03-23 18:25:19 +08:00
Zaiming Shi 8201e4c820 feat(emqx.erl): Add a help function to load debug secret 2021-03-19 21:46:03 +01:00
Zaiming Shi e06b54ff71 chore(boot-log): print a warning at boot when running on old otp 2021-03-19 15:39:11 +01:00
Zaiming Shi 2d150127d4 feat(listeners): Ensure no tlsv1.3 for otp 22 or earlier 2021-03-19 15:39:11 +01:00
zhanghongtong 72c1ee264c chore(elvis): fix elvis error 2021-03-19 16:11:23 +08:00
zhanghongtong 568f4de6e5 fix(channel): fix the wrong acl check order
when subscribe, check the acl rule before run 'client.subscribe' hooks
2021-03-19 16:11:23 +08:00
Shawn 81602c973c fix(emqx): deny pingreq when mqtt not connected #4370 2021-03-19 14:17:49 +08:00
Karol Kaczmarek c7b44caa1d feat(acl): Add possibility to remove all acl cache 2021-03-17 19:48:42 +01:00
William Yang d5886c0c66
chore(build): Get rel vsn fallback (#4339) 2021-03-16 09:49:11 +01:00
z8674558 e9180b9ce8 chore(emqx_messages): fix elvis 2021-03-11 16:01:35 +09:00
z8674558 9087f0c138 feat(emqx_message): add from_map 2021-03-11 16:01:30 +09:00
Shawn b400571dbb fix(emqx): validate mqtt malformed varible byte integer 2021-03-10 10:41:57 +01:00
Zaiming Shi 582dea10f5 style(emqx_sys): make elvis happy 2021-03-09 20:22:48 +01:00
Zaiming Shi e1979bf488 chore(build): Single source of EMQX_DESCRIPTION 2021-03-09 20:22:48 +01:00
Zaiming Shi 00a2daba19 chore(build): add more enterprise build support 2021-03-06 10:56:07 +01:00
Zaiming Shi 1af1dd17b5 chore(build): use 'EMQ X test' as app description for test runs 2021-03-06 08:41:50 +01:00
Zaiming Shi 73500a0983 chore(build): inject product description from makefile 2021-03-06 08:41:50 +01:00
Zaiming Shi c752f3bec5
Refactor http lib add uri parse (#4292)
* feat(http_lib): Add uri parse to emqx_http_lib

* fix(webhook): call emqx_http_lib to parse uri

* fix(auth-http): Call emqx_http_lib to parse uri

* fix(rule-engine): call emqx_http_lib to parse uri
2021-03-06 13:35:02 +08:00
Zaiming Shi 9b3ab169ce chore(versioning): detach package version from emqx app version 2021-03-04 20:24:58 +01:00
Zaiming Shi 42098b497f
Merge pull request #4283 from zmstone/add-emqx-http-lib
refactor(http-lib): Add emqx_http_lib
2021-03-04 07:14:02 +01:00
zhanghongtong 67c8b2eed7 chore: update emqx.app.src version 2021-03-04 08:10:48 +08:00
Zaiming Shi 63c001a7aa refactor(http-lib): Add emqx_http_lib
So far only uri_encode and uri_decode APIs
2021-03-03 21:38:10 +01:00
z8674558 3daefe954b chore(src): fix elvis 2021-03-03 20:06:31 +09:00
z8674558 a8558bc7b5 chore(emqx_channel): ignore peer_cert_as/5 from dialyzer 2021-03-03 20:06:31 +09:00
z8674558 e1b915b91c chore(emqx_tracer): pass proper map 2021-03-03 20:06:31 +09:00
zhanghongtong cae0849152 fix(emqx_channel): fix bug when publish deny
fix the bug of replying to puback when the publish message with Qos equal to 2 is deny
2021-03-02 17:54:22 +08:00
Zaiming Shi dd06d70bce refactor(build): Move parse_transform module to root app
So we do not have to workaround the compile order issue
2021-03-02 08:40:19 +08:00
Zaiming Shi 6e0b53fbb9 fix(eunit): fix emqx_tls_lib_tests 2021-03-01 21:00:17 +08:00
Zaiming Shi 0a51bd4c2f fix(webhook): Call common lib for ssl options 2021-03-01 21:00:17 +08:00
Zaiming Shi 700fa71754 refactor(tls): abstract lib for tls options parsing 2021-03-01 21:00:17 +08:00
z8674558 64ac20eec5 chore(emqx_listeners): fix clauses for dialyzer 2021-03-01 16:56:21 +08:00
z8674558 6ea4501de4 chore(emqx_listeners): fix type 2021-03-01 16:56:21 +08:00
Zaiming Shi 3dfa9f45c4
Merge pull request #4183 from zmstone/merge-e4.2.4-to-dev-4.3.0
Merge e4.2.4 to dev 4.3.0
2021-02-19 10:26:47 +01:00
Zaiming Shi 71d02e8011 chore(emqx_connection): delete stale code 2021-02-19 10:20:16 +01:00
Benjamin Große ca1d24a98d feature(mgmt): restart a listener
example:

```
emqx_ctl listener restart mqtt:ssl:external
```

or

```
PUT /api/v4/listeners/mqtt:ssl:external/restart
```

thank you @zmstone for providing the listener-identifier apis :)
2021-02-19 09:22:47 +01:00
Zaiming Shi 98b319a0c0
Merge pull request #4190 from zmstone/refactor-assing-names-to-listeners
feat(listeners): Add identifier to listeners
2021-02-19 07:50:27 +01:00
Zaiming Shi 64cfaf4385 improve(print): io:format error message without indentation
Avoid squeezing lines to the right.
2021-02-19 07:45:37 +01:00
Benjamin Große 28f9b4d519 feat(peer_cert_as_clientid): peer_cert_as_clientid = cn | dn | crt | pem | md5
pem is base64 encoded instead of binary crt

peer_cert_as_username=crt breaks exhook proto utf8 parsing of username

crt cannot be used in a topic name due to being invalid utf8
pem cannot be used in a topic name due to having slashes

peer_cert_as_clientid = md5 allows to e.g. subscribe to "t/%c" with ACL

existing peer_cert_as_username combinations are unaffected.
2021-02-19 10:53:11 +08:00
Zaiming Shi d2bd9b4078
Merge pull request #4197 from zmstone/improve-shared-sup-random-start-point-for-roundrobin
improve(shared-sub): Randomise the startpoint for round-robin
2021-02-18 13:26:01 +01:00
Zaiming Shi db461179c5 improve(shared-sub): Randomise the startpoint for round-robin 2021-02-17 19:10:37 +01:00
Shawn eec64e440d
fix(tracer): create short handler-id if clientid is too long (#4164)
* fix(tracer): create short handler-id if clientid is too long

No need to support lists and atoms for when tracing clients/topics.
2021-02-16 14:45:33 +08:00
Zaiming Shi a93d62ace6 refactor(cli): Print listener ID as table head 2021-02-15 10:34:47 +01:00
Zaiming Shi f9465dda16 Merge branch 'dev/v4.3.0' into merge-e4.2.4-to-dev-4.3.0 2021-02-14 21:41:23 +01:00
Zaiming Shi c5a02c729a feat(listeners): Add an api to ensure all listeners are started 2021-02-14 21:30:50 +01:00
Zaiming Shi dfa9bbc0c2 refactor(listeners): use emqx_ctl to print cli messages
It's better to keep cli print behaviour consistent.

It also makes tests easier as they can meck emqx_ctl:print to
validate the output.
2021-02-14 20:40:01 +01:00
Zaiming Shi 153977609e feat(listeners): Add identifier to listeners
Listeners are internally identifiered by the listen-on tuple
which is not UI friendly when we have to find a listener by this
'signature'.

The listeners are actually named in configs, but the names are
discarded in the parsing functions.

This commit is to keep the name and provide an API to find
listener by name (identifier).
2021-02-14 18:12:40 +01:00
Zaiming Shi dc184574a3 chore(style): fix elvis check for emqx_access_rule 2021-02-13 11:54:09 +01:00
Zaiming Shi 406a7d60c7 chore(style): fix elvis check for emqx_connection 2021-02-13 11:50:17 +01:00
Zaiming Shi 9b82112b7c Merge remote-tracking branch 'origin/dev/e4.3.0' into merge-e4.2.4-to-dev-4.3.0 2021-02-13 11:10:08 +01:00
Zaiming Shi f000b6583c fix(tls): Ensure tls config integrity
For default tsl version and ciphers, we try to use otp release number
to determin if we want to use tlsv1.3

For default configs, we try to porivde both tlsv1.3 and
ciphers in config (even for commented out configs)
2021-02-09 22:56:28 +01:00
Zaiming Shi 2852ac79d4 feat(tls): Add a tls lib module
emqx_tls_lib is added to help ensure integrity of tls version
and cipher options.
2021-02-09 21:20:26 +01:00
Zaiming Shi 7aff861f9b refactor(emqx_modules): Move emqx_modules to lib-opensource
emqx_moduels for enterprise is refactored as a lib/plugin
in order to avoid merge conflicts, we make sure they can
co-exist in the same branch, because lib-opensource is compiled
in opensource project and lib-enterprise (to be added) is
compiled in enterprise project
2021-02-08 21:35:44 +01:00
emqx-ci-robot 6c1129dc6a
Auto-pull-request-on-2021-01-29 (#4114)
* fix(share sub): fix the issue that the number of subscriptions dropped to 0 during the picking subscriber and caused a crash

* Connection Busy Alarms (#3992)

feat(emqx_connection): improve port_busy alarm

* fix(emqx_connection): tune the congestion alarm params

* chore(deps): upgrade esockd to 5.7.5
* fix(appup): correct the appup file
2021-01-30 10:30:18 +08:00
zhanghongtong d78b2b23c1 chore(build): update pkg version 2021-01-29 19:29:41 +08:00
tigercl 5878950dc3
feat(websocket): support for checking subprotocols (#4099) 2021-01-28 20:42:57 +08:00
JianBo He 02cb8d0211 chore(style): set warnings_as_errors compile option 2021-01-27 18:02:12 +08:00
Zaiming Shi de972b3d84 fix(emqx_vm): Call recon_alloc:allocators/0 to get allocators 2021-01-23 11:42:28 +01:00
Zaiming Shi 23b2f4fa72
Merge pull request #4050 from zmstone/chore-delete-stale-code
chore(emqx_vm): delete stale code
2021-01-23 11:13:22 +01:00
JianBo He 7c3cd26589 chore(elvis): fix elvis wanrings 2021-01-23 18:07:58 +08:00
JianBo He f59377adf5 fix(logs): print the correct username and clientid 2021-01-23 18:07:58 +08:00
Zaiming Shi 33c35915ca refactor(emqx_vm): make elvis happy 2021-01-22 09:23:20 +01:00
Zaiming Shi 4680ba574c chore(emqx_vm): Delete get_ets_object, not used 2021-01-22 09:21:45 +01:00
Zaiming Shi 47df29ae49 chore(emqx_vm): delete stale code
The port binary format is no longer compatible in OTP 23
2021-01-22 07:50:00 +01:00
Zaiming Shi 0087303b25 feat(shared_sub): Support hashing from source topic. 2021-01-21 21:05:56 +01:00
Zaiming Shi 5aa63ed203 fix(shared_sub): align default value and default config
Shared subscription default dispatch strategy is 'random' in config
but 'round_robin' in code. This commit is to make sure they are the
same: both are 'random'.
2021-01-21 21:05:56 +01:00
Zaiming Shi 598207e308 fix(ws_connection): proplists:get_bool for boolean flags 2021-01-15 14:28:22 +01:00
ayodele.akingbule 5794a708ed feat(emqx_ws_connection): Prevent EMQX from CSWSH Cross-Site Web-Socket Hijack 2021-01-15 14:28:22 +01:00
JianBo He 32b23b9181 Revert "feat(auth_http): support for getting websocket cookies"
This reverts commit 5427057c2c.
2021-01-14 15:10:48 +01:00
JianBo He d437f9f228 chore(elvis): fix elvis warnings 2021-01-14 15:46:16 +08:00
JianBo He f2190dd5b5 chore(mnesia): explicitly specify the copy type for table 2021-01-14 15:46:16 +08:00
JianBo He 76fc6225d3 fix(elvis): fix elvis checking 2021-01-14 15:46:16 +08:00
JianBo He 2a029b71c9 perf(mnesia): unify the copy types of all nodes 2021-01-14 15:46:16 +08:00
JianBo He 5427057c2c feat(auth_http): support for getting websocket cookies
see: https://github.com/emqx/emqx-auth-http/pull/225
2021-01-11 09:21:16 +08:00
Ayodele 2b481dabe7
Fix some dialyzer warnings (#3988) 2021-01-05 20:49:50 +01:00
ayodele.akingbule b9bb88d9eb fix(emqx): fix dialyzer warnings 2021-01-04 14:14:55 +01:00
zhouzb fbf8d3e111 fix(share sub): fix the issue that the number of subscriptions dropped to 0 during the picking subscriber and caused a crash 2020-12-31 14:03:55 +08:00
Shawn 4f82c77e7a
fix(log): improve the error log message on hook failure (#3973) 2020-12-31 13:55:09 +08:00
zhouzb ac0f51fec3 fix(max topic len): use the maximum length limit by default 2020-12-28 14:48:32 +08:00
JianBo He 739e49218f
fix(cm): fix the problem of registering a channel twice (#3831) 2020-12-28 11:03:29 +08:00
ayodele.akingbule b68a0b3730 fix(emqx_lua_hook): fix dialyzer warnings. 2020-12-25 07:42:01 +08:00
Zaiming Shi 7bdd093ef5 Merge remote-tracking branch 'origin/dev/v4.3.0' into umbrella-fix-build 2020-12-11 08:55:57 +01:00
ayodele.akingbule 6973837829 fix(emqx_plugins): Dialyzer warnings 2020-12-10 23:34:36 +01:00
Ayodele 56d7b3deb1 Umbrella fix build (#8) 2020-12-10 11:25:25 +01:00
ayodele.akingbule 59d69b730b fix(emqx_logger): Dialyzer warnings 2020-12-10 11:22:38 +01:00
ayodele.akingbule b9b20ba268 fix(emqx.erl): Dialyzer warnings 2020-12-10 11:22:38 +01:00
ayodele.akingbule 62e0a21ad0 fix(emqx_auth_sys, emqx_ws_connection): Dialyzer warnings 2020-12-10 11:22:38 +01:00
ayodele.akingbule 18ae158f45 fix(emqx_plugins, emqx_sys, emqx_sys_mon, emqx_ws_connection): Dialyzer warnings 2020-12-10 11:22:38 +01:00
Zaiming Shi baaa4e847d fix(emqx_sn_gateway): Dialyzer warnings 2020-12-10 09:49:24 +01:00
Zaiming Shi eecd2b5f35 fix(emqx_types): Non mandatory map fields 2020-12-10 09:38:07 +01:00
Zaiming Shi adc9cc30f6 refactor(emqx_modules): Swallow errors when write modules 2020-12-10 09:35:36 +01:00
Zaiming Shi d47a2294ca fix(emqx_mod_topic_metrics): Dialyzer warnings 2020-12-10 09:35:36 +01:00
Zaiming Shi 0f0ca1e9fd fix(emqx_mod_rewrite): Dialyzer warnings 2020-12-10 09:35:36 +01:00
Zaiming Shi ab5599b3ec refactor(hook): Add emqx_hooks:put to hide already_exists error
This also fixes dialyzer warnings in emqx_mod_presence
2020-12-10 09:35:36 +01:00
Zaiming Shi 5793ef6640 fix(emqx_mod_sup): Dialyzer warning
All the callers of start_child API are discarding the return value.
2020-12-10 09:35:36 +01:00
Zaiming Shi f3d973689b fix(emqx_listeners): Dialyzer warnings 2020-12-10 09:35:36 +01:00
Zaiming Shi 7a39470200 fix(emqx_connection): Dialyzer warnings 2020-12-10 09:35:36 +01:00
Zaiming Shi 7dd67a6caf fix(emqx_channel): Dialyzer warning 2020-12-10 09:35:36 +01:00
Zaiming Shi cfe52cbb8d fix(emqx_broker): Dialyzer warning 2020-12-10 09:35:36 +01:00
Zaiming Shi 0eb697fa6f fix(emqx_app): Dialyzer warnings 2020-12-10 09:35:35 +01:00
Zaiming Shi 3fb69cc407 fix(emqx_alarm): Dialyzer warnings 2020-12-10 09:35:35 +01:00
Zaiming Shi 0d90d5c66b fix(emqx_acl_cache): Dialyzer warnings 2020-12-10 09:35:35 +01:00
Zaiming Shi d4aa5ebf55 fix(emqx): Fix dialyzer warnings 2020-12-10 09:35:35 +01:00
JianBo He 7f556d36d1
Merge branch 'dev/v4.3.0' into e422_to_v430 2020-12-09 11:28:36 +08:00
Zaiming Shi 6d1cd6b7ea refactor(emqx_password): move the module to emqx application
Future plugins will require emqx as a dependency.
This commit also brings back bcrypt to the system which was temporary
removed when converting to umbrella project
2020-12-08 22:09:59 +01:00
Shawn 0ee489a9be fix(congestion): change the conn congestion alarm msg body 2020-12-07 15:05:20 +08:00
Shawn d00ea48752 feature(tcp): alarm when tcp connection congested 2020-12-07 14:35:38 +08:00
JianBo He 505257b25b chore(appup): remeove the code_change codes 2020-12-05 17:22:44 +08:00
JianBo He ae9449a004 chore: eliminate diaylzer warnings 2020-12-05 17:20:50 +08:00
JianBo He f1b3bbd7bc chore: supply the code_change logic 2020-12-05 17:20:50 +08:00
JianBo He 3b1074d11f refactor(conn): not saving anonymous func 2020-12-05 17:11:58 +08:00
JianBo He 3f924631e4 refactor(limiter): not saving anonymous function 2020-12-05 17:03:57 +08:00
JianBo He 2e7ec25ae2 chore(appup): suspend esockd_acceptor 2020-12-05 15:04:14 +08:00
Zaiming Shi 73d02beace refactor(apps): Merge emqx_libs back to emqx
And move emqx app back to root level

After realising the challenges of developing plugins in standalone
rebar projects. it is perhaps more smooth to keep using emqx as
a rebar dependency
2020-12-04 19:58:58 +01:00
JianBo He 7462ed92ba chore: eliminate diaylzer warnings 2020-12-04 22:33:29 +08:00
JianBo He ca0f6b69a4 chore: supply the code_change logic 2020-12-04 22:33:29 +08:00
JianBo He 80c503fd64 refactor(conn): not saving anonymous func 2020-12-04 22:33:29 +08:00
JianBo He 40d272815a refactor(limiter): not saving anonymous function 2020-12-04 22:33:29 +08:00
Shawn f5162562a4
chore(appup): update appup 2020-11-26 10:42:35 +08:00
Shawn aa7124f3c9
chore(appup): use binding var 'VSN' 2020-11-25 14:40:25 +08:00
turtleDeng 3ca39cb9cb
chore(appup): update version 2020-11-25 10:27:56 +08:00
zhanghongtong 3f41adc3bd chore(appup): update version 2020-11-25 01:07:19 +08:00
zhanghongtong cf7c3b4f0c fix(appup): fix syntax error 2020-11-13 17:40:36 +08:00
zhanghongtong 253c43e405 feat(emqx_metrics): add new functions to count message received 2020-11-13 16:42:48 +08:00
turtled 41a8f2f811 Merge branch 'stable/e4.2.0' of https://github.com/emqx/emqx into stable/e4.2.0 2020-11-13 10:40:28 +08:00
turtled 77d777fd11 chore(acl): rollback emqx_access_rule module 2020-11-13 10:40:14 +08:00
terry-xiaoyu 8cc69e639f fix(congestion): change the conn congestion alarm msg body 2020-11-11 17:33:38 +08:00
turtled 26c03aaa43 feat(connection): update alarm info 2020-11-11 09:37:39 +08:00
zhanghongtong e100b0a5e9 feat(emqx_metrics): add new functions to count message received 2020-11-10 23:36:11 +08:00
Shawn cc69225b6d feature(tcp): alarm when tcp connection congested (#3818) 2020-11-10 23:36:11 +08:00
JianBo He 139306b61c fix(json): fix decoding/encoding empty object error 2020-11-10 23:36:11 +08:00
JianBo He b883e238bf fix(ws): take ws_cookie to clientinfo
see: https://github.com/emqx/emqx/issues/3747#issuecomment-702268570
2020-11-10 23:36:11 +08:00
terry-xiaoyu 5a8efd9d20 feature(project): move src to apps/emqx/src 2020-10-31 09:19:28 +08:00
JianBo He b373c0cf1b fix(json): fix decoding/encoding empty object error 2020-10-24 15:49:15 +08:00
zhouzb 8462da9652 fix(topic metrics): add appup.src 2020-10-24 11:21:39 +08:00
zhouzb b927bb7af6 fix(topic metrics): calculate the rate correctly 2020-10-24 11:21:39 +08:00
JianBo He 2feeb4d91f fix(ws): take ws_cookie to clientinfo
see: https://github.com/emqx/emqx/issues/3747#issuecomment-702268570
2020-10-24 11:21:39 +08:00
bignullnull 87ef4e4dd9 chore(types): Add the disconnected_at field definition in conninfo (#3764) 2020-10-24 11:21:39 +08:00
turtled eb4b9936dc fix(modules): fix conflicts 2020-10-11 11:12:39 +08:00
terry-xiaoyu 7b98f62f7a fix(config): enable force_shutdown_policy by default 2020-09-30 11:36:30 +08:00
tigercl da4d71917f fix(ignore-loop-deliver): fix issue#3738 (#3741) 2020-09-29 15:35:16 +08:00
JianBo He 76ec65830c fix: fix session_locking_strategy enum typos 2020-09-29 15:35:16 +08:00
zhanghongtong fa31062a5e chore(topic rewrite): export more functions 2020-09-11 12:37:47 +08:00
JianBo He 3d4eac7e7a fix(json): fix safe_encode for utf8 string 2020-09-11 12:26:13 +08:00
turtleDeng edcbdcce87 improve: module_acl_internal load/unload api (#3706) 2020-09-05 17:23:22 +08:00
JianBo He 90b33b044d feature(ratelimit): support to set ratelimit & quota policy 2020-09-05 17:23:22 +08:00
terry-xiaoyu 4233ef4e85 fix(xref): correct the type spec of logger_handler_info() 2020-08-28 17:10:26 +08:00
terry-xiaoyu 9985e2675c fix(logger): resolve issues when starting and stopping log handlers 2020-08-28 17:10:26 +08:00
terry-xiaoyu faf0b5289c feature(logger): support starting and stopping log handlers 2020-08-28 17:10:26 +08:00
JianBo He e411b4bad3 fix(cm): fix never matching clause 2020-08-28 17:10:26 +08:00
zhouzb 261bd66a3d refactor(alarm): refactor resource down alarm 2020-08-22 15:27:11 +08:00
zhouzb 7a2a01a4de fix(mqtt piggyback): bad data type 2020-08-22 15:27:11 +08:00
zhouzb ec12acc4ef feature(mqtt piggyback): transporting mutli MQTT packets at once or single 2020-08-22 15:27:11 +08:00
zhouzb cfcbc53a8b refactor(alarm): remove excess case 2020-08-22 15:27:11 +08:00
zhouzb c2cc8ab218 feature(resource-down-alarm): add resource down alarm 2020-08-22 15:27:11 +08:00
tigercl 901573c6a5 fix(topic-metrics): fix the issue that the corresponding data is not properly cleaned up when unregistering (#3679) 2020-08-22 15:27:11 +08:00
Rory Z f47e10e08a feature(emqx_mod_rewrite): separate rewrite rules for pub and sub (#3676) 2020-08-22 15:27:11 +08:00
zhouzb dbeabf3de0 refactor(telemetry): remove telemetry code from emqx core 2020-08-22 15:27:11 +08:00
JianBo He 9e5e6f2e98 fix(guid): compatible with OTP 23 2020-08-22 15:27:11 +08:00
zhanghongtong a76be8e0fa chore: fix the compilation error when there is "/" in the branch name 2020-08-22 15:27:11 +08:00
tigercl e37a70509b feature(telemetry): support for collecting telemetry data and disable it by default (#3653) 2020-08-14 16:58:08 +08:00
JianBo He 98faa698f3 feature(quota): add quota confs to limit the number of message forwards 2020-08-14 16:58:08 +08:00
JianBo He 89377aeaa2 improve(type): refine the message header types 2020-08-14 16:58:08 +08:00
zhouzb 87780c1c1b fix(static-cluster): fix the issue that static cluster failure caused by the wrong way of creating tables 2020-08-14 16:58:08 +08:00
zhouzb aaf29ee164 fix(alarm): fix the issue that memory watermark were not set correctly 2020-07-31 18:07:20 +08:00
zhouzb 1ba4743213 refactor(alarm): new data structure and support regular cleaning of deactivated alarms 2020-07-31 18:07:20 +08:00
zhouzb 5676026e2a fix(alarm): missing partition alarm 2020-07-31 18:07:20 +08:00
zhouzb 43b49edd28 feature(alarm): new design for alarm 2020-07-31 18:07:20 +08:00
zhanghongtong 0817761aee fix(emqx_channel): EMQ X replaces MQTT properties when node connects using "topic-alias-maximum" property 2020-07-31 18:07:20 +08:00
zhouzb 00bc525d8e refactor(add-log): log when subscription fails 2020-07-31 18:07:20 +08:00
JianBo He 83a2af812f feat(ratelimit): refactor ratelimit 2020-07-31 18:07:20 +08:00
zhanghongtong 961e7b9818 chore: update app.src.script 2020-07-20 10:08:47 +08:00
Rory Z 492d224728
Auto-pull-request-on-2020-07-17 (#3600)
* refactor(channel): skip the ACL checking for inner subscribe
* fix(props): fix the prop_emqx_sys results of judgment
* Update esockd to 5.7.1
* test(topic-metrics): add test cases for topic metrics
* perf(emqx_vm): make emqx_vm:get_memory/0 more efficiency
2020-07-17 18:25:46 +08:00
terry-xiaoyu 211c800e24 fix(properties): downlink will msg contains non-publish properties
The paho test failed because the client received a will message
that has an `Will-Delay-Interval` property.

All the 7 allowed PUBLISH properties are listed as follows:

```
'Payload-Format-Indicator',
'Message-Expiry-Interval',
'Response-Topic',
'Correlation-Data',
'User-Property',
'Subscription-Identifier',
'Content-Type'
```
2020-06-21 11:27:22 +08:00
JianBo He 600b1055f3 fix(json): convert a proplists to ejson instead of map 2020-06-20 15:42:07 +08:00
tigercl 1b6a586948
feature(mqtt): support response information (#3533) 2020-06-20 15:07:37 +08:00
zhanghongtong 8707afa54c fix(enhanced_auth): fix bug when "conn_props = undefined" 2020-06-20 14:29:20 +08:00
JianBo He 9a8859a44c refactor(topic): move triples/1 func into emqx_trie module 2020-06-18 17:38:34 +08:00
JianBo He e3489b9d46 refactor(style): improve all types declaration
- Add dialyzer for code analysis
- Correct all the module type declarations
- Use `-type()` to declaration a type instead of `-opaque`
  (It is advantageous to the code dialyzer)

BROKEN CHANGES:
- Add a ?DEFAULT_SUBOPTS for emqx_broker:subscribe/1,2,3
- Remove the needless internal function `emqx_vm:port_info(PortTerm, Keys)`
2020-06-18 17:38:34 +08:00
terry-xiaoyu 6ad65d587e feature(properties): add properties in message header
1. Add MQTT5.0 properties when invoking the hooks.

- Add a new key `properties` into the message header:

  We used to put all of the properties into the `#message.headers`:

  ```erlang
  #message{headers = #{'User-Property' => {<<"reason">>,<<"normal">>},
                       'Message-Expiry-Interval' => 60,
                       allow_publish => true}
  ```

  I put them instead under a single key:

  ```erlang
  #message{headers = #{properties =>
                        #{'User-Property' => {<<"reason">>,<<"normal">>},
                          'Message-Expiry-Interval' => 60},
                       allow_publish => true}
  ```

  Note that the column `properties` may contain all the properties for
  Publish and Will messages.

- Add `disconn_props` into the `Channel.conninfo`

- Add `puback_props` also into the message header:

  ```erlang
  #message{headers = #{puback_props =>
                        #{'User-Property' => {<<"reason">>,<<"normal">>}},
                       allow_publish => true}
  ```

2. Change the data type of `#message.headers` and `#message.flags` to map.

   It used to support `undefined`.
2020-06-17 18:46:26 +08:00
JianBo He ea2a424ce2
Add ensure/2 funcs to avoid needless logs (#3483) 2020-06-04 10:46:53 +08:00
zhouzb f456f40c59 Subscribe or unsubscribe via HTTP API skip ACL checking 2020-06-04 10:45:58 +08:00
JianBo He 42fc81338c Fix(modules): correct the bad return value for emqx_modules:load/0 2020-06-04 10:38:28 +08:00
JianBo He 3fb82f7234 Fix(connect): fix the race condition for openning session
- Remove the register_channel/1,2 functions
2020-06-02 17:21:06 +08:00
terry-xiaoyu 59f95f8421 Helpful message when no commands available 2020-05-23 09:41:25 +08:00
zhouzb 83b1f3e6c8 Fix unexpected packet before connected 2020-05-22 18:18:52 +08:00
JianBo He 18ae15ef9a Fix typos 2020-05-21 17:51:22 +08:00
terry-xiaoyu 1f07700930 Print helpful messages when no commands available 2020-05-16 08:48:05 +08:00
zhouzb 80e2bd19b9 Fix case_clause in issue#3455 2020-05-12 10:39:22 +08:00
JianBo He 48d6acdb25 Replace peercert with cn/dn feilds in ClientInfo 2020-04-30 16:35:15 +08:00
zhanghongtong c35a40a6b6 Fix some error for reauthentication 2020-04-28 11:48:07 +08:00
qingchuwudi 7ba801c8d4
Fix reload acl module and clean acl caches (#3409) 2020-04-26 15:45:55 +08:00
zhouzb 7cf97acddd Delete expiried client 2020-04-26 15:38:29 +08:00
zhanghongtong 021520315a Update enhanced auth hooks 2020-04-24 10:21:22 +08:00
tigercl b37c61fdb5
Merge pull request #3392 from emqx/print
Optimize cli print
2020-04-17 18:05:37 +08:00
tigercl 5922f5358e
Merge pull request #3396 from emqx/add_hook_to_auth_packet
Add hook to auth packet
2020-04-17 18:05:25 +08:00
zhouzb 6cab60b6ab Export emqx_modules:find_module/1 2020-04-17 11:02:40 +08:00
zhanghongtong dccf3560f0 Add hook to auth packet 2020-04-16 16:07:01 +08:00
zhouzb fb661b1d92 Support return all registered topics 2020-04-16 10:35:35 +08:00
zhouzb eebc5e4b0a Optimize cli print 2020-04-15 18:05:30 +08:00
terry-xiaoyu e806a96031 Change timestamps to millisecond 2020-04-15 09:03:52 +08:00
张奇怪 9ba938b9d9
EMQX failed to start when the listening port was occupied (#3354) 2020-04-11 10:18:35 +08:00
turtleDeng d49f4118fe
Mgmt emqx modules (#3376) 2020-04-10 19:55:21 +08:00
张奇怪 d4932533ca
Auth packet (#3374) 2020-04-10 19:45:18 +08:00
JianBo He 1790cde942 Get client's addr/port from proxy header if enable proxy_protocol 2020-04-10 19:40:10 +08:00
zhouzb 49440bd2e3 Export functions 2020-03-27 18:22:59 +08:00
JianBo He edb42b1b0f Set topic alias on v5 only 2020-03-27 17:02:38 +08:00
zhouzb 792a14aaf7 Fix plugin test case 2020-03-27 15:31:11 +08:00
tigercl 55a8b1b173
Support topic metrics (#3341)
Support topic metrics
2020-03-27 13:33:10 +08:00
张奇怪 78144c0ca5
Update error log (#3342)
Optimize content of error log
2020-03-27 10:10:23 +08:00
tigercl 5eadca1782
Merge pull request #3335 from emqx/reload_plugin
Read new configuration items when plugins is loaded
2020-03-26 18:35:49 +08:00