Commit Graph

2421 Commits

Author SHA1 Message Date
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
tigercl 5c5267c96b
Merge pull request #3327 from emqx/fix_json_encode
Fix emqx_json encode return types error
2020-03-26 18:33:16 +08:00
JianBo He 9e6966110d
Move emqx_delay_publish here (#3323)
Move emqx_delay_publish here
2020-03-26 18:32:24 +08:00
zhouzb 9398865741 Fix the issue that configuration was not loaded when plugin started 2020-03-25 10:30:08 +08:00
张奇怪 59adb9a652
Supports broker-to-client topic aliases (#3325) 2020-03-24 15:23:01 +08:00
张奇怪 2ab6ec418e
Add subscription option for proxy subscribing 2020-03-24 11:31:25 +08:00
zhouzb 3b537760d5 Read new configuration items when plugins is loaded 2020-03-23 15:23:38 +08:00
JianBo He 95baee8c8e Fix emqx_json encode return types error 2020-03-21 13:38:48 +08:00
JianBo He 7e00b58db5
Remove the CONNACK's `Maximum-QoS` key if it equal to 2 (#3321) 2020-03-17 17:56:34 +08:00
JianBo He b2e5b523dd
Change global_gc to major mode (#3317) 2020-03-17 14:28:58 +08:00
terry-xiaoyu 1221b8eb00 Force utf8 json encoding by default #3287 2020-03-11 11:18:12 +08:00
JianBo He 47720b906f Fix `peer_cert_as_username` option not working
see #3281
2020-03-05 15:55:39 +08:00
zhouzb ad7cbb4428 Fix einval after socket was closed 2020-03-05 14:28:12 +08:00
zhouzb caed16f57b Fix `acl_deny_action` 2020-03-05 14:27:41 +08:00
terry-xiaoyu 6b5a8949c5 Change rate limit pausing logs to warning 2020-03-02 18:26:37 +08:00
JianBo He 9b6a8ebe84 Fix emqx_json:to_ejson 2020-02-21 13:17:12 +08:00
JianBo He 3f6f0eca40
Add an option to allow client bypass auth plugins 2020-02-21 09:42:26 +08:00
JianBo He f6b0ad8873 Ignore some discarded exceptions 2020-02-17 09:40:44 +08:00
张奇怪 f29a8b0d5c
Mqtt protocol tests (#3237)
Add more test cases for MQTT
2020-02-07 10:07:36 +08:00
zhouzb 839465fbd8 Enhance security 2020-02-07 09:19:21 +08:00
JianBo He b9bdb03005 Decode/Encode json from nested proplist 2020-02-06 12:00:18 +08:00
zhouzb 368b85027e Fix issue#3228 2020-02-04 16:30:38 +08:00
JianBo He 3c459e8e74
Compatible jsx encode/decode (#3230) 2020-02-04 16:18:19 +08:00
terry-xiaoyu 367398e965 Remove jsx from app.src 2020-01-19 19:41:13 +08:00
Feng Lee eea377eb8f Replace 'jsx' with 'jiffy' and add more test cases 2020-01-19 16:58:51 +08:00
Feng Lee b3e2cc5a18 Replace 'jsx' with 'jiffy' to optimize json encode/decode 2020-01-19 16:58:51 +08:00
JianBo He e17241884c Send DISCONNECT packet for mqttv5 (#3183) (#3208) 2020-01-17 19:48:39 +08:00
Feng Lee f4081b5885 Tune the global GC 2020-01-17 18:32:00 +08:00
turtleDeng 7a2234c608 Improve emqx_mqtt_caps:get_caps/1 (#3198) 2020-01-17 16:29:46 +08:00
tigercl 8734922abb Fix rap handling and keep the value of retain flag in bridge mode (#3189) 2020-01-17 11:37:28 +08:00
turtleDeng 2897e4fa06 Fix the bug that cannot add a second MQTT-WS TCP Port (#3196) 2020-01-17 10:08:34 +08:00
Feng Lee a318532bb0 Tuning the 'force_gc_policy' of MQTT connections (#3192)
Tuning the 'force_gc_policy' of MQTT connections
2020-01-17 09:42:16 +08:00
Feng Lee 2b3003b323 Move the global GC server from 'emqx-recon' to 'emqx' project (#3190) 2020-01-16 23:45:17 +08:00
turtleDeng f6b2c9a69f Correct timestamp for banned (#3188) 2020-01-16 23:11:19 +08:00
Feng Lee 2ba624ac31 Add 'compose/1', 'compose/2' functions 2020-01-13 21:00:40 +08:00
zhanghongtong fdeade3212 Add more test cases 2020-01-09 20:01:46 +08:00
JianBo He b1a22931f4
Add testcase for takeover (#3160) 2020-01-09 12:26:24 +08:00
JianBo He 7d3a08dc13
Improve 'client.connect', 'client.connack' hooks (#3153) 2020-01-04 10:44:17 +08:00
turtleDeng 6b8ffc386a Fix WS reason code (#3149) 2020-01-04 10:06:50 +08:00
zhouzb 7ea75f4289 Update copyright 2020-01-03 18:31:08 +08:00
turtled f33217c049 Fix unexpected timeout 2019-12-31 09:06:58 +08:00
zhouzb 597558fee8 Fix unexpected timeout 2019-12-30 21:27:47 +08:00
Feng Lee 46ca3f2f82 Add metrics for session's lifecircle
- session.created
- session.resumed
- session.takeovered
- session.discarded
- session.terminated
2019-12-30 09:29:41 +08:00
Feng Lee 12c6d5fe2c Add more metrics for client's lifecircle
- client.connect
- client.connack
- client.connected
- client.authenticate
- client.check_acl
- client.subscribe
- client.unsubscribe
- client.disconnected
2019-12-30 09:28:55 +08:00
Feng Lee 9a3d16c654 Add 'emqx_packet:info/2' function and test cases 2019-12-30 09:28:38 +08:00
Feng Lee b7ca3905a6 Breaking Change: Add new hooks for client and session lifecircle (#3138) 2019-12-27 16:31:06 +08:00
JianBo He d000284a40 Merge branch 'caps' into develop 2019-12-21 16:04:41 +08:00
turtleDeng b612674ffa
Update emqx_mqtt_caps.erl 2019-12-21 14:16:37 +08:00
JianBo He b3eed9123f Fix typo 2019-12-21 10:39:02 +08:00
Feng Lee 578355442b Add more metrics and improve the 'channel', 'session' modules (#3128) 2019-12-20 21:47:32 +08:00
张奇怪 2cf3af12ef Update test cases for emqx_connection (#3116) 2019-12-20 19:15:45 +08:00
tigercl 116c593178 Fix returned value of plugin reloading (#3126) 2019-12-20 16:34:07 +08:00
JianBo He 9b9df46718
Add sockport to ClientInfo (#3122) 2019-12-19 13:34:24 +08:00
zhouzb 70ae3c75a0 Remove emqx_time module 2019-12-17 09:38:33 +08:00
turtled eea5e14b0c Fix event/message out of order 2019-12-16 22:12:56 +08:00
Feng Lee 814f103e34 Fix issue#3109 - remove the 'sessions.persistent.count', 'sessions.persistent.max' stats 2019-12-16 16:41:42 +08:00
Feng Lee 1f25f4439f Remove the 'stop_reason' field 2019-12-16 12:45:46 +08:00
Feng Lee 635c3f75fe Improve the 'emqx_connection' module for CT 2019-12-16 11:25:47 +08:00
Feng Lee ad9e0fc311 Support the 'clean_start = false' websocket connection 2019-12-16 11:25:47 +08:00
Feng Lee 2ef52828bc Improve 'emqx_connection' module and update test cases 2019-12-16 11:25:47 +08:00
zhouzb 7ac60678de Add test cases for emqx_cm and emqx_router_helper modules 2019-12-13 18:09:48 +08:00
Feng Lee c5c99b7c4e Improve 'emqx_ws_connection' module and add more test cases 2019-12-13 18:07:59 +08:00
tigercl 2a3baed7e0
Merge pull request #3103 from emqx/ws-conn-ct
Rename 'channel.gc.cnt' to 'channel.gc'
2019-12-13 18:04:54 +08:00
Feng Lee d193b5fa0d Rename 'channel.gc.cnt' to 'channel.gc' 2019-12-11 20:39:51 +08:00
Feng Lee d1c3dec730 Optimize emqx_session and add more test cases 2019-12-11 13:44:52 +08:00
zhouzb e30c0ac31d Change log level for existing metric 2019-12-10 17:20:21 +08:00
zhouzb ec2f758c9f Use erlang:system_time/1 2019-12-10 09:25:39 +08:00
JianBo He 08e234f61e Fix typo 2019-12-10 09:24:33 +08:00
Feng Lee 0f9f1258b6 Improve the emqx_message module and add more test cases
- Add 'emqx_message:clean_dup/1' function
- Clean dup flag before publishing a message
- Add more test cases for emqx_message module
2019-12-10 09:22:38 +08:00
Feng Lee cd94ba71b4 Remove the 'try' ... 'catch' 2019-12-10 09:01:55 +08:00
Feng Lee 0c377c67cd Use 'erlang:system_time' to replace 'os:timestamp' (#3088)
Use 'erlang:system_time/1' to replace 'os:timestamp/0'
2019-12-09 16:27:25 +08:00
zhouzb dace882667 Fix will message 2019-12-07 17:06:22 +08:00
Feng Lee dc3e7dc21c Ignore the expired messages 2019-12-07 16:51:20 +08:00
Feng Lee bbcd2bffc5 Improve the session module (#3082)
Improve the session module
2019-12-07 15:54:02 +08:00
zhouzb 32500685a1 Export emqx_cm:kick_session/2 2019-12-07 13:35:55 +08:00
zhouzb 5b949fda2c Add emqx_cm:kick_session/1 2019-12-07 13:31:33 +08:00
Feng Lee 9c3273a2c6 Improve the process of handling MQTT control packets (#3079) 2019-12-06 19:51:06 +08:00
tigercl 98b109b6b2
Merge pull request #3074 from emqx/emqx_desc
Add emqx.app.src.script
2019-12-05 18:01:24 +08:00
turtled dceb087039 Format code 2019-12-04 13:54:59 +08:00
turtled 4b59db62fa Optimize caps 2019-12-04 13:52:01 +08:00
turtled 691c6aa182 Add emqx.app.src.script 2019-12-04 13:50:31 +08:00
turtleDeng a540958846 Add mqtt.strict_mode configuration (#3069)
Add mqtt.strict_mode configuration
2019-12-04 10:54:52 +08:00
zhouzb 8bf06b9c63 Fix typo 2019-11-23 10:53:27 +08:00
tigercl f44b8ce607
Avoid emqx crashes due to auth plugins (#3047)
Avoid emqx crashes due to auth plugins
2019-11-23 10:11:48 +08:00
zhouzb 790c729b1f Optimize code 2019-11-21 16:26:50 +08:00
JianBo He d7ddc406fa Fix ConnInfo of client.connected hook 2019-11-21 15:01:57 +08:00
Feng Lee 1af1fc4f6a Fix the check of limiter 2019-11-18 11:51:58 +08:00
Feng Lee 39dbb03629 Fix the 'undefined function' call 2019-11-18 11:11:20 +08:00
zhouzb c9963b1df5 Replace esockd_net with inet 2019-11-18 10:58:15 +08:00
tigercl 6288cd1345
Merge branch 'develop' into bump-version 2019-11-18 10:53:33 +08:00
tigercl d793c4256f
Merge pull request #3034 from emqx/rm-vm-module
Improve the emqx_vm module and update test cases
2019-11-18 10:51:54 +08:00
tigercl b10cd85ba3
Merge pull request #3033 from emqx/flapping2
Optimize flapping and banned modules
2019-11-18 10:50:35 +08:00
tigercl 2ad701361d
Merge pull request #3031 from emqx/more_test_cases
Add more test cases
2019-11-18 10:49:56 +08:00
Feng Lee 4935ba11a8 Upgrade deps to ekka v0.7.0 and esockd v5.6.0 2019-11-18 10:40:53 +08:00
zhouzb 73275a2b4d Replace inflight with inflight_cnt in STATS_KEYS 2019-11-18 10:24:23 +08:00
Feng Lee 17332b0465 Improve the emqx_vm module and update test cases 2019-11-14 10:40:55 +08:00
Feng Lee d3107facf9 Validate packet id if strict mode. 2019-11-14 09:46:56 +08:00
zhouzb 2fb4d66496 Optimize flapping and banned modules 2019-11-14 09:37:37 +08:00
zhanghongtong 1072536382 Add more test cases for emqx_sup 2019-11-13 18:30:02 +08:00
zhanghongtong b22a1a87ba Add more test case for emqx_plugins 2019-11-09 21:26:15 +08:00
zhanghongtong f1ae430d43 Add more test cases for emqx_sys 2019-11-08 17:01:10 +08:00
terry-xiaoyu df3d7b628b Update emqx_ws_connection for clientinfo 2019-11-01 21:36:30 +08:00
terry-xiaoyu 3cc2bf2bfa Merge branch 'develop' into make_test_cases_pass 2019-11-01 20:05:52 +08:00
zhouzb 0be06a93d6 Fix test cases 2019-11-01 18:38:30 +08:00
terry-xiaoyu d946848d42 Improve testcases for emqx_logger 2019-11-01 18:21:46 +08:00
tigercl 1a901942f7
Merge pull request #3007 from emqx/improve-connection
Improve the 'connection', 'channel' and 'zone' modules
2019-11-01 16:40:20 +08:00
tigercl 81a507c6fa
Merge pull request #3012 from emqx/add_more_test_cases
Add more test cases
2019-11-01 16:40:00 +08:00
tigercl b3731aaff4
Merge pull request #3010 from emqx/test_cases_zhou
Add test cases and fix bugs
2019-11-01 16:29:00 +08:00
zhouzb c5ad674dd7 Add test cases and fix bugs 2019-11-01 15:48:28 +08:00
Feng Lee 2b1b58fc66 Add the new 'emqx_limiter' module 2019-11-01 08:10:58 +08:00
Feng Lee 6f30dca4ba Add more option APIs 2019-11-01 08:10:26 +08:00
Feng Lee d256387cee Ensure the 'inc_sent/1', 'inc_recv/1' to return 'ok' 2019-11-01 08:09:45 +08:00
Feng Lee 30adfc18e6 Remove 'gc_state' and 'pub_stats' from channel's state 2019-11-01 08:08:38 +08:00
Feng Lee 605a03453e Remove the 'emqx_time' module and use 'erlang:system_time/1' 2019-11-01 08:07:34 +08:00
Feng Lee 223163d5b9 Remove the 'emqx_oom' module 2019-11-01 08:00:35 +08:00
Feng Lee 4c9dda105f Add 'active_n' option for WebSocket listener 2019-11-01 08:00:11 +08:00
zhanghongtong 971a361ea9 Add more test cases for emqx_logger and fix bug for emqx_logger 2019-10-29 14:27:47 +08:00
terry-xiaoyu 3405dbaf5c Ordered messaging via multiple gen_rpc clients 2019-10-28 21:01:53 +08:00
terry-xiaoyu f7d3c01308 Merge branch 'develop' into clean_acl_cache 2019-10-28 18:02:41 +08:00
terry-xiaoyu c1d768ff74 Add API for clean and get acl cache 2019-10-28 17:53:53 +08:00
Feng Lee ebef0ec554 Add zone_options module 2019-10-28 07:51:09 +08:00
张奇怪 c713d619da
Add more test cases (#2992)
* Add more test cases for emqx_stats and emqx_os_mon
Fix test case error for emqx_ws_connection

* Add more test cases for emqx_sys_mon

* Update erlang otp to 22.1 for travis ci

* Delete readable=false for make ct

* Add unset_all_env for emqx_zone and update test cases
2019-10-24 15:41:26 +08:00
turtled 1dfbe8e166 Fix WS badmatch 2019-10-22 09:11:42 +08:00
Feng Lee fca7a7e761 Merge branch 'connection-test-using-meck' into develop 2019-10-21 19:53:53 +08:00
terry-xiaoyu cb77b229b8 Add testcase for emqx_logger_formatter 2019-10-21 18:35:32 +08:00
Feng Lee 7117dde879 Add more test cases for connection, channel and session modules 2019-10-21 17:14:50 +08:00
Feng Lee 26eab630b3 Add test cases for emqx_channel module 2019-10-20 19:20:38 +08:00
Feng Lee aecda09b9a Add more test cases 2019-10-19 20:18:34 +08:00
Feng Lee cd4adbada0 Add more test cases for connection, channel and session modules 2019-10-18 18:53:31 +08:00
Feng Lee 53dda48833 Fix the 'function_clause' error when session is undefined 2019-10-14 17:01:41 +08:00
Feng Lee a1877f3f42 Return the '{enter, connected}' event first 2019-10-14 13:04:49 +08:00
Feng Lee 6233aa7d46 Ensure the 'conn_state' be 'disconnected' after socket closed 2019-10-12 19:14:33 +08:00
Feng Lee 932821360f Merge branch 'new-connection-module' into develop 2019-10-12 17:08:48 +08:00
Feng Lee cce0dbd3cf Improve the connection, ws_connection and channel modules 2019-10-12 17:05:37 +08:00
terry-xiaoyu 47a192ee34 Avoid process crash report for arbitrary exit reason 2019-10-12 14:48:39 +08:00
terry-xiaoyu ebea3cc392 Defend the ssl upgrade failure 2019-10-12 09:34:28 +08:00
zhouzb 7512d6cb03 Check topic level for publish packet and optimize the handling of rap 2019-10-12 09:33:47 +08:00
Feng Lee 0c37c65a59 Add a new type 'sockstate/0' 2019-10-10 13:59:34 +08:00
Feng Lee e718fa8249 Rewrite the 'emqx_connection' module using a raw erlang process 2019-10-08 17:59:11 +08:00
zhouzb ddd68e600d Fix missing cases 2019-09-29 15:32:53 +08:00
Feng Lee fe2a72c664 Add 'state' field to channel info 2019-09-29 11:47:31 +08:00
Feng Lee 977b551bbf Fix the test cases for session, channel and connection modules 2019-09-29 10:53:59 +08:00
Feng Lee 8ab682151d Improve the connection and channel modules
- Rename the 'client_id' field to 'clientid'
- Support publish stats in channel module
- Update test cases for frame and channel modules
2019-09-29 10:22:02 +08:00
Feng Lee 7b1a80c265 Rename 'mailbox_len' to 'message_queue_len' 2019-09-27 20:26:54 +08:00
Feng Lee 89b03eb9a6 Add function specs 2019-09-24 17:08:06 +08:00
Feng Lee 609f442ea9 Add function 'get_counters/1' 2019-09-24 17:07:32 +08:00
Feng Lee 20ddd498fc Rename the 'client_id' field to 'clientid' 2019-09-24 17:06:25 +08:00
Feng Lee 98b7e3d948 Rename the type 'client()' to 'client_info()'
- Rename tye type 'client()' to 'client_info()'
- Rename the 'client' field of channel to 'client_info'
- Fix the function specs
2019-09-21 15:27:05 +08:00
terry-xiaoyu eb0826ef3f Fix testcases for new object field protocol 2019-09-21 12:37:08 +08:00
terry-xiaoyu 18edf5cec3 Add protocol in client object 2019-09-21 12:20:20 +08:00
terry-xiaoyu ab9d7232a9 Reset peerport 2019-09-20 22:57:01 +08:00
terry-xiaoyu 464746e9a5 Add peerport 2019-09-20 22:42:07 +08:00
terry-xiaoyu 0bd69ba059 Fix connack reason code when crash 2019-09-20 22:30:16 +08:00
terry-xiaoyu b29ceb9f6b Fix connack reason code when crash 2019-09-20 22:27:02 +08:00
terry-xiaoyu d0908bc70f Improve the pipeline error msg 2019-09-20 21:40:15 +08:00
terry-xiaoyu 9e1f1b22c3 Fix typo 2019-09-20 21:35:02 +08:00
terry-xiaoyu 1decab9369 Fix channel crash before CONNECT 2019-09-20 21:30:18 +08:00
zhouzb db1cf4469b Fix crash 2019-09-20 20:27:08 +08:00
tigercl b72a82e50b
Merge pull request #2919 from emqx/fix-test-cases
Add 'unregister_channel/1' function and test cases
2019-09-20 19:57:47 +08:00
Feng Lee d0a8086d73 Add 'unregister_channel/1' function and test cases 2019-09-20 19:42:59 +08:00
terry-xiaoyu 4d214fb6e2 Fix session not saved after maybe_resume_session 2019-09-20 18:28:44 +08:00
zhouzb f0a1ffc3b1 Fix test case 2019-09-20 17:58:31 +08:00
Feng Lee 6aac73f51f Fix the test case 't_handle_disconnect' 2019-09-20 16:48:21 +08:00
Feng Lee a9daa3c821 Fix the merge conflicts 2019-09-20 16:38:02 +08:00
terry-xiaoyu b5c9def06a Add testcases for print and usage 2019-09-20 16:18:24 +08:00
Feng Lee 1a3261b186
Merge branch 'develop' into remove-protocol-module 2019-09-20 16:17:44 +08:00
zhouzb 24bfaa768d Call emqx_flapping:detect and generate alarm when flapping is detected 2019-09-20 15:01:51 +08:00
zhouzb a9dd94b2b5 Improve mechanism of waiting for session to expire 2019-09-20 15:01:51 +08:00
terry-xiaoyu bd33441720 Fix the type specs for cmd usage 2019-09-20 14:55:11 +08:00
Feng Lee 3202ed2392 Improve the 'channel' module and add more test cases
- Rename the 'Client' field to 'ClientInfo'
- Remove the 'expiry_interval' from session record
- Add more test cases for emqx_zone module
- Add more test cases for emqx_banned module
- Add more test cases for emqx_message module
- Remove 'sockname', 'conn_mod' fields from type 'client'
2019-09-20 14:38:16 +08:00
Feng Lee 81e2f47126 Add test cases for emqx_ctl module 2019-09-20 13:47:05 +08:00
Feng Lee 3d6b96d321 Add function 'get_flags/1' for test 2019-09-19 11:19:10 +08:00
Feng Lee 65cb9dbf38 Add test cases for 'reason/1' 2019-09-19 11:16:13 +08:00
Feng Lee 3705f4f929 Rewrite the test cases for extended modules 2019-09-19 11:04:29 +08:00
Feng Lee 1d429dad8d Update the 'attrs/1' and 'handle_timeout/3' functions 2019-09-18 20:01:22 +08:00
Feng Lee 981afd38e3 Rewrite the 'presence' extended module 2019-09-18 19:58:12 +08:00
Feng Lee 8404fce6a6 Remove the function 'update_expiry_interval/2' 2019-09-18 19:49:34 +08:00
Feng Lee a313d1c722 Improve the 'open_session/3' API 2019-09-18 19:48:55 +08:00
Feng Lee 94c324d7a3 Rename 'get|set_property' fuctions to 'get|set' 2019-09-18 19:47:44 +08:00
Feng Lee cc79802d6c Add function 'get_caps/3' 2019-09-18 19:46:18 +08:00
Feng Lee ad7e0ae436 Use 'peerhost' to replace 'peername' 2019-09-18 19:44:28 +08:00
Feng Lee c8acd55afa Export type 'opts/0' 2019-09-18 19:19:42 +08:00
Feng Lee 50f392b295 Add more functions 2019-09-18 19:18:56 +08:00
Feng Lee 00f3a2f939 Use 'peerhost' to replace 'peername' 2019-09-18 19:17:30 +08:00
zhouzb decdce2ae2 Fix unused variable 2019-09-16 18:54:34 +08:00
zhouzb 600cd11f1f Rename connection to conninfo 2019-09-16 17:22:50 +08:00
zhouzb 1667cbd359 Fix test cases 2019-09-16 16:05:06 +08:00
tigercl fc553b8cee
Merge pull request #2803 from emqx/fix_msg_expiry
Fix Message-Expiry-Interval not working
2019-09-16 14:45:22 +08:00
Feng Lee 4764a7707c Rewrite the emqx_packet module and improve channel pipeline (#2903)
Add use_username_as_clientid/1 function and Improve function 'pipeline/3'
2019-09-16 14:17:36 +08:00
Feng Lee 681ae511a8 Introduce the 'strict_mode' option and validate MQTT header (#2898)
Introduce the 'strict_mode' option and validate MQTT header
2019-09-16 14:02:31 +08:00
tigercl 35822ff97a
Fix handling for MQTT spec (#2892)
Fix invalid QoS and protocol name, fix handling for Topic-Alias-Maximum and Maximum-Packet-Size, and send DISCONNECT Packet to client when the session is taken over
2019-09-16 13:51:50 +08:00
Shawn 59309e6c11
Add print and usage APIs for CLI (#2893) 2019-09-12 09:35:05 +08:00
Feng Lee 80621ec9be Fix the test cases for emqx_banned, emqx_flapping modules
- Remove the 'is_enabled/1' function of 'emqx_banned' module
- Remove the 'is_enabled/1' function of 'emqx_flapping' module
- Add 'enable_acl/1', 'enable_banned/1' and 'enable_flapping_detect/1'
2019-09-11 09:14:58 +08:00
Feng Lee fa516626a6 Inlining is enabled for encode, decode functions. 2019-09-11 09:13:42 +08:00
Feng Lee 594153c0fb Merge branch 'boot' into develop 2019-09-10 16:26:20 +08:00
Feng Lee 2bf951d953 Fix the spec of function 'is_enabled/1' 2019-09-10 16:24:38 +08:00
Feng Lee a3daa533e7 Add a test case for the new flapping module 2019-09-10 16:20:56 +08:00
Feng Lee 0a1679b122
Implement a new flapping module (#2884) 2019-09-10 15:21:08 +08:00
Feng Lee 88321fe6fe Remove the emqx_config module
- Remove the emqx_config module
- Move get_env/1, get_env/2 to emqx module
2019-09-09 10:18:10 +08:00
Feng Lee 6972cbb36e Fix the operator precedence bug 2019-09-06 19:04:11 +08:00
Feng Lee b97f04ceae Add emqx_boot module 2019-09-06 17:37:50 +08:00
Feng Lee 6e18f8543d Add emqx_boot module 2019-09-06 17:36:13 +08:00
zhouzb 5a3645c97e Remove proto_ver field stored in the headers of message 2019-09-06 14:51:52 +08:00
Michael Schmidt 3038bd4570 Add support for logger per module filtering (#2873)
Add mfa to the meta data to suppor the Erlang Logger's per module / per app filtering
2019-09-06 11:03:47 +08:00
zhouzb 066763248c Fix dup flag 2019-09-05 18:35:29 +08:00
zhouzb de44a89c21 Fix the issue that protocol is undefined 2019-09-05 18:28:17 +08:00
terry-xiaoyu 1e4c51f080 Send DISCONNECT on packet parse error 2019-09-05 18:16:15 +08:00
zhouzb cc4ee065a4 Remove debug print 2019-09-05 16:16:19 +08:00
terry-xiaoyu 983973c841 Fix set_chan_stats incorrect 2019-09-05 15:59:18 +08:00
Feng Lee 451f0451ce Add type/1, qos/1 functions 2019-09-05 15:00:54 +08:00
Feng Lee 847375d2fb Improve connection and channel modules (#2860)
Improve the connection and channel modules
2019-09-05 14:17:15 +08:00
tigercl 811e85f8b7
Merge pull request #2841 from emqx/init_stats
Set stats at connection time
2019-09-05 14:03:51 +08:00
Feng Lee 2d6c7e41a5 Remove emqx_cli module 2019-09-02 09:04:34 +08:00
Feng Lee 62f0f0ccbc Add more test cases for 'emqx_misc' module 2019-08-28 14:29:44 +08:00
Feng Lee 08ab350fec Move the 'pipeline' function to 'emqx_misc' module 2019-08-28 14:29:44 +08:00
GilbertWong 783e29d6f7 Add test case for emqx_mod_rewrite 2019-08-28 11:19:51 +08:00
Feng Lee a4e9142979 Updat app file 2019-08-27 09:27:25 +08:00
zhouzb 98072dd3d1 Set stats at connection time 2019-08-26 16:43:08 +08:00
turtled 29d49b4073 Fix get connected_at is undefined 2019-08-23 20:37:04 +08:00
zhouzb 5cfd8b74bc Fix a bug that crash when protocol is undefined 2019-08-23 17:29:48 +08:00
zhouzb 9c171f5d9c Fix a bug that session terminates immediately when received DISCONNECT packet 2019-08-23 16:08:26 +08:00
zhouzb 970d243d94 Fix function clause 2019-08-23 15:23:00 +08:00
tigercl 7151ae9823
Merge pull request #2836 from emqx/fix-discard
Fix case clause error
2019-08-23 15:18:24 +08:00
Feng Lee 710302f377 Fix case clause error 2019-08-23 14:52:11 +08:00
tigercl ebc1bd77a9
Send the will message immediately when the network connection is closed by the client (#2834)
Send the will message immediately when the network connection is closed by the client
2019-08-23 14:41:52 +08:00
Feng Lee 738145677a Handle the 'discard' cast. 2019-08-23 14:31:33 +08:00
tigercl 9f7cc80c1a
Merge pull request #2833 from emqx/update_code
Update emqx_channel.erl
2019-08-23 14:09:42 +08:00
Feng Lee 82b9a7c301 Improve session takeover (#2831)
Implement the session takover/resumption across nodes
2019-08-23 14:09:00 +08:00
zhouzb 44d53ecb33 Update emqx_channel.erl 2019-08-23 13:48:17 +08:00
zhouzb f3a92f35f6 Handle will message correctly 2019-08-23 13:37:35 +08:00
zhouzb cff120c6d0 Handle session expiry interval correctly 2019-08-23 13:37:35 +08:00
Zhiwei Yu 8710df31b2 Monitor cluster partition event (#2814) 2019-08-23 09:42:55 +08:00
Feng Lee c69a2b1b48 Ensure session expiration (#2825)
Ensure session expiration
2019-08-23 09:35:29 +08:00
Feng Lee 41e9dad70a Rename `reason` field to `stop_reason` 2019-08-22 23:24:16 +08:00
zhouzb 7454e46934 Fix compile error 2019-08-22 16:59:13 +08:00
Feng Lee 8b03371a4a Improve the keepalive, connection, channel and session modules (#2813) 2019-08-22 16:38:25 +08:00
Mousse bf942e4bec Handle the retained flag correctly (#2811)
Handle the retained flag correctly
2019-08-22 16:21:27 +08:00
tigercl 201428279b
Merge pull request #2817 from emqx/test_emqx_config
Remove redundant code and add test case
2019-08-22 16:13:50 +08:00
GilbertWong 3f20bcf58f Relace emqx_client with emqtt 2019-08-22 14:27:29 +08:00
zhouzb 94c56b5e31 Remove redundant code and add test case 2019-08-21 14:12:34 +08:00
tigercl 749ef823ab
Refix code about mqtt spec (#2806)
Refix code about mqtt spec
2019-08-19 10:50:52 +08:00
Feng Lee f2b552e29e Ensure stats timer 2019-08-19 09:43:58 +08:00
Feng Lee ae33b6037e Fix the test suites. 2019-08-17 14:39:04 +08:00
Feng Lee 52b2f31ced Merge branch 'improve-channel-design-again' into develop 2019-08-17 14:09:26 +08:00
Feng Lee f26505d40a Implement session takeover and resumption.
- Implement session takeover
- Remove `init_proc_mng_policy/1' from emqx_misc module
- Remove `conn_proc_mng_policy/1' from emqx_misc module
- Add `emqx_oom' module to monitor OOM of channel process
2019-08-17 13:37:48 +08:00
tigercl c1fd5f89f1 Make codes compliance with mqtt protocol specifications (#2790)
* Make codes compliance with mqtt protocol specifications

* Fix test case

* Remove emqx_protocol:puback/4
2019-08-17 09:15:43 +08:00
terry-xiaoyu fa1adf5cfb Fix Message-Expiry-Interval not working 2019-08-16 18:27:22 +08:00
tigercl 2e26cd244a Improve test coverage (#2799)
* Improve test coverage

* Improve test coverage for emqx_cm

* Improve test coverage for emqx_cm_registry

* Fix emqx_client_SUITE
2019-08-16 18:25:49 +08:00
Feng Lee d63eccd8b8 Add test cases for emqx_keepalive module (#2784)
* Improve the keepalive module
2019-08-16 18:24:39 +08:00
Gilbert 79744af681 Wrapper proper test cases into common test cases (#2785)
* Wrapper proper test cases into common test cases

* Improve test cases for reason code module (#2789)

* Split 3 proper tests into 3 ct cases

* Improve test cases for client, rpc and request-response

* Add psk suites to increase coverage

* Add sys test cases
2019-08-16 18:07:12 +08:00
JianBo He 8e401968f2 Add testcase for emqx_mod_sup 2019-08-16 17:48:37 +08:00
Shawn b2ddcb26e2
Testcase logf (#2800)
* Add test cases for logger formatter

* Remove the unregister API
2019-08-16 15:11:38 +08:00
Feng Lee 444972968f Improve emqx_mqtt_props module and add test cases 2019-08-12 14:29:38 +08:00
周子博 c2cd43ee18 Fix attrs 2019-08-10 00:37:45 +08:00
terry-xiaoyu 0c24bfd78c Make emqx_tracer more reliable 2019-08-09 19:59:39 +08:00
周子博 f6d6f7f04d Fix test case 2019-08-09 19:45:43 +08:00
terry-xiaoyu 77616f4721 Add hook client.disconnected 2019-08-09 19:25:14 +08:00
terry-xiaoyu a19777c2e6 Add hook message.acked 2019-08-09 19:12:56 +08:00
turtled a93f8c6788 Fix auth fail 2019-08-09 17:37:55 +08:00
turtled 31cc446818 Mountpoint support %c and %u 2019-08-09 16:54:49 +08:00
turtled 91a8dbda56 Fix conflicts 2019-08-09 16:41:11 +08:00
周子博 d8bcb1b26f Don't check cpu util on Alpine that uses libc-musl 2019-08-09 16:10:30 +08:00
GilbertWong 6e0a269ff6 Wrap `os:type` for cpu:sup call 2019-08-09 16:04:38 +08:00
Feng Lee 439c481e35 Remove the trap_exit process_flag (#2737) 2019-08-09 16:02:50 +08:00
Shawn 68bf72ce04 Fix crashes when auth failed (#2736) 2019-08-09 16:02:04 +08:00
terry-xiaoyu cca725db5f Add specs for emqx_logger 2019-08-09 15:47:20 +08:00
Feng Lee 3032731a2d Publish will msg when abnormal terminate 2019-08-09 15:28:47 +08:00
Feng Lee 03744ead30 Ensure the 'CONNACK' and 'DISCONNECT' packets delivered. 2019-08-09 15:09:17 +08:00
Feng Lee 52a85d9bb9 Export name/1 2019-08-09 15:09:17 +08:00
Feng Lee a324965240 Add more test cases for emqx_protocol module 2019-08-09 14:29:49 +08:00
Gilbert abb4b07665
Add session proper test cases (#2768)
* Add session proper test cases
* Remove useless mockers
2019-08-09 14:15:34 +08:00
GilbertWong 61ee889113 Fix client bug 2019-08-09 13:40:07 +08:00
Feng Lee 916afc1c74 Add test cases for emqx_protocol module
- Add emqx_session:info/2 for unit tests
- Add emqx_protocol:set/3 for unit tests
- Fix the `check_sub/3` of emqx_mqtt_caps
2019-08-09 11:33:52 +08:00
Feng Lee a2d5b834da Improve emqx_pmon module and add more test cases 2019-08-08 22:42:45 +08:00
Feng Lee 6513a32d37
Merge pull request #2766 from emqx/improve-mqtt-caps-module
Improve mqtt caps module
2019-08-08 22:35:32 +08:00
Feng Lee f70da696f0 Fix the badmatch error 2019-08-08 22:33:40 +08:00
GilbertWong 1707c7a7b7 Remove replayq from app.src list 2019-08-08 17:08:19 +08:00
周子博 0d65deb9d3 Fix not registering channels in time 2019-08-08 16:59:17 +08:00
Feng Lee bd061415c9 Rewrite the emqx_mqtt_caps module and add test cases
- Rename `mqtt_retain_available` to `retain_available`
- Rename `mqtt_wildcard_subscription` to `wildcard_subscription`
- Rename `mqtt_shared_subscription` to `shared_subscription`
- Add `emqx_zone:unset_env/2` API for unit test
2019-08-08 14:11:26 +08:00
Feng Lee bfd027cf8b Rewrite the mqtt_caps module 2019-08-07 14:01:50 +08:00
Gilbert 96b341fde5
Add proper tests for base62 (#2761)
* Add proper tests for base62

* Delete useless comment
2019-08-07 09:24:03 +08:00
Feng Lee f60f127681 Improve the moudules and fix the bugs found in new test cases
- Fix the bug that emqx_mountpoint:unmount/2 will throw exception
- Add emqx_banned:info/1 for test cases
- Rename macro TRIE in emqx_trie module to TRIE_TAB
- Rename macro TRIE_NODE in emqx_trie module to TRIE_NODE_TAB
- Rename macro ROUTE in emqx_router module to ROUTE_TAB
2019-08-06 09:05:55 +08:00
Feng Lee 4afa02ee48 Update all the test cases 2019-08-06 09:04:37 +08:00
Feng Lee f8e28e39ed Improve the channel modules and fix the extension mods 2019-08-02 18:04:38 +08:00
Feng Lee 32795321f5 Improve the rewrite mod using the new hooks 2019-08-02 11:14:42 +08:00
Feng Lee cf9caf3c32 Add conn/0 type 2019-08-02 11:14:42 +08:00
Feng Lee 2fdda99d6d Improve the pipeline design of protocol and session 2019-08-02 11:14:42 +08:00
周子博 ef9cbe51eb Fix conflict 2019-08-02 10:41:46 +08:00
Feng Lee c95a89ed1e Merge branch 'nchannel' into develop 2019-07-31 14:03:48 +08:00
Feng Lee 0a6468cf48 Introduce the 'pipeline' design pattern
- Introduce the 'pipeline' design pattern in emqx_protocol module
- Reame the '{dispatch, ...' to '{deliver, ...' in emqx_broker module
- Rename type 'credentials' to 'client'
2019-07-31 08:09:47 +08:00
Feng Lee b32156bd68 Rename the type 'credentials' to 'client' 2019-07-31 08:08:11 +08:00
Feng Lee 41dfbd4165 Add 'packets.pubrec.inuse' counter 2019-07-30 19:12:42 +08:00
Feng Lee c880668419 Register channel in this module 2019-07-30 19:11:21 +08:00
Feng Lee 51fb4e33d6 Rename 'Credentials' to 'Client' 2019-07-30 19:10:38 +08:00
terry-xiaoyu 20a7ed6f53 RPC batch 2019-07-29 09:35:06 +08:00
Feng Lee c55ada3526 Improve the types 2019-07-27 23:24:38 +08:00
Feng Lee d99c9daf76 Replace credentials with client 2019-07-27 23:22:02 +08:00
terry-xiaoyu b0e2b7db0c Support inter-node messages via RPC cast 2019-07-27 12:59:07 +08:00
terry-xiaoyu 11fdf101f0 Configurable rpc client number 2019-07-26 15:13:58 +08:00
Feng Lee 32b2a01d68 Fix function_clause error and improve ws channel 2019-07-26 00:18:25 +08:00
Feng Lee 64148ac0e8 Improve the 'info/1', 'attrs/1' and 'stats/1' APIs 2019-07-25 09:26:36 +08:00
Feng Lee b4a0a1c228 Fix whitespace 2019-07-25 09:26:02 +08:00
Feng Lee 5b3a61b799 Merge the connection and session tabs into channel tab 2019-07-25 09:25:45 +08:00
Feng Lee a0a2375810 Update the .app file 2019-07-25 09:25:00 +08:00
Feng Lee 2de4bb0b8f Improve the channel modules and add 'attrs/1' API 2019-07-25 09:24:10 +08:00
Feng Lee c091e89796 Remove the unnecessary include/emqx_client.hrl 2019-07-23 10:56:14 +08:00
Feng Lee 6b84eb0595 Rewrite the channel, protocol and session modules. 2019-07-22 17:08:53 +08:00
terry-xiaoyu 0569388f0f Fix websocket still send willmsg even after disconnect is received 2019-07-20 19:02:49 +08:00
terry-xiaoyu 4559b5023e Fix heartbeat interval 2019-07-20 16:20:53 +08:00
terry-xiaoyu 721e7c4804 Fix session termiated without ws_channel 2019-07-20 14:24:15 +08:00
terry-xiaoyu 0c54d899da Trap and handle exit in channel and ws_channel 2019-07-20 13:19:13 +08:00
Gilbert 05b660ff50 Unlink session when exit message has been forwarded to session (#2703)
* Unlink session when exit message has been forwarded to session

* Readjust possition of emqx_protocol:session
2019-07-20 13:05:34 +08:00
GilbertWong eb68ce77b6 Fix the ws channel terminating crash when session pid is undefined 2019-07-19 17:36:50 +08:00
GilbertWong 391e39c3b6 Disable the useless error log info 2019-07-19 17:36:50 +08:00
GilbertWong 0c14484b0a Disable the useless error log info 2019-07-19 17:36:50 +08:00
GilbertWong 953d320667 Implement better websocket exit mechanism 2019-07-19 17:36:50 +08:00
terry-xiaoyu 86333802b9 Add configuration for sys_heartbeat 2019-07-19 17:33:24 +08:00
GilbertWong 4603ea17ef Better gen_rpc performance 2019-07-19 17:31:15 +08:00
GilbertWong eb7ae13ae9 Better exit reason in websocket channel 2019-07-16 01:33:15 +08:00
GilbertWong 1fc0f61fbb Fix the websocket normal exit bug 2019-07-16 01:09:42 +08:00
Feng Lee 7b27d49a40 Add new metric 'channel.gc.cnt' 2019-07-14 08:59:38 +08:00
terry-xiaoyu 7472e531b1 Remove log handler for alarms 2019-07-11 13:27:03 +08:00
terry-xiaoyu 1bf68f4807 Change clear alarms to info log 2019-07-11 11:15:23 +08:00
GilbertWong bf89646d93 Fix typo 2019-07-11 09:43:52 +08:00
GilbertWong 234037aee1 Fix will message mechanism for websocket channel 2019-07-11 09:43:52 +08:00
GilbertWong c13e194838 Fix the check_subacl bug when enable_acl is set to false 2019-07-11 09:25:20 +08:00
terry-xiaoyu 5867b2e763 Fix idle_timeout crash 2019-07-11 09:17:23 +08:00
terry-xiaoyu 6ab9527603 Optimize to_map for performance 2019-07-05 23:14:27 +08:00
Gilbert 70be888f3b Compat windows (#2665) 2019-07-05 23:10:13 +08:00
周子博 61d64cbb83 Fix the issue that emqx_session:attrs/1 returns wrong value 2019-07-05 22:54:57 +08:00
Feng Lee f4a753f683 Remove the debug print of batch deliver 2019-07-02 14:50:13 +08:00
Feng Lee 8c37ea3f38 Fix conflict 2019-07-02 14:02:42 +08:00
Feng Lee 42da51e1c5 Implement batch delivery for the new channel design
- Implement a new emqx_channel module
- Improve the emqx_frame:serialize/2 API
- Improve the emqx_connection, emqx_ws_connection modules
2019-07-02 13:40:52 +08:00
Feng Lee 177dc44155 Define 'Otherwise' macro 2019-07-02 13:39:23 +08:00
周子博 3ad5700442 Support getting the history of alarms 2019-06-29 12:38:57 +08:00
terry-xiaoyu 96fff39535 Change default logger level to warning 2019-06-28 21:34:21 +08:00
terry-xiaoyu 0e2e4e73ca Clean staled sesssions 2019-06-26 20:04:32 +08:00
Gilbert 9df6345a6c Remove bridge functions from emqx (#2652)
* Remove bridge functions from emqx
2019-06-26 19:33:17 +08:00
tradingtrace 0b116bc208 Fix the massages order when batch dispatching 2019-06-26 19:32:15 +08:00
Feng Lee 9ee0a4d171 Fix the function_clause error when publishing QoS2 message 2019-06-25 17:35:58 +08:00
Feng Lee 67b7266438 Rename TimerInterval to Interval 2019-06-25 15:58:09 +08:00
Feng Lee f32a415a83 Merge branch 'channel3' 2019-06-25 15:55:31 +08:00
Feng Lee 4974eab20e Improve the channel design 2019-06-25 14:53:45 +08:00
Feng Lee c4eb283517 Add spec for validate/1 function 2019-06-25 14:50:51 +08:00
Feng Lee 242a1ae453 Use emqx_mqtt:qos() type 2019-06-25 14:47:42 +08:00
Feng Lee 72331d8ad0 Move emqx_mqtt_types module to emqx_mqtt 2019-06-25 14:46:21 +08:00
Feng Lee fb54fe0fad Improve export_type attr 2019-06-25 14:45:23 +08:00
Feng Lee 795fe4e0bc Add 'PUBLISH_PACKET(QoS, Topic, PacketId)' macro 2019-06-25 14:29:26 +08:00
Gilbert 475cabde4d Fix issue#2619 (#2646)
* Fix issue#2619
Prior to this change, websocket connection would not be disconnected
when dataframe type is other frametype. However, in mqtt spec, it
shoud be disconnected.

This change fix this inconsistent behaviour with mqtt 5.0
2019-06-21 21:21:49 +08:00
turtled 481458d8ec Add plugin type 2019-06-21 19:52:53 +08:00
tigercl 0c7c4ee417 Using fixed topic for system message of alarm (#2647)
* Using fixed topic for system message of alarm
2019-06-21 19:51:58 +08:00
tigercl 37eef7b72a Add 'auth.mqtt.anonymous' metric (#2631)
* Add 'auth.mqtt.anonymous' metric
2019-06-21 19:21:26 +08:00
Gilbert 138d7727fa
Compact windows platform which has no cpu_sup util function. (#2629)
* Compact windows platform which has no cpu_sup util function.

* Fix wrong os type clause

* Do not start timer when platform is windows
2019-06-20 11:45:44 +08:00
Gilbert 1d23d7de86
Optimize test workflow (#2642)
* Optimize test suites workflow

* Better format of makefile

* Fix protocol suite

* Add emqx_access_SUITE
2019-06-20 11:44:44 +08:00
GilbertWong bcae452e42 Fix the flapping bug
Prior to this change, the banned until value will not be set
correctly because of wrong spell of config entry name .

This change fix this bug
2019-06-20 10:59:42 +08:00
GilbertWong ffbb598a73 Increase time precision for emqx_mod_presence 2019-06-20 09:50:05 +08:00
Feng Lee 3877c4db1a Merge branch 'channel2' into channel3 2019-06-18 16:49:26 +08:00
Feng Lee 7774b85f81 Implement the channel architecture 2019-06-18 15:03:51 +08:00
terry-xiaoyu 09dd65b9fa Add logger header validation 2019-06-18 14:37:32 +08:00
terry-xiaoyu 7092748266 Improve log messages using logger header 2019-06-18 14:37:32 +08:00
terry-xiaoyu c64751a53c Support module level logger header 2019-06-18 14:37:32 +08:00
Feng Lee 21162f88b8 Update copyright 2019-06-18 14:27:06 +08:00
Feng Lee d065847665 Remove session record 2019-06-16 10:28:23 +08:00
terry-xiaoyu 3f1b788fe8 Remove unused PSK TAB macro 2019-06-14 16:58:46 +08:00
GilbertWong 19822c15bd Add websocket_info to match {stop, Reason} msg 2019-06-14 16:22:57 +08:00
Feng Lee 1d88f8fd9e Improve the emqx_connection, emqx_ws_connection and emqx_frame modules (#2611)
* Adopt channel architecture and improve the MQTT frame parser

* Update the test cases for emqx_channel, emqx_protocol

- Improve emqx_client to Use the new emqx_frame:parse/2
- Update the ct suites for emqx_channel, emqx_ws_channel

* Fix test case
2019-06-14 12:44:27 +08:00
Gilbert d3e7d1f0c9 Fix websocket bug (#2615)
Fix websocket bug.

Prior to this change, websocket connection would be closed directly
without sending connack packet when acl check fails.

This change fix this bug.
2019-06-14 11:33:44 +08:00
turtleDeng a3103cec7b Revert "Fix websocket bug. Prior to this change, websocket connection would be closed directly without sending connack packet when acl check fails."
This reverts commit e73c4c64d0.
2019-06-12 15:51:20 +08:00
GilbertWong e73c4c64d0 Fix websocket bug.
Prior to this change, websocket connection would be closed directly
without sending connack packet when acl check fails.

This change fix this bug.
2019-06-12 15:49:48 +08:00
turtleDeng 76525cc703
Fix acl deny action logic (#2613) 2019-06-12 15:49:18 +08:00
tigercl 3462bbd619 Fix retain in will message (#2607)
* Fix retain in will message

* Only handle retain available flag in MQTT v5
2019-06-12 15:43:52 +08:00
Feng Lee de978d4771 Update the test cases for emqx_channel, emqx_protocol
- Improve emqx_client to Use the new emqx_frame:parse/2
- Update the ct suites for emqx_channel, emqx_ws_channel
2019-06-12 10:31:44 +08:00
Feng Lee d386b27e8a Adopt channel architecture and improve the MQTT frame parser 2019-06-11 23:18:38 +08:00
Feng Lee f801ff1e53 Optimize metrics using counters and persistent_term (#2597)
* Optimize emqx_metrics module using persistent_term and counters in OTP 22
2019-06-05 23:16:35 +08:00
turtled f46205daff Restart mnesia application 2019-06-05 11:50:09 +08:00
Gilbert Wong f3fcd16dee Fix wrong default value in protocol module 2019-06-03 16:25:04 +08:00
Gilbert Wong e7cd32edb7 Update esockd deps and fix compile warning 2019-05-31 15:21:59 +08:00
Gilbert Wong 47f9d0e90f Adjust format 2019-05-31 11:16:50 +08:00
Gilbert Wong 365832f945 Use new ranch api to elimate warning log for deprecated apis 2019-05-31 11:16:50 +08:00
Feng Lee 9715234626 Optimize the emqx_zone module using persistent_term
- Don't reload the zone options for updating persistent_term is
expensive
- Use '{?MODULE, Zone, Key}' as the key to avoid name collision
2019-05-31 08:53:42 +08:00
terry-xiaoyu be7de756c6 Stop alarm before emqx stops 2019-05-28 17:11:31 +08:00