9.5 KiB
EMQX 4.3 Changes
Started tracking changes in CHANGE.md since EMQX v4.3.11
NOTE: Keep prepending to the head of the file instead of the tail
File format:
- Use weight-2 heading for releases
- One list item per change topic Change log ends with a list of github PRs
v4.3.14
Enhancements
- Add
RequestMeta
for exhook.proto in order to exposecluster_name
of emqx in each gRPC request. [#7524] - Support customize emqx_exhook execution priority. [#7408]
- add api: PUT /rules/{id}/reset_metrics. This api reset the metrics of the rule engine of a rule, and reset the metrics of the action related to this rule. [#7474]
- Enhanced rule engine error handling when json parsing error.
- Add support for
RSA-PSK-AES256-GCM-SHA384
,RSA-PSK-AES256-CBC-SHA384
,RSA-PSK-AES128-GCM-SHA256
,RSA-PSK-AES128-CBC-SHA256
PSK ciphers, and removePSK-3DES-EDE-CBC-SHA
,PSK-RC4-SHA
from the default configuration. [#7427] - Diagnostic logging for mnesia
wait_for_table
- prints check points of mnesia internal stats
- prints check points of per table loading stats Help to locate the problem of long table loading time.
- Add
local
strategy for Shared Subscription. That will preferentially dispatch messages to a shared subscriber at the same node. It will improves the efficiency of shared messages dispatching in certain scenarios, especially when the emqx-bridge-mqtt plugin is configured as shared subscription. [#7462] - Add some compression functions to rule-engine: gzip, gunzip, zip, unzip, zip_compress, zip_uncompress
Bug fixes
- Prohibit empty topics in strict mode
- Make sure ehttpc delete useless pool always succeed.
- Update mongodb driver to fix potential process leak.
- Fix a potential security issue #3155 with emqx-dashboard plugin. In the earlier implementation, the Dashboard password is reset back to the default value of emqx_dashboard.conf after the node left cluster. Now we persist changed password to protect against reset. [#7518]
- Silence grep/sed warnings in docker-entrypoint.sh. [#7520]
- Generate
loaded_modules
andloaded_plugins
files with default values when no such files exists. [#7520] - Fix the configuration
server_name_indication
set to disable does not take effect. - Fix backup files are not deleted and downloaded correctly when the API path has ISO8859-1 escape characters.
v4.3.13
Important changes
- For docker image, /opt/emqx/etc has been removed from the VOLUME list, this made it easier for the users to rebuild image on top with changed configs.
- CentOS 7 Erlang runtime is rebuilt on OpenSSL-1.1.1n (previously on 1.0),
Prior to v4.3.13, EMQX pick certain cipher suites proposed by the clients,
but then fail to handshake resulting in a
malformed_handshake_data
exception. - CentOS 8 Erlang runtime is rebuilt on RockyLinux 8. 'centos8' will remain in the package name to keep it backward compatible.
Enhancements
- CLI
emqx_ctl pem_cache clean
to force purge x509 certificate cache, to force an immediate reload of all certificates after the files are updated on disk. - Refactor the ExProto so that anonymous clients can also be displayed on the dashboard [#6983]
- Force shutdown of processes that cannot answer takeover event [#7026]
topic
parameter in bridge configuration can have${node}
substitution (just like inclientid
parameter)- Add UTF-8 string validity check in
strict_mode
for MQTT packet. When set to true, invalid UTF-8 strings will cause the client to be disconnected. i.e. client ID, topic name. [#7261] - Changed systemd service restart delay from 10 seconds to 60 seconds.
- MQTT-SN gateway supports initiative to synchronize registered topics after session resumed. [#7300]
- Add load control app for future development.
- Change the precision of float to 17 digits after the decimal point when formatting a float using payload templates of rule actions. The old precision is 10 digits before this change. [#7336]
- Return the cached resource status when querying a resource using HTTP APIs. This is to avoid blocking the HTTP request if the resource is unavailable. [#7374]
Bug fixes
- Fix the
{error,eexist}
error when do release upgrade again if last run failed. [#7121] - Fix case where publishing to a non-existent topic alias would crash the connection [#6979]
- Fix HTTP-API 500 error on querying the lwm2m client list on the another node [#7009]
- Fix the ExProto connection registry is not released after the client process abnormally exits [#6983]
- Fix Server-KeepAlive wrongly applied on MQTT v3.0/v3.1 [#7085]
- Fix Stomp client can not trigger
$event/client_connection
message [#7096] - Fix system memory false alarm at boot
- Fix the MQTT-SN message replay when the topic is not registered to the client [#6970]
- Fix rpc get node info maybe crash when other nodes is not ready.
- Fix false alert level log “cannot_find_plugins” caused by duplicate plugin names in
loaded_plugins
files. - Prompt user how to change the dashboard's initial default password when emqx start.
- Fix errno=13 'Permission denied' Cannot create FIFO boot error in Amazon Linux 2022 (el8 package)
- Fix user or appid created, name only allow
^[A-Za-z]+[A-Za-z0-9-_]*$
- Fix subscribe http api crash by bad_qos
/mqtt/subscribe
,/mqtt/subscribe_batch
. - Send DISCONNECT packet with reason code 0x98 if connection has been kicked [#7309]
- Auto subscribe to an empty topic will be simply ignored now
v4.3.12
Important changes
Minor changes
- Fix updating
emqx_auth_mnesia.conf
password and restarting the new password does not take effect [#6717] - Fix import data crash when emqx_auth_mnesia's record is not empty [#6717]
- Fix
os_mon.sysmem_high_watermark
may not alert after reboot. - Enhancement: Log client status before killing it for holding the lock for too long. emqx-6959 ekka-144 ekka-146
v4.3.11
Important notes:
-
For Debian/Ubuntu users
We changed the package installed service from init.d to systemd. The upgrade from init.d to systemd is verified, however it is recommended to verify it before rolling out to production. At least to ensure systemd is available in your system.
-
For Centos Users
RPM package now depends on
openssl11
which is NOT available in certain centos distributions. Please make sure the yum repo epel-release is installed.
Important changes
- Debian/Ubuntu package (deb) installed EMQX now runs on systemd [#6389]
This is to take advantage of systemd's supervision functionality to ensure EMQX service is restarted after crashes.
Minor changes
-
Clustering malfunction fixes [#6221, #6381] Mostly changes made in ekka
From 0.8.1.4 to 0.8.1.6, fixes included intra-cluster RPC call timeouts,
also fixedekka_locker
process crashed after killing a hanged lock owner. -
Improved log message when TCP proxy is in use but proxy_protocol configuration is not turned on [#6416]
"please check proxy_protocol config for specific listeners and zones" to hint a misconfiguration -
Helm chart supports networking.k8s.io/v1 [#6368]
-
Fix session takeover race condition which may lead to message loss [#6396]
-
EMQX docker images are pushed to aws public ecr in an automated CI job [#6271]
docker pull public.ecr.aws/emqx/emqx:4.3.10
-
Fix webhook URL path to allow rule-engine variable substitution [#6399]
-
Corrected RAM usage display [#6379]
-
Changed emqx_sn_registry table creation to runtime [#6357]
This was a bug introduced in 4.3.3, in which the table is changed from ets to mnesia
this will cause upgrade to fail when a later version node joins a 4.3.0-2 cluster -
Log level for normal termination changed from info to debug [#6358]
-
Added config
retainer.stop_publish_clear_msg
to enable/disable empty message retained message publish [#6343]
In MQTT 3.1.1, it is unclear if a MQTT broker should publish the 'clear' (no payload) message
to the subscribers, or just delete the retained message. So we have made it configurable -
Fix mqtt bridge malfunction when remote host is unreachable (hangs the connection) [#6286, #6323]
-
System monitor now inspects
current_stacktrace
of suspicious process [#6290]
current_function
was not quite helpful -
Changed default
max_topc_levels
config value to 128 [#6294, #6420]
previously it has no limit (config value = 0), which can be a potential DoS threat -
Collect only libcrypto and libtinfo so files for zip package [#6259]
in 4.3.10 we tried to collect all so files, however glibc is not quite portable -
Added openssl-1.1 to RPM dependency [#6239]
-
Http client duplicated header fix [#6195]
-
Fix
node_dump
issues when working with deb or rpm installation [#6209] -
Pin Erlang/OTP 23.2.7.2-emqx-3 [#6246]
4.3.10 is on 23.2.7.2-emqx-2, this bump is to fix an ECC signature name typo: ecdsa_secp512r1_sha512 -> ecdsa_secp521r1_sha512 -
HTTP client performance improvement [#6474, #6414]
The changes are mostly done in the dependency repo. -
For messages from gateways add message properties as MQTT message headers [#6142]
e.g. messages from CoAP, LwM2M, Stomp, ExProto, when translated into MQTT message
properties such as protocol name, protocol version, username (if any) peer-host
etc. are filled as MQTT message headers. -
Format the message id to hex strings in the log message [#6961]
v4.3.0~10
Older version changes are not tracked here.