Project: EMQ Technologies (App Definition and Development / Streaming & Messaging)
File: v5.0.14-en.md

Obfuscated sensitive data in the response when querying `bridges` information by API. Make possible to configure `host:port` from environment variables without quotes. Prior to this change, when overriding a `host:port` config value from environment variable, one has to quote it as: `env EMQXBRIDGESMQTTXYZ_SERVER='"localhost:1883"'`. Now it's possible to set it without quote as `env EMQXBRIDGESMQTTXYZ_SERVER='localhost:1883'`. Deprecates `enablebatch` and `enablequeue` options for bridges/resources. After this change, queuing is always enabled for bridges, and batching is controlled by the `batchsize` option: `batchsize > 1` means batching will be enabled. Implement sliding window average metrics. Made rule engine behavior more consistent with bridge behavior regarding metrics: if a rule engine is disabled, its metrics are now reset HTTP client library `ehttpc` upgraded from `0.4.2` to `0.4.3`. Library `eredis_cluster` which manages clients to redis clusters upgraded from `0.7.1` to `0.7.5`. The MongoDB library has been upgraded to support MongoDB 5.1+ Introduce `apikey.bootstrapfile` to initialize the api key at boot time. Deprecate `dashboard.bootstrapusersfile`. Limit the maximum number of api keys to 100 instead of 30. Fix the expiry_interval fields of the clients HTTP API to measure in seconds. Fix the problem of data loss and bad match when the MySQL driver is disconnected. Fix an issue where testing the GCP PubSub could leak memory, and an issue where its JWT token would fail to refresh a second time. Fix some issues that could lead to wrong bridge metrics. Fix and issue that could lead to message loss and wrong metrics with Kafka Producer bridge when Kafka or the connection to it is down. Fix some issues that could lead to the same message being delivered more than once when using batching for bridges and when the batch was retried. Remove possibility to set `clientid` for `/publish` and `/publish/bulk` HTTP APIs. This is to reduce the risk for security confusion. Fix the problem that the bridge is not available when the Payload template is empty in the MQTT

When deleting a non-existing bridge the server gave a success response. This has been fixed so that the server instead gives an error response when the user attempts to delete a non-existing bridge. Fix the problem that sending messages to data-bridges failed because of incorrect handling of some data-bridges without `local_topic` field configured. Before this change, if some bridges have configured the `localtopic` field but others have not, a `functionclause` error will occur when forwarding messages to the data-bridges. Fix handling of HTTP authorization result when a request failure (e.g.: HTTP resource is down) would cause a `function_clause` error. Set the default value of the `qos` field of the HTTP API `/clients/:clientid/subscribe` to 0. Before this fix, the `qos` field have no default value, which leads to a `function_clause` error when querying this API. Remove the default value of Webhook. Before this repair, the default value of the `body` field of Webhook is `${payload}`, but there is no `payload` field in the available fields of other events except message publishing in the rule, so in this case, the webhook will send a string with the message body as "undefined" to the HTTP service. This fix removes the default value of the `body` field. When the `body` field is not configured, Webhook will send all available fields of the current event in the format of JSON object. Fixed the problem of '404 Not Found' when calling the HTTP API '/clients/:clientid/subscribe/bulk' from the plug-ins and data-bridges on handling the 'client.connected' event. Fix `/mqtt/auto_subscribe` API's bad swagger schema, and make sure swagger always checks if the schema is correct. MQTT bridge config compatibility fix. The config created from before v5.0.12 may encounter a compatibility issue after upgraded to v5.0.13. Prior to this fix, if it always times out when trying to connect a bridge server, it's not possible to change other configs even when the bridge is disabled. Potential leaks of atoms that could lead to a crash if a lot of resources were created have been removed.