Commit Graph

1549 Commits

Author SHA1 Message Date
tigercl 31bf01fd7a Fix bug in topic alias maximum (#2074)
* Fix bug in topic alias maximum
2018-12-21 14:01:21 +08:00
Feng Lee 3fec9cdf0a Try to simulate a '{ssl_passive, Sock}' message:( 2018-12-21 12:03:40 +08:00
turtleDeng 4f84a31d02
Update copyright (#2093) 2018-12-21 11:06:50 +08:00
Gilbert bf7f10ecd1 Add will topic validation and acl check (#2075)
* Add will topic validation and acl check
2018-12-21 10:49:03 +08:00
Feng Lee 367b717c40 Implement a new 'emqx_gc' module (#2090)
Update connection/session module to using the new emqx_gc API
2018-12-20 22:42:18 +08:00
turtled b4833d6973 Fixed conflicts 2018-12-20 22:23:20 +08:00
tigercl 938d30268a Remove extra case...of (#2082)
* Remove extra case...of
2018-12-20 21:42:14 +08:00
YoukiLin 6b538d2363 Add test cases for 'emqx_cm' and 'emqx_sm' (#2073)
Add test cases for 'emqx_cm' and 'emqx_cn'
2018-12-20 21:03:40 +08:00
Feng Lee 14cffcf7fb Add the 'emqx_pd' module
Add utility functions for erlang process dictionary
Add test cases for emqx_pd
2018-12-20 16:45:25 +08:00
Feng Lee 14a12e0c6c Move the 'LOG_HEADER' macro above '-include(logger.hrl)' 2018-12-20 14:45:52 +08:00
Feng Lee 6e1b47f1f9 Improve the emqx_connection module
Rename 'publish_limit' to 'pub_limit'
'try ... of ... catch' to replace 'case catch'
2018-12-20 14:45:52 +08:00
Feng Lee d827604213 Remove the ensure_stats_timer/1 call from reply/2 and noreply/1 2018-12-20 11:33:18 +08:00
Feng Lee 42fc8f5811 Improve the session module 2018-12-20 10:21:40 +08:00
tigercl 97474171d0 Better report errors in acl.conf (#2065) 2018-12-19 23:06:48 +08:00
turtled 7a1ec580b0 Update broker test cases 2018-12-19 17:18:26 +08:00
Feng Lee 892d9439b9 Implement a new session supervisor. (#2077) 2018-12-19 16:49:35 +08:00
Gilbert 7d9e350bbe Add option to disconnect client in case acl deny (#2059)
* Add option to disconnect client in case acl deny
2018-12-19 10:34:06 +08:00
turtled 666d9706a3 Fixed conflicts 2018-12-18 16:41:10 +08:00
turtled 1e2c5db36c Modify batch size 2018-12-18 15:42:54 +08:00
Feng Lee dc06c0beab Remove 'topic_alias_maximum' from session's state 2018-12-18 15:11:04 +08:00
tigercl 95ad67b47c Fix a bug that will not send a will message in some cases (#2068)
* Fix a bug that will not send a will message in some cases
2018-12-18 14:55:37 +08:00
周子博 b7a39f25f2 Revert "Fix a bug that will not send a will message in some cases"
This reverts commit 675edf3fab.
2018-12-18 12:02:18 +08:00
周子博 675edf3fab Fix a bug that will not send a will message in some cases 2018-12-18 12:01:41 +08:00
Feng Lee 721b72b96a Add 'active_n' option to optimize the CPU usage of emqx_connection (#2060)
* Add 'active_n' option to optimize the CPU usage of emqx_connection

* Supports batch processing 'DOWN' events
2018-12-17 19:53:29 +08:00
turtled f54d414825 Fix pick fail 2018-12-15 13:42:07 +08:00
turtled 34370ef622 Merge branch 'issue#1983' into emqx30 2018-12-14 17:55:36 +08:00
Feng Lee abe9aff062 Add 'enable_session_registry' config 2018-12-13 18:28:32 +08:00
Feng Lee 7fe3d59c28 Update the registered name of pool sup. 2018-12-13 17:54:22 +08:00
Feng Lee 4aaf0a7db4 Remove emqx_session_sup to handle massive concurrent sessions 2018-12-13 17:10:02 +08:00
Feng Lee 4e1d1bd60f Remove the emqx_session_sup module 2018-12-13 17:10:02 +08:00
Feng Lee a68e3f265d Fix 'badarg' crash 2018-12-12 16:34:55 +08:00
Feng Lee d8cbf72da1 Fix 'badarg' crash 2018-12-12 16:32:58 +08:00
Feng Lee 8f2f4b6b81 Optimize connection and session management 2018-12-12 16:21:30 +08:00
Feng Lee 8d50c62a94 Optimize connection and session management 2018-12-12 16:10:16 +08:00
Feng Lee 99872b253f Fix 'function not exported' crash 2018-12-12 14:53:22 +08:00
Feng Lee 2a747c9d53 Improve the subscription sharding. 2018-12-12 13:40:01 +08:00
Feng Lee 33830d8120 Improve the design of trie, router and broker modules
1. Add do_add_route/1 do_add_route/2, do_delete_route/1,
do_delete_route/2 APIs in emqx_router module
2. Improve the code of emqx_trie module
3. Update the emqx_broker module to call the new APIs of emqx_router
2018-12-12 13:40:01 +08:00
Feng Lee 47e3cd3692 Improve the subscription sharding. 2018-12-12 13:34:13 +08:00
Feng Lee cca5081e02 Improve the design of trie, router and broker modules
1. Add do_add_route/1 do_add_route/2, do_delete_route/1,
do_delete_route/2 APIs in emqx_router module
2. Improve the code of emqx_trie module
3. Update the emqx_broker module to call the new APIs of emqx_router
2018-12-10 18:37:42 +08:00
周子博 ec2e289776 Fix crash in emqx_acl_internal:filter/2 2018-12-10 11:13:25 +08:00
Feng Lee fb7b63c59b
Merge branch 'emqx32' into subscription-sharding 2018-12-10 10:08:18 +08:00
Gilbert Wong e0eb76afa6 Fix subscription 2018-12-08 16:09:54 +08:00
Feng Lee 64f62fa0ce Make some processes hibernate after 1s. 2018-12-08 15:03:34 +08:00
Feng Lee f008ceb5c8 Optimize the route and trie modules.
1. Use mnesia:wread/1 to replace mnesia:read/2
2. Update the router supervisor
2018-12-08 15:03:34 +08:00
Gilbert 0b70896456 Fix the coverage shaky (#2010) 2018-12-08 15:03:34 +08:00
spring2maz b6c123b173 Use git tag for app vsn 2018-12-08 15:03:34 +08:00
turtled 5164d0d6a5 Fix unsubscribe fail and rename shared -> shard 2018-12-08 11:40:08 +08:00
turtled d1be51d398 Format code 2018-12-08 10:52:15 +08:00
turtled ba897e51f9 Subscriber down clear emqx_suboption table 2018-12-08 10:26:50 +08:00
turtled 5e53eaeee5 rename shard shared 2018-12-08 09:56:00 +08:00
Feng Lee 36e7d63d66 Implement subscription sharding.
1. Improve the design router, broker and shared_sub
2. New ets tables' design for subscription sharding
2018-12-07 18:20:09 +08:00
Feng Lee bce1ddc5c4 Implement a hash-based subscription sharding 2018-12-06 18:45:07 +08:00
Feng Lee d11e734dae Make some processes hibernate after 1s. 2018-12-05 10:31:11 +08:00
周子博 35e699e54e Make sure test case of emqx_banned passes 2018-12-04 16:11:25 +08:00
Feng Lee b4d981daf2 Add a sequence module to generate index for subscription sharding 2018-12-04 15:59:24 +08:00
周子博 b2c3d8366d Add logs for malformed acl configuration file 2018-12-03 13:57:37 +08:00
Feng Lee 95446ca837 Optimize the route and trie modules.
1. Use mnesia:wread/1 to replace mnesia:read/2
2. Update the router supervisor
2018-12-03 11:10:47 +08:00
Gilbert 295a9d692e
Fix the coverage shaky (#2010) 2018-11-30 19:16:48 +08:00
spring2maz 14dfe03426 Use git tag for app vsn 2018-11-30 11:03:26 +01:00
Feng Lee d9470f365f Optimize read/write concurrency of mnesia/ets tables 2018-11-30 17:46:15 +08:00
Feng Lee e15e5d1f98 Fix the atom leaks in emqx_reason_codes module. 2018-11-30 17:45:28 +08:00
周子博 fde5fbe73a Align the code 2018-11-30 17:44:29 +08:00
周子博 ad8b547519 Make batch committing of metrics more elegant 2018-11-30 17:44:29 +08:00
周子博 f315994eb9 Remove unnecessary spec 2018-11-30 17:44:29 +08:00
周子博 c87aabbbeb Some forgotten changes in last commit 2018-11-30 17:44:29 +08:00
周子博 ea62b15c87 Alter apis provided by emqx_metrics, and use existing timer to commit metrics 2018-11-30 17:44:29 +08:00
周子博 194dbc02c8 Add batch commit for metrics 2018-11-30 17:44:29 +08:00
Feng Lee 21ed012a0c Add an elegant batch module 2018-11-29 10:13:09 +08:00
Feng Lee 309f3560f3 Bump version to 3.0.0 2018-11-28 16:05:17 +08:00
周子博 5c291ff23e Fix the 'route_batch_delete' config 2018-11-28 16:04:04 +08:00
周子博 78fdb798f8 Update vsn 2018-11-26 13:51:32 +08:00
Shawn eeb0cab3e3 Update proc meta-data for empty clientid (#1980) 2018-11-23 18:11:46 +08:00
Shawn 6fa183f847 Add CLI for log level (#1977) 2018-11-23 11:04:33 +08:00
Shawn 2bd0f16884 Add CLI for log tracer (#1973) 2018-11-23 11:01:10 +08:00
tigercl 551d5d99d2 Change 'aquire' to 'acquire' (#1976)
* Change 'aquire' to 'acquire'
2018-11-23 11:00:30 +08:00
tigercl 14b8036576 Use username replace id(issue#1737) (#1961)
* Use username replace id(issue#1737)

* Add test case for issue#1737

* Make with_connection/2 support batch connect
2018-11-21 22:51:33 +08:00
spring2maz a2c658ba19 Add acking mechamism for shared dispatch (#1872)
* Add acking mechamism for shared dispatch

For QoS0 messages, no acking
For QoS1/2 messages, 'ACK' at any of events below:
 - ACK when QoS is downgraded to 0
 - Message is sent to connection process
'NACK' at any of events below:
 - Message queue is full and the receiving session starts to drop old messages
 - The receiving session crash
Upon 'NACK', messages are dispatched to the 'next' subscriber in the group,
depending on the shared subscription dispatch strategy.
2018-11-21 22:49:45 +08:00
Gilbert 16821490ce Fix issue#1874 (#1964)
* Fix issue#1874
Prior to this change, if user use one client connect emqx with mqtt
v3.1.1, the client subscribe the topic and publish message to this
topic, it would receive this message itself published, this commit
provide a configure option to let user ignore the message itself published.

This change fix issue 1874.

* Small Fix

* Fix bug

* Better design

* Fix compile warning and improve coverage

* Better design to solve the performance issue

* Fix typo

* Fix typo

* Delete spaces in end of lines.

* Do not use anonymous function

* Better performance
2018-11-19 13:34:03 +08:00
terry-xiaoyu 82b8047349 Helper funcs for adding proc meta-data 2018-11-19 11:17:58 +08:00
terry-xiaoyu 41315bff0d Log macros for lazy evaluation 2018-11-19 11:17:58 +08:00
terry-xiaoyu 2269967f1a Lazy evaluation when logging messages
Formatting variables and then passing them into the logger functions leads
to performance issues. i.e.

```erlang
logger:debug("RECV ~s", [emqx_packet:format(Packet)])
```

Above message will only be printed when the current log level set to
`debug`, but the function emqx_packet:format/1 will always be evaluated no
matter what the current log level is.

OTP 21 provides a special meta-data named `report_cb`, which can be used
for lazy evaluation. The fun is only evaluated if the primary/handler log level
check passes, and is therefore recommended if it is expensive to generate
the message.
2018-11-19 11:17:58 +08:00
Andrei Nesterov 9d67a64165 Fix type validation for User-Property 2018-11-19 09:53:43 +08:00
terry-xiaoyu 078584172e Print EMQ X Version in the console 2018-11-10 12:14:26 +08:00
turtled faeda253e1 Fix conflicts 2018-11-10 11:44:55 +08:00
terry-xiaoyu 6e26f5e9af Revert logger print to io:format 2 2018-11-10 11:25:52 +08:00
terry-xiaoyu 2611b6fc2a Revert logger print to io:format 2018-11-10 11:01:11 +08:00
周子博 c76e2d1413 Fix 'badarg' in io_lib:format/2 when 'from' field is tuple 2018-11-09 18:32:26 +08:00
terry-xiaoyu 997958aed1 Change the start_link API for emqx_client
Prior to this change, emqx_client:start_link does 2 works in one call:
- init an erlang process for emqx_client
- send MQTT CONNECT to remote broker

But this solution have some drawbacks:

- the return value of `start_link` compiles the return values of the 2
 works: {ok, Pid, MqttResult}. It is inconsistent with the return value
 of `gen_statem:start_link`, may causes confusions.

- the return mode of the 2 works are different:
  `start_link` should always return {ok, Pid} or {error, Reason}, but
 connecting to mqtt may throw out exceptions as it handles the
 socket. But the caller couldn't have thought of the exception, he would
 pattern match on the result of `emqx_client:start_link`, but it crashed!

- If the init work succeed but the connection failed, the caller couldn't
get a Pid from the return value, but indeed it was created inside the
emqx_client. This hides the fact that the Pid was created, and when the
Pid dies, the caller would receive an message from a Pid it doesn' know about.

This change divived these 2 work into 2 APIs:
- `start_link/1` is to build and verify the options, and returns {ok,Pid}
 (on success) or {error, Reason} (on failure).
- `connect/1` is to send MQTT CONNECT, and returns {ok, MQTTResult::properties()} or
 {error, MQTTReason}. MQTT reason codes will contains in the `MQTTReason`.
2018-11-09 17:43:04 +08:00
terry-xiaoyu 2dc8ec8b11 Bridge via TLS 2018-11-09 17:43:04 +08:00
tigercl 3879dcdf59 Fix 'badarg' bug with duplicate subscriptions (#1943) 2018-11-08 23:02:35 +08:00
Gilbert Wong 32d3826440 Replace macro QOS$i to QOS_$I
The two styles of qos macro name in one project is chaotic. It is not
a good practice.

So I change the QOS$i to QOS_$i
2018-11-08 20:42:31 +08:00
turtleDeng 0a337cbcb4
Merge pull request #1905 from emqx/Fix-for-mqtt-sn
Fix the init_proc_mng_policy bug
2018-11-05 22:30:51 +08:00
Gilbert Wong 4ea57c2bf9 Delete redundant case clauses in sendfun
Prior to this change, there are ok, {binary, _Data}. {datagram, _Peer,
_Dara} case clauses, and the {binary, _Data} and {datagram, _Peer,
_Data} are unnecessary cases

This change delete these two cases and add ok in the end of funtion in
send_fun of emqx_ws_connection.
2018-11-03 22:56:11 +08:00
terry-xiaoyu 92cc171aaf Support tracing log files for specific topics or clients 2018-11-02 18:38:07 +08:00
terry-xiaoyu 94dbdffd59 New logger formatter with meta-data 2018-11-02 18:38:07 +08:00
spring2maz ae743ad1f0 Rewrite emqx_mqueue.erl
Fixed bugs:

- Priority queue lack of a `len + 1` logic in `in/2`

Changed behaviors:

- Topics not found in priority table (from config) will be treated with default priority,
  instead of hasing topic name to a priority number.
- Default priority is now configurable (it was always lower than all configured priorities)
- The dropped message due to reaching `max_len` is now returned from `in/2`,
  so the queue owner (`in/2` caller) can perform autopsy on it
2018-10-27 14:21:53 +02:00
tigercl 64cb920b3b
Merge branch 'emqx30' into improve_connect 2018-10-27 14:27:25 +08:00
周子博 3cea06f88f Remove resume_session/1, 2018-10-27 14:25:10 +08:00
周子博 7c14ba11d6 Set some attributes when session resumed 2018-10-27 13:59:17 +08:00
turtleDeng 8788cb2158
Merge pull request #1921 from emqx/improve_test_cases
Improve test cases
2018-10-26 19:45:18 +08:00
周子博 881e1a9621 Add case for ets:match_object 2018-10-26 19:43:05 +08:00
周子博 92251d4a8a Make more normalize 2018-10-26 17:45:13 +08:00
Gilbert Wong f7285d5a58 Delete ackprops in pstate
Prior to this change, ackprops is duplicated with ack_props

This change delete ackprops.
2018-10-26 17:30:39 +08:00
tigercl abb2e5c918
Improve test cases, and fix some bugs (#1920)
* Improve emqx_banned, emqx_pqueue, emqx_router test cases

* Improve emqx_broker test case, and fix bug in emqx_broker

* Add emqx_hooks to CT_SUITES
2018-10-26 17:27:02 +08:00
Gilbert 7544a21e25
Add test cases for emqx_bridge, emqx_mod_rewrite (#1914) 2018-10-26 14:04:33 +08:00
周子博 db2e47470a Fix bugs 2018-10-25 16:19:57 +08:00
周子博 6675e3d496 Implement will message delay publish in session, add test case for clean start and will message in connect packet 2018-10-25 14:26:31 +08:00
Gilbert Wong a1092a6784 Add eunit cases and fix typo. 2018-10-24 15:59:22 +08:00
周子博 540484e603 Send and cancel will message by apis rather than hook 2018-10-23 17:27:46 +08:00
Gilbert Wong 3f761cbe6a Support use certifate as username
Prior to this change, you can just use CN or EN field from the client
certificate as username.

This change add a new option to allow user to use Certificate directly as
username.
2018-10-23 14:37:05 +08:00
Gilbert 58f5f3c51b
Merge branch 'emqx30' into Fix-for-mqtt-sn 2018-10-23 13:29:45 +08:00
Gilbert Wong 35460d8227 Refactor send_fun 2018-10-22 09:04:03 +08:00
tigercl 55a12c1ab4
Merge branch 'emqx30' into improve_connect 2018-10-19 16:03:17 +08:00
Gilbert 4c40f75f4b Request & Response (broker and client) (#1819)
Add request & response support for CONNECT & CONNACK

Prior to this change, there is no validate and specified process for
Request-Response-Information and Response-Information

Also added basic Request/Response functionality to emqx_client implementation
2018-10-18 19:21:05 +02:00
Gilbert Wong 30d986c318 Add warning log for unauthored subscribe
Prior to this change, there is no log for unauthored log, it is
difficult to find the problem when subscription error occured.
2018-10-19 01:19:14 +08:00
spring2maz 7e7d99fbad Change more stats callbacks to full M:F/A
Including emqx_sm emqx_cm emqx_router_helper
2018-10-19 00:22:29 +08:00
spring2maz 4082f3ade2 Improve stats test
Before this change, the stats callback provided by emqx_broker_helper
was an anonymous function with module local context.
This commit changes it to a full fun M:F/A style callback for:
1. More robust to hot beam reload
2. Faster/smaller variable to construct
3. Easier test
2018-10-19 00:22:29 +08:00
Gilbert Wong 387f2468c0 Add SendFun case for emqx-sn 2018-10-18 15:01:45 +08:00
Gilbert Wong df713959ab Refactor init_proc_mng_policy.
If there is no zone, it is unnecessary to add proc_mng_policy.
2018-10-18 13:57:27 +08:00
Gilbert Wong a748e8f1d8 Refactor send_fun in protocol and other connection module
Prior to this change, in the send function, the packet is forced to
use emqx:serialize to serialize packet, it is a wrong design because
other plugins which need to transform the mqtt packet to other packets
can not use their own serialize function to serialize packet.

This change solve the problem issued above.
2018-10-18 13:24:06 +08:00
Gilbert Wong c890792613 Fix the init_proc_mng_policy bug
Prior to this change, when the plugin like emqx_sn_gateway which has
no zone run the init_proc_mng_policy function, it would trigger error
and application crash.

This change add a case to avoid crash.
2018-10-17 17:24:05 +08:00
周子博 29beb42aa2 Using client id rather then session pid 2018-10-10 14:00:17 +08:00
tigercl 40251a034c
Merge branch 'improve_connect' into emqx30 2018-10-09 18:03:22 +08:00
Gilbert Wong d36a34fb59 Fix topic_name validation bug
Prior to this change, Prior to this change, the validation for the mqtt5.0 publish packet
which both contains zero-length topic name and topic alias is wrong.
2018-10-09 17:45:40 +08:00
周子博 b80ba6e458 Fix bug when ConnProps is undefined 2018-10-09 14:19:22 +08:00
周子博 9bcd4c3e08 improve will message 2018-10-09 13:35:27 +08:00
Gilbert Wong 52eae65983 Fix topic_name validation bug
Prior to this change, Prior to this change, the validation for the mqtt5.0 publish packet
which both contains zero-length topic name and topic alias is wrong.

This change fix this bug.
2018-10-08 20:02:32 +08:00
spring2maz e3f2ae8db8 Change from customized total heap size check to set process flag
The `max_heap_size` process flag can be used to limit total
heap size of a process, and it gives much more detailed
crash log if the limit is hit.
2018-09-29 21:36:34 +08:00
周子博 1705f25db6 Fix bug in session expiry interval 2018-09-29 21:30:22 +08:00
周子博 1638aff0f9 Remove duplicate match 2018-09-29 14:47:21 +08:00
周子博 59798762a9 Remove will message when received disconnect packet with reason code 0x00 2018-09-29 14:47:21 +08:00
周子博 2d354ca883 Improve topic alias maximum in connect packet 2018-09-29 14:47:21 +08:00
周子博 064db65206 improve receive maximum in connect packet 2018-09-29 14:47:21 +08:00
spring2maz 3bab3cbd2a Shared subscriber should be keyed by SharedName + Topic
Prior to this change, if a producer session produces to two
or more shared subscriber groups, the previously picked subscriber
for sticky strategy may not be a valid member for the next group.
2018-09-28 09:37:51 +08:00
HuangDan 96b5d71a67 Fix args errors on emqx_hook:run('message.acked') 2018-09-27 11:49:23 +08:00
spring2maz 8a8729f9ea Make rebar3 xref work.
Fixed a bad call in emqx_mod_subscription module
also commented out dead code for now in emqx_config.erl
2018-09-25 22:09:13 +08:00
HuangDan 5dfd431040 Fix typo 2018-09-22 19:40:07 +08:00
turtleDeng 925e98a3e5
Merge pull request #1823 from emqx/add-shared-sub-strategy
Add new shared subscription dispatch strategy
2018-09-22 19:30:08 +08:00
周子博 4336b7c9a0 Fix bug in issue#1848 2018-09-22 18:23:56 +08:00
turtled 5afaac4641 Add emqx_broker:subscribe/3 defult qos 2018-09-22 18:03:05 +08:00
spring2maz b35d37c92d Add new shared subscription dispatch strategy
'random' was already there before this change
Added two new strategies: 'sticky' and 'round_robin'
'sticky' is made default as it is the cheapest
2018-09-22 10:50:34 +02:00
turtleDeng 8f35d13e17 Improve bridges design (#1849)
Improve the design of bridges
2018-09-22 16:19:28 +08:00
turtled 475f2a87c6 Rm emqx_ctl set|show cmds 2018-09-22 16:17:21 +08:00
tigercl 03f607c1b2 Fix issue#1833 and #1834 (#1845) 2018-09-22 16:10:24 +08:00
turtleDeng 8653732bae Revert "Calculate the 1.5 keep alive time exactly" 2018-09-22 14:52:31 +08:00
Feng Lee 02ddcf37cd
Merge branch 'emqx30' into more-gc-enforcement-policies 2018-09-22 06:35:11 +08:00
Feng Lee ee7a7e2479
Fix typo 2018-09-22 06:05:29 +08:00
Feng Lee 33f9e895ad
Merge branch 'emqx30' into more-gc-enforcement-policies 2018-09-22 05:52:41 +08:00
Feng Lee fbac9ce43e Improve the foce_gc_policy config. 2018-09-22 05:42:38 +08:00
spring2maz b61615323b Move shutdown policy config to zone configs 2018-09-21 18:58:18 +02:00
spring2maz f70d16e387 Add a test case to cover timeout message flush in emqx_misc 2018-09-21 18:58:18 +02:00
spring2maz 6fca651a84 Add connection/session shutdown policy
The hibernation behaviour is also changed (implicitly) in this commit:
Prior to this change, connection/session always hibernates after
the stats timer expires regardless of messages in mailbox.
After this commit, connection/session process only goes to hibernate
when the timer expires AND there is nothing left in the mailbox to
process
2018-09-21 18:58:18 +02:00
spring2maz 721f237bc4 Rewrite emqx_gc.erl
The implementation prior to this commit supports
only one gc enforcement policy which is message count threshold.
The new implementation introduces 1 more: volume threshold based
2018-09-21 22:56:34 +08:00
turtleDeng 98758752d4
Merge pull request #1839 from tigercl/emqx30
Calculate the 1.5 keep alive time exactly
2018-09-21 20:05:10 +08:00
terry-xiaoyu 389b3c80bc Fix the message delivery to remote 2018-09-21 20:00:43 +08:00
周子博 ab2697671a Change the location of the recording last packet timestamp 2018-09-21 19:59:32 +08:00
周子博 aade94711c Use process dictionaries to record last packet timestamp 2018-09-21 18:50:26 +08:00
周子博 768d1786c7 Fix bug 2018-09-20 15:55:36 +08:00
周子博 073bf481c9 Calculate the 1.5 keep alive time exactly 2018-09-20 15:51:28 +08:00
spring2maz e940c1c970 Rewrite emqx_gc.erl
The implementation prior to this commit supports
only one gc enforcement policy which is message count threshold.
The new implementation introduces 1 more: volume threshold based
2018-09-19 21:08:16 +02:00
HuangDan 3822ff987b Fix function args
Add test cases for emqx_pool module
2018-09-18 09:15:46 +08:00
Feng Lee ec061f7a21 Merge branch 'emqx30' of github.com:emqx/emqx into emqx30 2018-09-16 20:50:35 +08:00
Feng Lee 69e5869fa0 Add submit/2, async_submit/2 functions for emqx_pool module. 2018-09-16 20:49:47 +08:00
周子博 5eb92e37cc Remove check for MQTT path, and normalize code 2018-09-14 11:49:17 +08:00
周子博 5465b015be Add test case for last change 2018-09-14 11:49:17 +08:00
周子博 6f536eaac4 Add customized mqtt path for websocket 2018-09-14 11:49:17 +08:00
周子博 0c6a268539 Set default value of message expiry interval for not mqtt 5.0 message 2018-09-14 11:49:17 +08:00
周子博 88b3460715 Add feature for issue#1809 2018-09-14 11:49:17 +08:00
Gilbert Wong 45b2686e1c Delete unnecessary code
Prior to this change, there are multiple deprecated functions.
2018-09-14 09:45:34 +08:00
HuangDan fde6a2a4c3 Fixed issue #1811
Add tests case for issue #1811
2018-09-13 22:55:15 +08:00
spring2maz 8db9f3e81d Update & clarify module doc for emqx_mqueue.erl 2018-09-13 09:08:07 +08:00
spring2maz 0c39a7620e Rebar3 and erlang.mk dual support. (#1806)
* Rebar3 and erlang.mk dual support.

There was only erlang.mk support prior to this change.
The main reasons for this dual support are:
* Cover report upload can only be done by rebar3 in travis.ci
* We want to prepare for the future to build emqx releases using rebar3
* We do not want to stop supporting erlang.mk in one single step

* Add depencency version consistency check between erlang.mk and rebar.config
2018-09-09 21:51:42 +08:00
周子博 3caa41f751 Add run hook when duplicated subscription 2018-09-08 19:01:03 +08:00
周子博 23c91c0a40 no message 2018-09-08 18:31:44 +08:00
周子博 40977e529a Retain flag in retained message must set to 1 2018-09-08 18:31:44 +08:00
Gilbert Wong 78020de302 fix pattern match bu
Prior to this change, when packet have topic alias, the check_pub_caps
function could not be matched correctly

This change fix this bug.
2018-09-08 12:50:14 +08:00
Gilbert Wong 2d10d6971d add pattern match for topic alias
Prior to this change, it assume that topic_alias exists defaultly
which may cause the unexpected bug

This change fix this bug above
2018-09-08 12:01:22 +08:00
terry-xiaoyu 2121da3755 Ignore Will-Delay-Interval = 0 2018-09-08 10:10:22 +08:00
turtleDeng 0ec461484e
Merge pull request #1790 from emqx/emqx30-feng
Improve the Hooks' design
2018-09-07 21:46:30 +08:00
turtleDeng 66e9f9b02a
Merge pull request #1789 from Gilbert-Wong/emqx30
Check topic alias
2018-09-07 21:44:20 +08:00
turtleDeng 5ca61dd45c
Merge pull request #1788 from tigercl/emqx30
Support retain as published in subscription options
2018-09-07 21:43:56 +08:00
Gilbert 84e43c587d
Merge branch 'emqx30' into emqx30 2018-09-07 18:49:11 +08:00
周子博 6f6e24592b Fix the reverse match 2018-09-07 18:32:03 +08:00
turtleDeng ba176f2073
Merge pull request #1797 from terry-xiaoyu/banned_api_v2
Update for banned API
2018-09-07 17:50:30 +08:00
周子博 1326e89593 Fix a bug in emqx_protocol.erl 2018-09-07 15:16:32 +08:00
terry-xiaoyu dd8513ad35 Update for banned API
Use `mnesia:foldl` to traverse mnesia rather than `mnesia:first` and
`mnesia:next`, as a badarg exception would occur if the record was
deleted while travering the whole table.
2018-09-07 14:10:16 +08:00
周子博 f8471afb97 Add handling of retain handling subscription option 2018-09-07 13:50:12 +08:00
Feng Lee 304a24ca6a Code Review: Update the zone module
1. Add force_reload/0 management API
2. Change the reload interval to 5 minutes
2018-09-07 10:26:14 +08:00
Feng Lee d9ad29476a Code Review: Update the zone module
1. Add force_reload/1 API
2. Change the default reload interval to 5 minutes
2018-09-07 10:23:43 +08:00
周子博 d819ec0b58 Comment unused function in emqx_frame.erl 2018-09-07 10:18:21 +08:00
Gilbert Wong 765ab5ad7b Add condition to handle when mqx_topic_alias do not exist 2018-09-06 19:09:29 +08:00
Feng Lee 328d035dab Replace 'state' record with map 2018-09-06 18:43:47 +08:00
周子博 f95c82e37a Add metric for DISCONNECT packet 2018-09-06 18:14:14 +08:00
Feng Lee edf654727c Rename emqx_mqtt_properties module to emqx_mqtt_props 2018-09-06 18:09:22 +08:00
Feng Lee d99d0a22d0 Rename 'ignore' to 'ignored' 2018-09-06 17:54:32 +08:00
周子博 917eb8e29f Make DISCONNECT packet with reason code 0x00 when this packet doesn't have payload 2018-09-06 17:17:09 +08:00
Feng Lee 2a75105580 Improve the Hooks's design 2018-09-06 16:27:16 +08:00
Gilbert Wong c145cb89f4 add validate_properties for PUBLISH and fix error for SUB 2018-09-06 15:45:18 +08:00
周子博 42b3c9b4d6 Send DISCONNECT packet with reason code PROTOCOL_ERROR when topic is empty, add checks for topics 2018-09-06 14:47:34 +08:00
Gilbert Wong 9189d4ff41 catch topic_alias_invalid reasoncode 2018-09-06 14:24:07 +08:00
Gilbert Wong 876a983e93 Pub Packet delivered from client to server cannot contain sub id 2018-09-06 13:37:26 +08:00
Feng Lee 5e3aed0b73 Add ok_or_error/1 type 2018-09-06 09:10:47 +08:00
Feng Lee 4635921458 Rewrite the hooks module 2018-09-05 23:21:06 +08:00
Gilbert Wong c8b92a59b1 check topic alias 2018-09-05 19:06:34 +08:00
周子博 9029ee29d3 Drop will msg when receive the DISCONNECT packet whose reason code is equal to 0x00 2018-09-05 18:03:28 +08:00
周子博 47955f4309 fix bug in retain as published flag 2018-09-05 15:18:26 +08:00
周子博 aa34258f1e Support Retain As Published in Subscription Options 2018-09-05 14:25:33 +08:00
周子博 f0f818ab1a Fix bug in emqx_frame 2018-09-05 10:28:49 +08:00
Feng Lee 96122cf966 Rename 'already_existed' to 'already_exists' 2018-09-04 19:14:25 +08:00
周子博 842f4fbf13 Crash when reserved flag in CONNECT packet doesn't equal to 0, and remove repeated check for protocol version 2018-09-04 11:16:15 +08:00
chenyy abc6081282 fix error spelling word 2018-09-01 11:54:28 +08:00
terry-xiaoyu ec456dcc73 Fix dialyze issue 2018-08-31 20:48:57 +08:00
terry-xiaoyu 3f42f1271b bug fix 2018-08-31 18:14:10 +08:00
Feng Lee 880c6ab5fe Fix typo 2018-08-31 17:27:36 +08:00
Feng Lee ec7b39f3fd
Merge pull request #1777 from emqtt/emqx30-dialyzer
Add banned support, and fix dialyzer errors
2018-08-31 16:58:57 +08:00
Feng Lee 7c45d988f2 Update the spec of deliver/2 function 2018-08-31 16:57:43 +08:00
Feng Lee ea1ae70833 Fix errors found by dialyzer 2018-08-31 16:46:51 +08:00
Gilbert Wong e6fd7faa4b add format_variable for disconnect packet 2018-08-31 16:24:10 +08:00
Feng Lee 3045ec10ab Add banned feature 2018-08-31 14:04:26 +08:00
Feng Lee 237e65a4e0 Use emqx_mqueue:init/1 to create a mqueue 2018-08-31 10:22:16 +08:00
terry-xiaoyu 23e72feab7 fix reason codes 2018-08-31 01:54:25 +08:00
terry-xiaoyu 9406bc1fd1 fix typo 2018-08-31 01:39:56 +08:00
Feng Lee aa1334313c Merge branch 'emqx30' of github.com:emqtt/emqttd into emqx30 2018-08-31 01:22:55 +08:00
Feng Lee 25391e8c71 Rename 'Subscription-Identifiers-Available' to 'Subscription-Identifier-Available' 2018-08-31 01:22:03 +08:00
Gilbert Wong 748826bdee update access sutie and access control 2018-08-31 01:16:54 +08:00
Feng Lee dc9a1cd80f Format emqx_protocol module 2018-08-31 00:48:23 +08:00
Feng Lee 1574d85570
Merge pull request #1775 from emqtt/emqx30-feng
Support server_keepalive and CONNACK properties
2018-08-31 00:45:51 +08:00
Feng Lee 07f13db453 Fix conflict 2018-08-31 00:41:48 +08:00
Feng Lee b6006b5947 Support CONNACK properties 2018-08-31 00:40:10 +08:00
Gilbert Wong 1c94566141 add topic alias validate 2018-08-30 23:49:08 +08:00
Feng Lee 3131acd3bc
Merge branch 'emqx30' into emqx30-feng 2018-08-30 23:41:26 +08:00
Feng Lee 674b55e6e7
Merge pull request #1773 from tigercl/emqx30
Add emqx_banned test suite, and fix bugs in emqx_banned
2018-08-30 23:35:15 +08:00
Feng Lee 0379219a04 Improve the design of session discard 2018-08-30 23:14:09 +08:00
周子博 83e11b6e39 Add emqx_banned test suite, and fix bugs in emqx_banned 2018-08-30 22:45:08 +08:00
terry-xiaoyu fb8a86c5e0 delayed will message 2018-08-30 21:58:02 +08:00
terry-xiaoyu cf0f55d057 delayed will message 2018-08-30 21:44:00 +08:00
Feng Lee 4a1fdddc31
Merge pull request #1771 from emqtt/emqx30-feng
Only store packet_id and timestamp for qos2 message
2018-08-30 21:26:01 +08:00
Feng Lee 78a8ccd0f2 Only store packet_id and timestamp for qos2 message 2018-08-30 21:17:20 +08:00
Feng Lee dd7f0dec3c Add 'messages/qos2/expired' counter 2018-08-30 21:01:09 +08:00
Gilbert Wong 2fc41b6935 fix reason code name for mqtt 4 2018-08-30 19:09:22 +08:00
Feng Lee cae673cf5e Fix update_expiry/1 function_clause 2018-08-30 18:59:47 +08:00
Feng Lee 826daace61 Align the state record 2018-08-30 18:44:58 +08:00
Feng Lee c49e5dfddc
Merge branch 'emqx30' into emqx30-feng 2018-08-30 18:42:29 +08:00
Feng Lee 553a60cdec Update 'Message Expiry Interval' property before delivering a PUBLISH 2018-08-30 18:31:37 +08:00
Feng Lee 7b5f2577d3 Support message ttl and expiration 2018-08-30 18:30:33 +08:00
Feng Lee 1f2bbe3eb8 Support priority queue 2018-08-30 18:29:20 +08:00
Feng Lee a67958adb4 Add 'messages/expired' counter 2018-08-30 18:28:40 +08:00
Feng Lee 021d43755f Add update_expiry/1 function 2018-08-30 18:28:02 +08:00
terry-xiaoyu 8a5519cafa attrs for ws_connection 2018-08-30 14:32:31 +08:00
Gilbert Wong b0ed953708 fix emqx_session:unsubscribe bug 2018-08-30 13:56:55 +08:00
Feng Lee 2ccec1f719 Merge branch 'emqx30' into emqx30-feng 2018-08-30 11:54:49 +08:00
Feng Lee 2342a7db6d Rename 'Pid' to 'ConnPid' 2018-08-30 11:48:49 +08:00
Feng Lee 2db64cf53c Support 'Message-Expiry-Interval property 2018-08-30 11:42:24 +08:00
Feng Lee 2351b41f11 Add is_expired/1, check_expiry/1, check_expiry/2 2018-08-30 11:40:53 +08:00
turtled d3ed0853ef Rename bridge module 2018-08-30 10:41:04 +08:00
Feng Lee da1285ad3c Merge branch 'emqx30' into emqx30-feng 2018-08-30 09:45:29 +08:00
Feng Lee 53a2f93b7e Add emqx_connection:attrs/1, emqx_protocol:attrs/1, emqx_session:attrs/1 APIs 2018-08-30 03:03:19 +08:00
Feng Lee 98824a56c2 Remove emqx_flow_control module 2018-08-30 00:28:11 +08:00
Feng Lee 22f8302f98 Merge branch 'emqx30-feng' of github.com:emqtt/emqttd into emqx30-feng 2018-08-30 00:03:59 +08:00
Feng Lee a282c7625e Add properties for delivered messages 2018-08-30 00:03:38 +08:00
Feng Lee 8492513094
Merge branch 'emqx30' into emqx30-feng 2018-08-29 23:11:24 +08:00
Feng Lee 567aeb274f Define types in emqx_types, emqx_mqtt_types modules 2018-08-29 23:08:55 +08:00
turtled 98698d318f ws disconnect call emqx_protocol:shutdown 2018-08-29 21:39:09 +08:00
turtled d6f3ae640d Merge branch 'emqx30' of https://github.com/emqtt/emqttd into emqx30 2018-08-29 20:29:12 +08:00
turtled 1629215b18 Fix hook args bug 2018-08-29 20:29:03 +08:00
周子博 f4330b8af3 Add some test suites and fix bugs 2018-08-29 19:19:22 +08:00
Feng Lee 2dc8f9c4c5 Merge branch 'emqx30-feng' of github.com:emqtt/emqttd into emqx30-feng 2018-08-29 17:55:13 +08:00
Feng Lee e62d215792 Shutdown and reboot ranch application 2018-08-29 17:52:55 +08:00
Feng Lee 465963fec3
Merge branch 'emqx30' into emqx30-feng 2018-08-29 17:36:38 +08:00
Feng Lee 1a7d60a7e3 Improve the hooks design for emqx 3.0 2018-08-29 17:27:56 +08:00
terry-xiaoyu c967db409f EMQX 3.0 UT 2018-08-29 15:50:56 +08:00
turtled dae81037bf Update share_sub dispatch 2018-08-29 12:58:55 +08:00
turtled 9711892f73 Fix share_sub disconnect not clear route bug 2018-08-29 10:58:34 +08:00
turtled af21cdfd1b Rm tmp var 2018-08-29 10:08:15 +08:00
turtled 00cb26c4e0 Support ws mqtt any version 2018-08-29 10:00:41 +08:00
turtled 013a5a9c7c Fix emqx_protocol:clientid undefined 2018-08-29 09:30:18 +08:00
Feng Lee 594819b752 Upgrade the publish sequence of QoS1/2 messages 2018-08-29 02:53:22 +08:00
Feng Lee 1cf4532947 Add emqx_mountpoint module 2018-08-28 20:40:31 +08:00
周子博 545e80cd6b Add some test suites 2018-08-28 17:53:03 +08:00
Feng Lee 8e11845f87 Remove ignore_loop_deliver option 2018-08-28 07:36:22 +08:00
terry-xiaoyu c92eba4a5e bug fixes during UT 2018-08-28 00:27:45 +08:00
Gilbert 88d867b256
Merge pull request #1750 from Gilbert-Wong/emqx30
update emqx_broker_suite to adapt emqx 3.0 broker
2018-08-27 21:56:00 +08:00
Feng Lee 475319b907 Merge emqx30-feng branch 2018-08-27 21:36:43 +08:00
Feng Lee 1607e576de Update connection, session, stats modules 2018-08-27 21:34:11 +08:00
Gilbert Wong ce3f2e4d9e fix emqx_broker test suite 2018-08-27 21:18:00 +08:00
Gilbert Wong 015901050f change return tuple of close_session 2018-08-27 18:19:28 +08:00
Gilbert Wong 224aaaf8a7 unsubscribe function should have two params 2018-08-27 17:11:54 +08:00
Gilbert Wong c5da439313 wrong unsubscribe call 2018-08-27 16:41:58 +08:00
Feng Lee d167a5c99a
Merge pull request #1748 from emqtt/emqx30-feng
Improve the emqx_listeners module
2018-08-27 16:24:59 +08:00
Feng Lee a19daee353 Improve the print of listener startup 2018-08-27 16:19:58 +08:00
turtled 35d821a62e Add WS stats 2018-08-27 16:15:23 +08:00
Feng Lee 42288ac412 The ACL file should not be undefined 2018-08-27 15:57:13 +08:00
Feng Lee dca292f538 Replace 'Client' with 'Credentials' map 2018-08-27 15:54:41 +08:00
Gilbert a183693ac8
Merge pull request #1747 from Gilbert-Wong/emqx30
fix subscribe bugs and update emqx_mock_client
2018-08-27 15:36:13 +08:00
Gilbert Wong 087bfe80c8 fix unsubscribe emqx_mock_client error 2018-08-27 15:24:40 +08:00
turtled 91eb79967c Add syslog 2018-08-27 13:50:38 +08:00
Gilbert Wong 28e22825ba fix emqx subscriptions error 2018-08-27 12:35:36 +08:00
Gilbert Wong f0f1456168 fix duplicated subscribers with same topic 2018-08-27 11:21:16 +08:00
Feng Lee 6d2b31911a
Merge pull request #1746 from emqtt/emqx30-feng
Use map to replace #state{} record
2018-08-27 10:35:43 +08:00
turtled 6478f811bf Fix conflicts 2018-08-27 10:29:22 +08:00