Enhancements
TLS listener memory usage optimization #9005. New config
listener.ssl.$NAME.hibernate_after
to hibernate TLS connection process after idling. Hibernation can reduce RAM usage significantly, but may cost more CPU. This configuration is by default disabled. Our preliminary test shows a 50% of RAM usage decline when configured to '5s'.TLS listener default buffer size to 4KB #9007 Eliminate uncertainty that the buffer size is set by OS default.
Disable authorization for
api/v4/emqx_prometheus
endpoint. 8955Added a test to prevent a last will testament message to be published when a client is denied connection. #8894
More rigorous checking of flapping to improve stability of the system. #9045
QoS1 and QoS2 messages in session's buffer are re-dispatched to other members in the group when the session terminates #9094. Prior to this enhancement, one would have to set
broker.shared_dispatch_ack_enabled
to true to prevent sessions from buffering messages, however this acknowledgement comes with a cost.Prior to this fix, some of the time stamps were taken from the
os
module (system call), while majority of other places are usingerlang
module (from Erlang virtual machine). This inconsistent behaviour has caused some trouble for the Delayed Publish feature when OS time changes. Now all time stamps are fromerlang
module. #8908
Bug fixes
Fix HTTP client library to handle SSL socket passive signal. #9145
Hide redis password in error logs #9071 In this change, it also included more changes in redis client:
- Improve redis connection error logging eredis #19.
Also added support for eredis to accept an anonymous function as password instead of
passing around plaintext args which may get dumpped to crash logs (hard to predict where).
This change also added
format_status
callback forgen_server
states which hold plaintext password so the process termination log andsys:get_status
will print '**' instead of the password to console. - Avoid pool name clashing eredis_cluster #22
Same
format_status
callback is added here too forgen_server
s which hold password in their state.
- Improve redis connection error logging eredis #19.
Also added support for eredis to accept an anonymous function as password instead of
passing around plaintext args which may get dumpped to crash logs (hard to predict where).
This change also added
Fix shared subscription message re-dispatches #9094.
- When discarding QoS 2 inflight messages, there were excessive logs
- For wildcard deliveries, the re-dispatch used the wrong topic (the publishing topic, but not the subscribing topic), caused messages to be lost when dispatching.
Fix shared subscription group member unsubscribe issue when 'sticky' strategy is used. Prior to this fix, if a previously picked member unsubscribes from the group (without reconnect) the message is still dispatched to it. This issue only occurs when unsubscribe with the session kept. Fixed in #9119
Fix shared subscription 'sticky' strategy when there is no local subscriptions at all. Prior to this change, it may take a few rounds to randomly pick group members until a local subscriber is hit (and then start sticking to it). After this fix, it will start sticking to whichever randomly picked member even when it is a subscriber from another node in the cluster. Fixed in #9122
Fix rule engine fallback actions metrics reset. #9125
Fix the latency statistics error of the slow subscription module when
stats_type
isinternal
orresponse
. #8981