- Fix
vmq_webhooks
issue where MQTTv5 hooks where not configurable in the
vernemq.conf
file. - Support shared subscriptions in
vmq_bridge
. - Fix bug in Prometheus output (#923).
- Fix
max_message_rate
to include MQTTv5 sessions. - Support new
throttle
modifier for theauth_on_publish
and
auth_on_publish_m5
hooks which will throttle the publishing client by
waiting for a given number of milliseconds before reading new data from the
client socket. Note, backpressure is not supported for websocket
connections. This feature was kindly sponsored by Arduino SA
(https://www.arduino.cc/). - Fix issue with long-running
vmq-admin
commands (#644). - Added a new HTTP module
vmq_health_http
exposing a/health
endpoint that
returns 200 when VerneMQ is accepting connections and joined the cluster
(for clustered setups) or returns 503 in case any of the two conditions
are not met (#889). - Fix issue where a QoS2 message would be republished if a client would resend
the PUBLISH packet with the same message id within a non-finished QoS2 flow
(#944). - Make VerneMQ build on FreeBSD (11.2-RELEASE) with
gmake rel
. - Fix issue with blocking socket commands in inter-node communication.
- Improve error messages when parsing invalid CONNECT packets.
- Log IP and port information on authentication failures to make it easy to
block the client with tools like Fail2ban (#931). - Fix issue which would crash the session if a client would resend a (valid)
pubrec during a Qos2 flow (#926). - Fix
vmq_diversity
error message if invalid or unknown modifiers are returned
from a lua hook implementation. - Fix issue preventing MQTT 5.0 properties from being modifiable in
auth_on_publish_m5
(#964). - Fix issue which causes a crash if not enough data is available while parsing
the CONNECT frame invmq_mqtt_pre_init
(#950, #962). - Fix issue which could cause
vmq-admin session show
to crash when using
--limit=X
to limit the number of returned results (#902). - Handle edge case in the websocket implementation which could cause warninigs
when the session was terminating. - Expose
vernemq_dev_api:disconnect_by_subscriber_id/2
in lua
vmq_api.disconnect_by_subscriber_id/2
, an example looks like:
vmq_api.disconnect_by_subscriber_id({mountpoint = "", client_id = "client-id"}, {do_cleanup = true})
. - Improve
vmq_webhooks
errors so the error from the endpoint is shown as the
error reason where relevant. - Optimization: optimize away read operation during client registration by
reusing already available data. - Enable plugins to expose metrics via the available metric providers.
- Add histogram metric type.
- Fix incorrect debug log message in QoS 2 flow.
- Expose bridge metric for messages dropped in case the outgoing queue is full.
- Log (debug level) when a LWT is suppressed on session takeover.
- Optimize subscribe operation by refactoring away one read from the metadata
store. - Add protection mechanism for the plumtree metadata store from subscription
floods by dropping and not acknowledgingi_have
messages when the mailbox
size grows above a certain threshold. This threshold is configurable via the
plumtree.drop_i_have_threshold
hidden option. The default is 1000000. This
work was kindly contributed by ADB (https://www.adbglobal.com). - Add new
vmq-admin retain
commands to inspect the retained message store. - Support for different MySQL password hashing methods in
vmq_diversity
,
ensuring compatibility with MySQL 8.0.11+. The method is configurable via the
vmq_diversity.mysql.password_hash_method
option which allows:
password
(default for compatibility),md5
,sha1
orsha256
. - Fix the HTTP
/status.json
endpoint to have a valid JSON output (#786). - Fix bug where internal application plugins where shown as normal plugins.
- Fix crash in bridge when calling
vmq-admin session show
by fixing the
vmq_ql
row initializer to handle plugin sessions (the bridge starts a local
plugin session). - Add improvements to VerneMQ status page to have nicer UI and be readable on smaller devices.
- Upgraded dependency
sext
to 1.5.0 (required for better OSX compilation). - Do not accept new client connections while the broker is shutting down as this
could cause errors to be reported in the log (#1004). - Fix
vmq_diversity
PostgreSQL reconnect issue (#1008). - Fix
vmq_webhooks
so peer port is not considered when caching the
auth_on_register
to avoid cache misses. - Multiple bug fixes and improvements in
vmq_swc
. - Add the
vmq_swc
metadata plugin (using the already existing LevelDB backend) to
the default VerneMQ release. To usevmq_swc
instead ofvmq_plumtree
set
metadata_plugin = vmq_swc
invernemq.conf
.vmq_swc
is still in Beta. - Add missing increments of the
mqtt_connack_sent
metric for CONNACK
success(0) for MQTT 3.1.1. - Handle edge case with unknown task completion messages in
vmq_reg_sync
after
a restart. - Fix bug which could cause a queue cleanup to block indefinitely and cause the
vmq_in_order_delivery_SUITE
tests to fail. - Add a new metric (queue_initialized_from_storage) to better monitor queue
initialization process after a node restart. - Fix edge case where an extra queue process could be started when metadata
events arrive late. Now local queue processes are only started when triggered
via a new local MQTT session. - Reimplement dead queue repair mechanism.
- Add feature to reauthorize existing client subscriptions by reapplying current
auth_on_subscribe
andauth_on_subscribe_m5
hooks. This feature is exposed as a developer API invernemq_dev
, via
thevmq-admin session reauthorize
CLI command, and as a API forvmq_diversity
Lua scripts. This
work was kindly sponsored by AppModule AG (http://www.appmodule.net). - Improve planned cluster leave queue migration speed significantly (#766).
- Start metrics server before setting up queues to ensure queue metric counts
are correct when restarting VerneMQ. - Let Travis CI build the VerneMQ release packages.
- Add new metric
system_process_count
which is a gauge representing the
current number of Erlang processes. - Add
queue_started_at
andsession_started_at
information to thevmq-admin session show
command. Times are POSIX time in milliseconds and local to the
node where the session or queue was started.