emqx/changes/v5.0.26.en.md

8.4 KiB

v5.0.26

Enhancements

  • #10584 Add log level configuration to SSL communication

  • #10702 Introduce a more straightforward configuration option keepalive_multiplier and deprecate the old keepalive_backoff configuration. After this enhancement, EMQX checks the client's keepalive timeout status period by multiplying the "Client Requested Keepalive Interval" with keepalive_multiplier.

  • #10713 We hide the request_timeout in resource_option of the webhook to keep it consistent with the http request_timeout of the webhook. From now on, when configuring a webhook through API or configuration files, it is no longer necessary to configure the request_timeout of the resource. Only configuring the http request_timeout is sufficient, and the request_timeout in the resource will automatically be consistent with the http request_timeout.

  • #10511 Improve the security and privacy of some resource logs by masking sensitive information in the data.

  • #10678 Optimized counter increment calls to avoid work if increment is zero.

  • #10690 Added a retry mechanism to webhook bridge that attempts to improve throughput.

    This optimization retries request failures without blocking the buffering layer, which can improve throughput in situations of high messaging rate.

  • #10698 Optimize memory usage when accessing the configuration during runtime.

Bug Fixes

  • #10340 Fixed the issue that could lead to crash logs being printed when stopping EMQX via systemd.

    2023-03-29T16:43:25.915761+08:00 [error] Generic server memsup terminating. Reason: {port_died,normal}. Last message: {'EXIT',<0.2117.0>,{port_died,normal}}. State: [{data,[{"Timeout",60000}]},{items,{"Memory Usage",[{"Allocated",929959936},{"Total",3832242176}]}},{items,{"Worst Memory User",[{"Pid",<0.2031.0>},{"Memory",4720472}]}}].
    2023-03-29T16:43:25.924764+08:00 [error] crasher: initial call: memsup:init/1, pid: <0.2116.0>, registered_name: memsup, exit: {{port_died,normal},[{gen_server,handle_common_reply,8,[{file,"gen_server.erl"},{line,811}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,226}]}]}, ancestors: [os_mon_sup,<0.2114.0>], message_queue_len: 0, messages: [], links: [<0.2115.0>], dictionary: [], trap_exit: true, status: running, heap_size: 4185, stack_size: 29, reductions: 187637; neighbours:
    2023-03-29T16:43:25.924979+08:00 [error] Supervisor: {local,os_mon_sup}. Context: child_terminated. Reason: {port_died,normal}. Offender: id=memsup,pid=<0.2116.0>.
    
  • #10563 Corrected an issue where the no_local flag was not functioning correctly.

  • #10600 Deleted emqx_statsd application.

  • #10653 Store gateway authentication TLS certificates and keys in the data directory.

  • #10677 In Rule API, reapond with 404 HTTP error code when trying to delete a rule that does not exist.

  • #10682 Fix the timestamp for the will message is incorrectly assigned at the session creation time, now this timestamp is the disconnected time of the session.

  • #10701 RPM package for Amazon Linux 2 did not support TLS v1.3 as it was assembled with Erlang/OTP built with openssl 1.0.

  • #10715 Postpone trimming the connection information structure until after client.connected hooks have been executed. These hooks once again have access to the client's peer certificate.

  • #10717 Fixed an issue where the buffering layer processes could use a lot of CPU when inflight window is full.

  • #10724 A summary has been added for all endpoints in the HTTP API documentation (accessible at "http://emqx_host_name:18083/api-docs").

  • #10726 Validate Health Check Interval and Auto Restart Interval against the range from 1ms to 1 hour.

  • #10728 Fixed an issue where the rule engine was unable to access variables exported by FOREACH in the DO clause.

    Given a payload: {"date": "2023-05-06", "array": ["a"]}, as well as the following SQL statement:

    FOREACH payload.date as date, payload.array as elem
    DO date, elem
    FROM "t/#"
    

    Prior to the fix, the date variable exported by FOREACH could not be accessed in the DO clause of the above SQL, resulting in the following output for the SQL statement: [{"elem": "a","date": "undefined"}]. After the fix, the output of the SQL statement is: [{"elem": "a","date": "2023-05-06"}]

  • #10737 Fix the issue where the HTTP API interface of Gateway cannot handle ClientIDs with special characters, such as: !@#$%^&*()_+{}:"<>?/.

  • #10742 Check the correctness of the rules before saving the authorization file source. Previously, Saving wrong rules could lead to restart failure.

  • #10743 Fixes an issue where trying to get a bridge info or metrics could result in a crash when a node is joining a cluster.

  • #10746 Add missing support of the event $events/delivery_dropped into the rule engine test API rule_test.

  • #10747 Refactor date and time functions, format_date and date_to_unix_ts, in the rule engine to fix the implementation problem.

  • #10755 Fixed data bridge resource update race condition.

    In the 'delete + create' process for EMQX resource updates, long bridge creation times could cause dashboard request timeouts. If a bridge resource update was initiated before completion of its creation, it led to an erroneous deletion from the runtime, despite being present in the config file.

    This fix addresses the race condition in bridge resource updates, ensuring the accurate identification and addition of new resources, maintaining consistency between runtime and configuration file statuses.

  • #10760 Fix Internal Error 500 that occurred sometimes when bridge statistics page was updated while a node was (re)joining the cluster.

  • #10761 Fixing the issue where the default value of SSL certificate for Dashboard Listener was not correctly interpolated, which caused HTTPS to be inaccessible when verify_peer and cacertfile were using the default configuration.

  • #10785 Ensure EMQX_LOG_DIR is set by Windows boot script.

    The environment variable EMQX_LOG_DIR was missing in v5.0.25, caused EMQX Windows package fail to boot unless set by sysadmin.

  • #10801 Avoid duplicated percent decode the topic name in API /topics/{topic} and /topics.

  • #10809 Address ** ERROR ** Mnesia post_commit hook failed: error:badarg error messages happening during node shutdown or restart. Mria pull request: https://github.com/emqx/mria/pull/142

  • #10817 Fix the error of not being able to configure auto_restart_interval as infinity

  • #10818 Fixing emqx_ctl traces command.

  • #10820 In case the cluster updated license before the new node join in. The new node will not apply the updated license. After this change, the new joined node will use the cluster's license key.

    Sometimes the new node must start with a outdated license. e.g. use emqx-operator deployed and needed to scale up after license expired. At the time the cluster's license key already updated by API/CLI, but the new node won't use it.

  • #10833 Only include enabled authenticators and authorizers in telemetry report, not all of them.

  • #10851 Obfuscated sensitive data in the bad API logging.