Commit Graph

1479 Commits

Author SHA1 Message Date
Gilbert Wong ec03f8e1fa Fix the deliver packet bug and add test case 2019-01-11 16:41:20 +08:00
turtleDeng a5f9466040 QoS0 msg support msgid (#2145)
* QoS0 msg support msgid

* Fix testcase
2019-01-11 11:47:10 +08:00
Feng Lee 5ccaaed34c Add 'next_events/1' and fix the 'process_incoming/3' function 2019-01-10 09:23:05 +08:00
Feng Lee 3e15ac0bbb Improve the design of 'emqx_client' module
Use '{next_event, cast, Packet}' to replace 'gen_statem:cast/2'
2019-01-10 09:23:05 +08:00
Feng Lee 30f32de13a Use map to replace 'state' record 2019-01-10 08:53:10 +08:00
Feng Lee e882af9369 Use the new logger macros 2019-01-10 08:53:10 +08:00
Feng Lee fe0f5333b3 Improve the pool design
- Move 'emqx_pool:start_link/0' to emqx_pool_sup module
- Use the new log macros
- Add more test cases
2019-01-10 08:49:58 +08:00
Feng Lee 4230a3c535 Optimize the trie match 2019-01-09 11:57:22 +08:00
Feng Lee 0c418581b2 Add emqx_trie:empty/0 and optimize match_routes/1 2019-01-09 11:57:22 +08:00
Gilbert dee88fb018 Fix mem cache bug (#2129) 2019-01-07 14:15:27 +08:00
Shawn 0d9929fdaa Logger level in one command (#2115)
* Refactor logger-level-in-one-command

* Update API
2019-01-07 11:40:54 +08:00
Shawn cb93a356a0 Fix crash if peer closed the connection (#2120)
Prior to this fix, we'll get the following crash if we connected to
another emqx broker but got refused because of wrong username or password.
2019-01-07 11:40:05 +08:00
Feng Lee d7254cdc7f Add more macros for logger 2019-01-04 17:30:27 +08:00
terry-xiaoyu 3b8eb41347 Remove the log header macro 2019-01-04 17:30:27 +08:00
Shawn 69954480bf
Hook args (#2119) 2019-01-03 13:54:31 +08:00
YoukiLin 78b3c375d8
Improving 'emqx_ws_connection' coverage (#2107) 2019-01-03 12:59:39 +08:00
Gilbert 9a2573d54b Refactor bridge (#2117)
* Refactor bridge
2019-01-03 09:10:43 +08:00
Gilbert 72791b569e
Improve app src (#2114)
* Add replayq in emqx.app.src

* Fix publish_readq_msg badmatch
2018-12-28 20:04:52 +08:00
Gilbert Wong eed03ee297 Add replayq in emqx.app.src 2018-12-28 19:53:58 +08:00
turtleDeng 6a1ebe299a
Merge emqx32 to emqx30 (#2112) 2018-12-28 19:44:41 +08:00
Shawn d854120023
Show plugin name if cannot start it (#2111) 2018-12-28 16:37:01 +08:00
Gilbert 1797aadbe7 Fix unsuback compat (#2102) 2018-12-22 18:47:38 +08:00
tigercl edf0ded9f3 Fix bug that no update message expiry interval (#2101) 2018-12-22 11:32:22 +08:00
turtled f7596b8131 Fix session shutdown bug 2018-12-21 22:44:58 +08:00
Feng Lee bb45825e77 Inc deliver_stats, enqueue_stats with emqx_pd:update_counter/2 (#2100) 2018-12-21 18:31:04 +08:00
turtled 6f4d517350 Fix conflicts 2018-12-21 17:55:25 +08:00
Feng Lee f31e7f8bde Replace put/2 with emqx_pd:update_counter/2 (#2098) 2018-12-21 17:47:49 +08:00
turtled 7d3357e0f3 Merge emqx32 2018-12-21 16:01:32 +08:00
YoukiLin e949e8cbd8 Add format output for test print (#2076)
* Add formatted output for the test print
2018-12-21 15:42:42 +08:00
Feng Lee 10e5210581 Workaround ssl:setopts(SslSock, [{active, N}]) (#2095)
* Set '{active, true}' for SSL socket
2018-12-21 15:39:24 +08:00
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