Enhancements
-
#15628 Remove HStreamDB data integration.
-
#15463 Durable storage RAM usage and storage efficiency optimizations.
-
Added the following configuration parameters for the durable storage:
-
durable_storage.messages.rocksdb.write_buffer_size
: RocksDB memtable size per shard. durable_storage.messages.rocksdb.cache_size
: RocksDB block size per shard.durable_storage.messages.rocksdb.max_open_files
: Limits the number of file descriptors used by RocksDB per shard.-
durable_storage.messages.layout.wildcard_thresholds
: Allows to tune wildcard thresholds for thewildcard_optimized_v2
storage layout -
The default
serialization_schema
for the messages has been changed toasn1
. -
#15484 Changed our build system so that all packages are build with Elixir's Mix, so that all now ship with Elixir support. This opens up EMQX to Elixir community and allows us to use Elixir dependencies when required, besides enabling use of IEx as a better EMQX console.
-
#15525 Now, when attempting to remove an Internal Schema which is being referenced by either a Schema Validation or a Message Transformation, the removal will be denied. - #15542 Upgraded our
erlcoud
library to3.8.3.0
. This allows one to setup a S3 Connector without specifying Access Key Id and Secret Acces s Key, so long as the EC2 instance EMQX is running in has the correct IAM permissions to read/write to the configured bucket(s). - #15544 Add Arrow Flight SQL NIF driver support for Datalayers Integration. -
#15556 Exposed maximum trace file size limit per each individual trace as a configuraion option
trace.max_file_size
. -
#15583 #15585 Updated our
brod
client to version 4.4.4. This expands the supported Kafka API ranges, in particular due to theJoinGroups
APIv0
-v1
being deprecated. -
#15594 Exposed maximum number of traces allowed to exist in the cluster simultaneously as a configuration option
trace.max_traces
. This limi t does not apply to node-local traces managed throughemqx ctl trace
.
Optimized tracing implementation to eliminate potential atom leaks per created trace.
-
#15600 Added a new
cluster.description
configuration that allows one to add a description to the EMQX cluster. This description can be chan ged viaPUT /cluster
, and viewed in theGET /cluster
response. -
#15621 Now,
access_key_id
andsecret_access_key
are optional fields for the S3Tables Connector. If omitted, they'll be obtained from the Instance Metadata Service v2 APIs from the EC2 instance where EMQX is deployed. -
#15631 A new API endpoint is added to list all models available for an AI provider.
-
#15635 Added new
key
andtag
template fields for the RocketMQ Action which sets the message's key and tag, respectively. Also, added a ne wkey_dispatch
value for thestrategy
field. -
#15649 Added new Connectors and Actions that appends data to AWS AlloyDB, CockroachDB and AWS Redshift.
-
#15724 Introduce
openai_response
type for AI Completion Providers and completion profiles to use OpenAI'sresponse
API. -
#15536 Disable the
node.global_gc_interval
configuration by default. -
#15539 Optimize Erlang VM parameters.
-
Increase the buffer sizes for distributed channels to 32MB to avoid
busy_dist_port
alarms during intensive Mnesia operations:+zdbbl 32768
- Disable scheduler busy-waiting to reduce CPU usage observed by the operating system:
+sbwt none +sbwtdcpu none +sbwtdio none
-
Set scheduler binding type to
db
to reduce message latency:+stbt db
-
#15451 Introduce experimental
socket
backend for TCP listeners, designed to improve message processing latency and reduce compute resource u sage. This can be enabled via the newtcp_backend
listener option.
Bug Fixes
-
#15383 Fix a potential resource leak in MQTT bridge when the bridge fails to start. Previously, the topic index table was not properly cleaned up when the bridge failed to start.
-
#15547 Fixed error when an HTTP request with a large body is sent.
-
#15489 Fix OIDC issuer scheme validation.
The previously unsupported issuer URLs listed below are now supported.
https://xxxxxxxx:8443/webman/sso/.well-known/openid-configuration
-
hostname
-
#15553 Fixes an issue with helm chart when all nodes except one will be crashing if the chart is deployed with default values.
-
#15569 Fixed an issue where a Republish Rule Action could fail if the template for
direct_dispatch
was an empty string or resolve to a non-b oolean value. Now, if such situations occur, the default value,false
, will be used. -
#15580 Add emqxLicenseSecretRef variable to EMQX Enterprise helm chart, allowing users to specify a Kubernetes secret containing the EMQX lice nse key. This fixes the issue with defunct emqxLicenseSecretName variable.
-
#15581 Upgrade OTP version from 26.2.5.2 to 26.2.5.14
This upgrade includes two TLS-related fixes relevant to EMQX:
- Fixed a crash in TLS connections caused by a race condition during certificate renewal.
-
Added support for RSA certificates signed with PSS parameters. Previously TLS handshake may fail with
invalid_signature
. -
#15603 Fixed an issue with the MQTT bridge when a stale connection was displayed as `Connected' and the connection was not re-established.
-
#15647 Previously, if the user of a MongoDB Connector did not have sufficient privileges to perform
find
queries in afoo
collection, it w ould be considered disconnected. This has been fixed. -
#15693 Postgres-based bridges were patched to avoid leaking connection pools. Previously, depending on race conditions when initializing the pool, if one later deleted the Connector, the pool could still be present.
-
#15696 Support connection rate limiting for WebSocket (WS) and WebSocket Secure (WSS) listeners. Listener configuration options
max_conn_rate
andmax_conn_burst
are now respected: incoming connections going over specified connection rate are closed immediately after being accepted, mirroring TCP listener behavior.
The max_connections
option for WS/WSS listeners has also slightly changed: connections exceeding the limit are closed immediately after acceptance, before any HTTP protocol exchange
. Clients will now see an abrupt socket close instead of HTTP 429.
Breaking Changes
-
#15613 Stopped releasing packages for Debian 10.
-
#15635 We no longer support setting key templates (and thus implicitly specifying key dispatch strategy) in the
parameters.strategy
field of RocketMQ Action. Instead, users should setparameters.strategy = key_dispatch
and specify the template inparameters.key
.