diff --git a/dir.yaml b/dir.yaml index d2bfa52b4..098346194 100644 --- a/dir.yaml +++ b/dir.yaml @@ -1151,6 +1151,7 @@ - changes/breaking-changes-ee-5.6 - changes/breaking-changes-ee-5.5 - changes/breaking-changes-ee-5.4 + - changes/breaking-changes-6.0.0 - title_en: Incompatible Changes between EMQX 4.4 and EMQX 5.1 title_cn: 从 EMQX 4.4 到 EMQX 5.1 的不兼容变更 title_ja: EMQX 4.4 から EMQX 5.1 への非互換変更 diff --git a/en_US/changes/all-changes-ee.md b/en_US/changes/all-changes-ee.md index 83f3b9e40..594642e33 100644 --- a/en_US/changes/all-changes-ee.md +++ b/en_US/changes/all-changes-ee.md @@ -4,6 +4,7 @@ The release notes page for EMQX Enterprise provides a comprehensive and detailed ## v6.0 +- [6.0.1](./changes-ee-v6.md#_6-0-1): 2025-11-11 - [6.0.0](./changes-ee-v6.md#_6-0-0): 2025-09-30 ## v5.10 diff --git a/en_US/changes/breaking-changes-6.0.0.md b/en_US/changes/breaking-changes-6.0.0.md new file mode 100644 index 000000000..34e230175 --- /dev/null +++ b/en_US/changes/breaking-changes-6.0.0.md @@ -0,0 +1,58 @@ +# Incompatible Changes between EMQX 5.x and EMQX 6.0 + +## Deprecated Packages + +- [#15939](https://github.com/emqx/emqx/pull/15939) Stopped releasing packages for systems that have already reached end-of-life: + - Debian 10 (Buster) + - Enterprise Linux (CentOS) 7 + - Ubuntu 18.04 + - Ubuntu 20.04 + - macOS 13 (Ventura) + +- [#16050](https://github.com/emqx/emqx/pull/16050) Stopped releasing packages for Amazon Linux 2. It will reach end-of-life on June 30, 2026. + +## Durable Sessions + +If the durable sessions feature was not enabled before, you can ignore this section. + +In EMQX 6.0, the internal representation of durable sessions and their messages has changed. +Clusters previously running on version 5.x with durable sessions enabled must be recreated from a clean state when upgrading to 6.0. + +For detailed upgrade instructions, see the [rolling upgrade documentation](../deploy/rolling-upgrades.md#emqx-enterprise-rolling-upgrade). + +- [#15496](https://github.com/emqx/emqx/pull/15496) The state of durable sessions has been migrated from Mnesia to a new database built on EMQX durable storage. + - As a result, all durable session states created before 6.0.0 will be lost during the migration. + - This change resolves potential session state corruption caused by Mnesia’s limited transaction isolation (see [#14039](https://github.com/emqx/emqx/issues/14039)). + - It also improves the performance and scalability of durable sessions through sharding and a more efficient data representation. + +## Will Message Behavior + +Authorization checks for durable sessions are now performed at the moment of client disconnection to determine whether the will message may be published. + +Previously, these checks were deferred until after the configured `Will-Delay-Interval` had expired. + +## Configuration Changes + +**Durable Sessions** + +- `durable_storage.messages.n_sites` parameter has been renamed to `durable_storage.n_sites`. This parameter has become common for all durable storage. +- `durable_storage.sessions` and `durable_storage.timers` have been added. +- [#15734](https://github.com/emqx/emqx/pull/15734) Improved the reliability and throughput of durable sessions. + +**Durable Storage** + +- `durable_storage.messages.n_sites` has been renamed to `durable_storage.n_sites`, which now applies to all durable storage types. +- Added new configuration entries for `durable_storage.sessions` and `durable_storage.timers`. + +**RocketMQ** + +- [#15635](https://github.com/emqx/emqx/pull/15635) The `parameters.strategy` field no longer accepts key templates (which previously implied the `key_dispatch` strategy). + Instead, set `parameters.strategy = key_dispatch` explicitly and specify the key template in `parameters.key`. + +**Platform Support** + +- [#15613](https://github.com/emqx/emqx/pull/15613) Discontinued package builds for Debian 10. + +## Rate Limit + +- [#15743](https://github.com/emqx/emqx/pull/15743) Listener connection rate limits (`max_conn_rate` and `max_conn_burst`) are now enforced per listener rather than per acceptor, restoring the behavior before 5.9.0. As a result, configurations from versions 5.9.0, 5.9.1, and 5.10.0 are incompatible: the specified rate values must be scaled up by the number of acceptors configured for each listener to preserve the same effective limits. diff --git a/en_US/changes/breaking-changes-6.0.md b/en_US/changes/breaking-changes-6.0.md index 34e230175..9d130b480 100644 --- a/en_US/changes/breaking-changes-6.0.md +++ b/en_US/changes/breaking-changes-6.0.md @@ -1,58 +1,7 @@ -# Incompatible Changes between EMQX 5.x and EMQX 6.0 +# Incompatible Changes in EMQX 6.0 -## Deprecated Packages +## 6.0.1 -- [#15939](https://github.com/emqx/emqx/pull/15939) Stopped releasing packages for systems that have already reached end-of-life: - - Debian 10 (Buster) - - Enterprise Linux (CentOS) 7 - - Ubuntu 18.04 - - Ubuntu 20.04 - - macOS 13 (Ventura) +- [#16061](https://github.com/emqx/emqx/pull/16061) Fixed an issue where RocketMQ actions ignored the configured payload template and sent the entire rule output instead. -- [#16050](https://github.com/emqx/emqx/pull/16050) Stopped releasing packages for Amazon Linux 2. It will reach end-of-life on June 30, 2026. - -## Durable Sessions - -If the durable sessions feature was not enabled before, you can ignore this section. - -In EMQX 6.0, the internal representation of durable sessions and their messages has changed. -Clusters previously running on version 5.x with durable sessions enabled must be recreated from a clean state when upgrading to 6.0. - -For detailed upgrade instructions, see the [rolling upgrade documentation](../deploy/rolling-upgrades.md#emqx-enterprise-rolling-upgrade). - -- [#15496](https://github.com/emqx/emqx/pull/15496) The state of durable sessions has been migrated from Mnesia to a new database built on EMQX durable storage. - - As a result, all durable session states created before 6.0.0 will be lost during the migration. - - This change resolves potential session state corruption caused by Mnesia’s limited transaction isolation (see [#14039](https://github.com/emqx/emqx/issues/14039)). - - It also improves the performance and scalability of durable sessions through sharding and a more efficient data representation. - -## Will Message Behavior - -Authorization checks for durable sessions are now performed at the moment of client disconnection to determine whether the will message may be published. - -Previously, these checks were deferred until after the configured `Will-Delay-Interval` had expired. - -## Configuration Changes - -**Durable Sessions** - -- `durable_storage.messages.n_sites` parameter has been renamed to `durable_storage.n_sites`. This parameter has become common for all durable storage. -- `durable_storage.sessions` and `durable_storage.timers` have been added. -- [#15734](https://github.com/emqx/emqx/pull/15734) Improved the reliability and throughput of durable sessions. - -**Durable Storage** - -- `durable_storage.messages.n_sites` has been renamed to `durable_storage.n_sites`, which now applies to all durable storage types. -- Added new configuration entries for `durable_storage.sessions` and `durable_storage.timers`. - -**RocketMQ** - -- [#15635](https://github.com/emqx/emqx/pull/15635) The `parameters.strategy` field no longer accepts key templates (which previously implied the `key_dispatch` strategy). - Instead, set `parameters.strategy = key_dispatch` explicitly and specify the key template in `parameters.key`. - -**Platform Support** - -- [#15613](https://github.com/emqx/emqx/pull/15613) Discontinued package builds for Debian 10. - -## Rate Limit - -- [#15743](https://github.com/emqx/emqx/pull/15743) Listener connection rate limits (`max_conn_rate` and `max_conn_burst`) are now enforced per listener rather than per acceptor, restoring the behavior before 5.9.0. As a result, configurations from versions 5.9.0, 5.9.1, and 5.10.0 are incompatible: the specified rate values must be scaled up by the number of acceptors configured for each listener to preserve the same effective limits. + If you relied on the previous (incorrect) behavior, you may need to update your payload templates to ensure messages are formatted as expected. \ No newline at end of file diff --git a/en_US/changes/changes-ee-v6.md b/en_US/changes/changes-ee-v6.md index 80814600d..816e51e9b 100644 --- a/en_US/changes/changes-ee-v6.md +++ b/en_US/changes/changes-ee-v6.md @@ -1,5 +1,139 @@ # EMQX Enterprise Version 6 +## 6.0.1 + +*Release Date: 2025-11-11* + +Make sure to check the breaking changes and known issues before upgrading to EMQX 6.0.1. + +### Enhancements + +#### Message Queue + +- [#16080](https://github.com/emqx/emqx/pull/16080) Added a configuration option to disable the Message Queues feature. Disabling Message Queues can slightly reduce the resource usage in the cluster. When Durable Sessions are also disabled, EMQX avoids maintaining Durable Storage, further reducing administrative overhead and improving performance. +- [#16096](https://github.com/emqx/emqx/pull/16096) Added support for automatic creation of message queues when clients subscribe to non-existent `$q/` topics. Now configuration options are available to enable auto-creation for both regular and last-value semantics queues. +- [#16097](https://github.com/emqx/emqx/pull/16097) Optimized message writing to regular message queues by replacing transactional appends with dirty append functions. For QoS 0 messages, asynchronous append operations are now used. These changes significantly improve the performance of message insertion into regular queues. +- [#16098](https://github.com/emqx/emqx/pull/16098) Added a maximum queue count configuration option to limit the total number of message queues in the system. +- [#16152](https://github.com/emqx/emqx/pull/16152) Introduced per-queue limits for maximum message count and total message size. Also added new metrics to monitor message append latency and help diagnose performance or queue-limiting issues. + +#### Data Integration + +- [#16121](https://github.com/emqx/emqx/pull/16121) Upgraded the GreptimeDB ingester client to [v0.2.3](https://github.com/GreptimeTeam/greptimedb-ingester-erl/releases/tag/v0.2.3), which fixes several bugs and introduces support for row-based gRPC protocol (the column-based protocol is now deprecated). + + Additionally, updated the CI image to the latest stable version of GreptimeDB. + +- [#16127](https://github.com/emqx/emqx/pull/16127) Fixed an invalid string value issue in the GreptimeDB connector, following the changes introduced in [#16121](https://github.com/emqx/emqx/pull/16121). + +#### Performance + +- [#15949](https://github.com/emqx/emqx/pull/15949) Changed the default value of the `parse_unit` option in listener configuration from `chunk` to `frame`. This change can significantly reduce CPU usage when the payload size exceeds the socket buffer (default is 4 KB). + + **Note**: With `parse_unit = frame`, if a `PUBLISH` packet exceeds the maximum allowed size, EMQX will close the connection instead of sending a `DISCONNECT` packet. + +- [#16165](https://github.com/emqx/emqx/pull/16165) Optimized the performance of the `GET /clients_v2` API. Previously, when the cluster had around 50,000 clients or more, API calls to retrieve the client list could be extremely slow or even time out. + +### Bug Fixes + +#### Core MQTT Functionalities + +- [#15884](https://github.com/emqx/emqx/pull/15884) Resolve an issue where, in rare cases, the global routing table could indefinitely retain routing information for nodes that had long left the cluster. +- [#15518](https://github.com/emqx/emqx/pull/15518) Resolved a race condition that may lead to accumulating inconsistencies in the routing table and shared subscriptions state in the cluster when a large number of shared subscribers disconnect simultaneously. + +#### Upgrade + +- [#16047](https://github.com/emqx/emqx/pull/16047) Added support to perform rolling upgrade from EMQX Enterprise base version 5.8.0 and newer to 6.0. During the upgrade, legacy configurations are automatically migrated to the new format supported in 6.0. Specifically, the deprecated `bridges` configuration root is converted into the new `connectors`, `sources`, and `actions` roots. + + However, the GCP PubSub Consumer and Kafka Consumer sources will still require manual changes. If any source configuration still includes the deprecated `topic_mapping` field, it must be removed. Then, for each entry previously defined in `topic_mapping`, a separate "Source + Rule" pair must be created manually. + + +#### Security + +- [#16156](https://github.com/emqx/emqx/pull/16156) Fixed an issue where some dependencies were missing default configurations compared to EMQX 5.10, potentially causing RSA signature verification failures. The missing defaults could lead to errors, such as the following log message: + + ``` + {sign_unsupported,[[{rsa_padding,rsa_pkcs1_padding}]]}, [{jose_jwa_unsupported,verify,5,[{file,"src/jwa/jose_jwa_unsupported.erl"},{line,55}]} + ``` + +- [#16175](https://github.com/emqx/emqx/pull/16175) Fixed an issue with periodic TLS certificate garbage collection. Previously, the garbage collection process incorrectly deleted certificate files that were actively used by configurations in managed namespaces. + +#### Access Control + +- [#16081](https://github.com/emqx/emqx/pull/16081) Fixed an issue where clients using extended authentication and memory-based sessions could crash with a `session_stepdown_request_exception` caused by a `calling_self` error. + +
Example error log + + + ``` + 2025-09-24T07:13:08.973954+08:00 [error] clientid: someclientid, msg: session_stepdown_request_exception, peername: 127.0.0.1:41782, username: admin, error: exit, reason: calling_self, stacktrace: [{gen_server,call,3,[{file,"gen_server.erl"},{line,1222}]},{emqx_cm,request_stepdown,4,[{file,"emqx_cm.erl"},{line,427}]},{emqx_cm,do_takeover_begin,2,[{file,"emqx_cm.erl"},{line,398}]},{emqx_cm,takeover_session,2,[{file,"emqx_cm.erl"},{line,384}]},{emqx_cm,takeover_session_begin,2,[{file,"emqx_cm.erl"},{line,305}]},{emqx_session_mem,open,4,[{file,"emqx_session_mem.erl"},{line,210}]},{emqx_session,open,3,[{file,"emqx_session.erl"},{line,263}]},{emqx_cm,'-open_session/4-fun-1-',4,[{file,"emqx_cm.erl"},{line,290}]},{emqx_cm_locker,trans,2,[{file,"emqx_cm_locker.erl"},{line,32}]},{emqx_channel,post_process_connect,2,[{file,"emqx_channel.erl"},{line,575}]},{emqx_connection,with_channel,3,[{file,"emqx_connection.erl"},{line,852}]},{emqx_connection,process_msg,2,[{file,"emqx_connection.erl"},{line,470}]},{emqx_connection,process_msgs,2,[{file,"emqx_connection.erl"},{line,462}]},{emqx_connection,handle_recv,3,[{file,"emqx_connection.erl"},{line,406}]},{proc_lib,wake_up,3,[{file,"proc_lib.erl"},{line,340}]}], action: {takeover,'begin'}, ... + ``` + +
+ +#### Clustering + +- [#16123](https://github.com/emqx/emqx/pull/16123) Fix a bug in the component managing Mria replication that could cause cluster joins to hang or remain incomplete in core-replicant clusters. + + During cluster changes involving adding new core nodes, those new core nodes could sometimes fail to start replication-related processes required by replicants. As a result, upgraded or newly added replicants could hang during startup. + + In Kubernetes deployments, this often caused readiness probes to fail, leading the controller to repeatedly restart the affected replicant pods. + + This issue typically affected upgrade rollouts involving the addition of new core and replicant nodes. For example, adding two cores and two replicants (running a newer EMQX version) to an existing cluster with 2 cores and 2 replicants. + +#### Rule Engine + +- [#16028](https://github.com/emqx/emqx/pull/16028) Fixed rule engine `jq` function memory leak. + + Previously if `jq` built-in function `index` is used (e.g. `.key | index("name")`), it would result in memory leak. + +#### Data Integration + +- [#16010](https://github.com/emqx/emqx/pull/16010) Fixed an issue where a Republish Fallback Action could fail with a `function_clause` error if the originating rule's SQL did not include the `metadata` field from the rule environment. + + Example error log: + + ``` + [error] tag: RESOURCE, msg: failed_to_trigger_fallback_action, reason: {error,function_clause}, fallback_kind: republish, primary_action_resource_id: <<"action:type:name:connector:type:name">>, republish_topic: <<"republish/topic">> + ``` + +- [#16046](https://github.com/emqx/emqx/pull/16046) Fixed a potential out-of-memory (OOM) crash when loading or restarting a configuration containing a Connector with several hundred Actions. + +- [#16140](https://github.com/emqx/emqx/pull/16140) Fix a Redis cluster failover issue that could cause the Connector to remain stuck in a "connecting" state. + + Previously, EMQX’s Redis cluster client only refreshed the cluster topology when regular queries (such as `GET`) failed. However, failures in periodic `PING` commands did not trigger a refresh. As a result, after a failover, the connector could continue using the outdated cluster topology if no other commands were issued, preventing recovery. + + With this fix, failed `PING` responses now trigger a cluster topology refresh, ensuring that the connector can detect failovers and recover promptly. + +#### MQTT Durable Sessions + +- [#16105](https://github.com/emqx/emqx/pull/16105) Durable storage performance optimization. In particular, this fix reduces the latency of `CONNACK` for clients using a durable session. +- [#16129](https://github.com/emqx/emqx/pull/16129) Durable storage transaction configuration can be changed in the runtime. Previously changing this configuration required a node restart. + +#### Observability + +- [#15963](https://github.com/emqx/emqx/pull/15963) Reduced excessive audit log entries generated during looped evaluations in the remote shell (`remsh`). + +- [#15967](https://github.com/emqx/emqx/pull/15967) Fixed an issue where Mnesia transaction blocking during the cleanup of large volumes of audit logs could lead to rapid memory growth. + +- [#16060](https://github.com/emqx/emqx/pull/16060) Fixed a logger formatter crash that could occur for some debug-level log messages containing deeply nested terms with non-ASCII characters. + +
Example error log + + + ``` + 2025-09-29T06:55:34.120640+00:00 debug: FORMATTER CRASH: {report,#{request => #{messages => [#{role => <<"user">>,content => <<"{\"msg\": \"hello\"}">>}],system => <<"将输入的 JSON 数据中,值为数字的 value 相加起来,并输出,只需返回输出结果。"/utf8>>,model => <<"claude-3-haiku-20240307">>,max_tokens => 100},msg => emqx_ai_completion_request}} + 2025-09-29T06:55:34.120780+00:00 [debug] formatter_crashed: emqx_logger_textfmt, config: #{time_offset => [],chars_limit => unlimited,depth => 100,single_line => true,template => ["[",level,"] ",msg,"\n"],with_mfa => false,timestamp_format => auto,payload_encode => text}, log_event: #{meta => #{line => 44,pid => <0.281254.0>,time => 1759128934120640,file => "emqx_ai_completion_anthropic.erl",gl => <0.4317.0>,mfa => {emqx_ai_completion_anthropic,call_completion,3},report_cb => fun logger:format_otp_report/1,matched => <<"t/1">>,namespace => global,clientid => <<"c_emqx">>,trigger => <<"t/1">>,rule_id => <<"r1sczoo0">>,rule_trigger_ts => [1759128934120]},msg => {report,#{request => #{messages => [#{role => <<"user">>,content => <<"{\"msg\": \"hello\"}">>}],system => <<"将输入的 JSON 数据中,值为数字的 value 相加起来,并输出,只需返回输出结果。"/utf8>>,model => <<"claude-3-haiku-20240307">>,max_tokens => 100},msg => emqx_ai_completion_request}},level => debug}, reason: {error,badarg,[{erlang,iolist_to_binary,[["[",[["messages",": ",[[91,[[35,123,[["role"," => ",[60,60,"\"user\"",62,62]],44,["content"," => ",[60,60,"\"{\\\"msg\\\": \\\"hello\\\"}\"",62,62]]],125]],93]]],", ",["system",": ","将输入的 JSON 数据中,值为数字的 value 相加起来,并输出,只需返回输出结果。"],", ",["model",": ","claude-3-haiku-20240307"],", ",["max_tokens",": ","100"]],"]"]],[{error_info,#{module => erl_erts_errors}}]},{emqx_trace_formatter,format_term,2,[{file,"emqx_trace_formatter.erl"},{line,126}]},{emqx_logger_textfmt,format_term,2,[{file,"emqx_logger_textfmt.erl"},{line,230}]},{emqx_logger_textfmt,try_encode_meta,4,[{file,"emqx_logger_textfmt.erl"},{line,206}]},{lists,foldl_1,3,[{file,"lists.erl"},{line,2151}]},{emqx_logger_textfmt,enrich_report,3,[{file,"emqx_logger_textfmt.erl"},{line,102}]},{emqx_logger_textfmt,format,2,[{file,"emqx_logger_textfmt.erl"},{line,24}]}]} + ``` + +
+ +- [#16134](https://github.com/emqx/emqx/pull/16134) Fixed a backward compatibility issue that could prevent new Log Traces from being created in some cases. + +#### Rate Limit + +- [#16160](https://github.com/emqx/emqx/pull/16160) Improved the rate limiting algorithm for individual client connections. Previously, clients could temporarily exceed their publish rate limits, particularly just after connecting or after periods of inactivity. + + This update makes the limiter behavior more predictable and consistent, ensuring rate limits are correctly enforced from the start of a connection. + ## 6.0.0 *Release Date: 2025-09-30* diff --git a/en_US/changes/eol-ee.md b/en_US/changes/eol-ee.md index 9a4bac7b0..ce55ff003 100644 --- a/en_US/changes/eol-ee.md +++ b/en_US/changes/eol-ee.md @@ -147,7 +147,7 @@ The following table outlines release dates, support types, lifecycles, and estim | **5.8.x LTS** | **2024-08-28** | **LTS** | **3 years** | **2027-08-27** | **Latest Active LTS Version** | | **5.9.x** | 2025-05-02 | Feature Release | 18 months | 2026-11-01 | Latest Feature Release | | **5.10.x** | 2025-06-09 | Feature Release | 18 months | 2026-12-08 | Next Feature Release | -| **6.0.0** | 2025-TBD | Major Release | 18 months | TBD | Next Major Release | +| **6.0.0** | 2025-09-30 | Major Release | 18 months | 2027-03-30 | Next Major Release | ## Upgrade Path Recommendations diff --git a/ja_JP/changes/breaking-changes-6.0.0.md b/ja_JP/changes/breaking-changes-6.0.0.md new file mode 100644 index 000000000..333fe91fa --- /dev/null +++ b/ja_JP/changes/breaking-changes-6.0.0.md @@ -0,0 +1,58 @@ +# EMQX 5.x と EMQX 6.0 の非互換な変更点 + +## 廃止されたパッケージ + +- [#15939](https://github.com/emqx/emqx/pull/15939) サポート終了となったシステム向けのパッケージ提供を停止しました: + - Debian 10 (Buster) + - Enterprise Linux (CentOS) 7 + - Ubuntu 18.04 + - Ubuntu 20.04 + - macOS 13 (Ventura) + +- [#16050](https://github.com/emqx/emqx/pull/16050) Amazon Linux 2 向けのパッケージ提供を停止しました。Amazon Linux 2 は 2026年6月30日にサポート終了となります。 + +## 永続セッション + +永続セッション機能を有効にしていない場合、このセクションは無視できます。 + +EMQX 6.0 では、永続セッションおよびそのメッセージの内部表現が変更されました。 +5.x で永続セッションを有効にして運用していたクラスタは、6.0 へアップグレードする際にクリーンな状態から再構築する必要があります。 + +詳細なアップグレード手順は [ローリングアップグレードのドキュメント](../deploy/rolling-upgrades.md#emqx-enterprise-rolling-upgrade) を参照してください。 + +- [#15496](https://github.com/emqx/emqx/pull/15496) 永続セッションの状態は Mnesia から EMQX 永続ストレージ上の新しいデータベースへ移行されました。 + - そのため、6.0.0 より前に作成された永続セッションの状態は移行時に失われます。 + - この変更により、Mnesia のトランザクション分離制限によるセッション状態の破損([#14039](https://github.com/emqx/emqx/issues/14039) 参照)が解消されます。 + - また、シャーディングと効率的なデータ表現により、永続セッションのパフォーマンスとスケーラビリティが向上します。 + +## Will メッセージの挙動 + +永続セッションの認可チェックは、クライアント切断時に行われ、Will メッセージの公開可否が判断されるようになりました。 + +以前は、設定された `Will-Delay-Interval` の経過後に認可チェックが行われていました。 + +## 設定変更 + +**永続セッション** + +- `durable_storage.messages.n_sites` パラメータは `durable_storage.n_sites` に名称変更され、すべての永続ストレージで共通となりました。 +- `durable_storage.sessions` および `durable_storage.timers` が追加されました。 +- [#15734](https://github.com/emqx/emqx/pull/15734) 永続セッションの信頼性とスループットが向上しました。 + +**永続ストレージ** + +- `durable_storage.messages.n_sites` は `durable_storage.n_sites` に名称変更され、すべての永続ストレージタイプに適用されます。 +- `durable_storage.sessions` および `durable_storage.timers` の新しい設定項目が追加されました。 + +**RocketMQ** + +- [#15635](https://github.com/emqx/emqx/pull/15635) `parameters.strategy` フィールドはキー・テンプレート(以前は `key_dispatch` 戦略を暗示)を受け付けなくなりました。 + 代わりに、`parameters.strategy = key_dispatch` を明示的に設定し、キー・テンプレートは `parameters.key` で指定してください。 + +**プラットフォームサポート** + +- [#15613](https://github.com/emqx/emqx/pull/15613) Debian 10 向けのパッケージビルドを終了しました。 + +## レート制限 + +- [#15743](https://github.com/emqx/emqx/pull/15743) リスナーの接続レート制限(`max_conn_rate` および `max_conn_burst`)は、アクセプタ単位ではなくリスナー単位で適用されるようになり、5.9.0 以前の挙動に戻りました。そのため、5.9.0、5.9.1、5.10.0 の設定は非互換となります:同じ制限値を維持するには、各リスナーで設定したアクセプタ数分だけレート値を増やす必要があります。 diff --git a/ja_JP/changes/breaking-changes-6.0.md b/ja_JP/changes/breaking-changes-6.0.md index 6f38a4d26..886bd4b28 100644 --- a/ja_JP/changes/breaking-changes-6.0.md +++ b/ja_JP/changes/breaking-changes-6.0.md @@ -1,51 +1,7 @@ -# EMQX 5.x と EMQX 6.0 の間の非互換の変更 +# EMQX 6.0 の非互換の変更 -## 非推奨のパッケージ +## 6.0.1 -- [#15939](https://github.com/emqx/emqx/pull/15939) ライフサイクルが終了したシステム向けのパッケージのリリースを停止します: - - Debian 10 (Buster) - - Enterprise Linux (CentOS) 7 - - Ubuntu 20.04 - - macOS 13 (Ventura) +- [#16062](https://github.com/emqx/emqx/pull/16062) Fixed an issue where RocketMQ actions ignored the configured payload template and sent the entire rule output instead. -## 永続セッション - -以前に永続セッション機能が有効でなかった場合、以下の情報は無視できます。 - -6.0 リリースでは、永続セッションとメッセージの内部表現が変更されます。 -以前にクラスターがバージョン 5.x でこの機能を有効にして実行されていた場合、クリーンな状態から再作成する必要があります。 -詳細なローリングアップグレード手順については、[ローリングアップグレードドキュメント](https://docs.emqx.com/ja/emqx/latest/deploy/rolling-upgrades.html#emqx-enterprise-rolling-upgrade) を参照してください。 - -- [#15496](https://github.com/emqx/emqx/pull/15496) 永続セッションの状態は Mnesia から EMQX の永続ストレージに基づく新しいデータベースに移動されました。 - その結果、6.0.0 リリースより前に作成された永続セッションの状態は、移動中に失われます。 - - これにより、Mnesia のトランザクション分離が不十分なために発生する可能性があったセッション状態の破損の問題([#14039](https://github.com/emqx/emqx/issues/14039) で報告)が解決されます。 - この変更により、シャーディングとより効率的なデータ表現のおかげで、永続セッションの全体的なパフォーマンスも向上します。 - - -## 遺言メッセージの動作 - -永続セッションが遺言メッセージを公開する資格があるかどうかを決定する認可チェックは、クライアントの切断時に実行されるようになりました。 -以前は、`Will-Delay-Interval` の有効期限が切れた後に実行されていました。 - -## 設定の変更 - -- `durable_sessions.heartbeat_interval` パラメータは `durable_sessions.checkpoint_interval` に名前が変更されました。 - -- `durable_sessions.idle_poll_interval` および `durable_sessions.renew_streams_interval` パラメータは、セッションが完全にイベントベースになったため削除されました。 - -- `durable_sessions.session_gc_interval` および `durable_sessions.session_gc_batch_size` パラメータは廃止されたため削除されました。 - -- `durable_storage.messages.n_sites` パラメータは `durable_storage.n_sites` に名前が変更されました。このパラメータはすべての永続ストレージで共通になりました。 - -- 新しい永続ストレージの設定を追加しました:`durable_storage.sessions` および `durable_storage.timers`。 -- [#15613](https://github.com/emqx/emqx/pull/15613) Debian 10 向けのパッケージのリリースを停止しました。 - -- [#15635](https://github.com/emqx/emqx/pull/15635) RocketMQ アクションの `parameters.strategy` フィールドは、キーテンプレート(暗黙的に `key_dispatch` 戦略を選択)を受け付けなくなりました。 - 代わりに、ユーザーは明示的に `parameters.strategy = key_dispatch` を設定し、`parameters.key` でキーテンプレートを提供する必要があります。 - -- [#15734](https://github.com/emqx/emqx/pull/15734) 永続セッションの信頼性とスループットを向上させました。 - -## レート制限 - -- [#15743](https://github.com/emqx/emqx/pull/15743) リスナー接続のレート制限(`max_conn_rate` および `max_conn_burst`)は、アクセプターごとではなくリスナーごとに適用されるようになり、5.9.0 より前の動作に戻りました。その結果、バージョン 5.9.0、5.9.1、および 5.10.0 の設定とは互換性がありません。指定されたレートは、それぞれのリスナーに設定されたアクセプターの数でスケールアップする必要があります。 + If you relied on the previous (incorrect) behavior, you may need to update your payload templates to ensure messages are formatted as expected. \ No newline at end of file diff --git a/zh_CN/changes/all-changes-ee.md b/zh_CN/changes/all-changes-ee.md index fe2084f91..8236eaf39 100644 --- a/zh_CN/changes/all-changes-ee.md +++ b/zh_CN/changes/all-changes-ee.md @@ -4,7 +4,8 @@ EMQX 企业版版本发布页面全面详细地记录了 EMQX 企业版每个版 ## v6.0 -- [6.0.0](./changes-ee-v6.md#_6-0-0): 2025-09-29 +- [6.0.1](./changes-ee-v6.md#_6-0-1): 2025-11-11 +- [6.0.0](./changes-ee-v6.md#_6-0-0): 2025-09-30 ## v5.10 diff --git a/zh_CN/changes/breaking-changes-6.0.0.md b/zh_CN/changes/breaking-changes-6.0.0.md new file mode 100644 index 000000000..647a80349 --- /dev/null +++ b/zh_CN/changes/breaking-changes-6.0.0.md @@ -0,0 +1,57 @@ +# EMQX 5.x 与 EMQX 6.0 之间的不兼容变更 + +## 停止支持的安装包 + +- [#15939](https://github.com/emqx/emqx/pull/15939) 停止为已达生命周期终止(EOL)的操作系统发布安装包: + - Debian 10 (Buster) + - 企业版 Linux (CentOS) 7 + - Ubuntu 18.04 + - Ubuntu 20.04 + - macOS 13 (Ventura) + +- [#16050](https://github.com/emqx/emqx/pull/16050) 停止为 Amazon Linux 2 发布安装包。该操作系统将于 2026 年 6 月 30 日达到生命周期终止。 + +## MQTT 会话持久化 + +如果之前未启用 MQTT 会话持久化功能,可以忽略本节内容。 + +在 EMQX 6.0 中,会话持久化及其消息的内部表示方式已发生变更。对于在 5.x 版本中启用了会话持久化的集群,在升级到 6.0 时必须重新创建一个不带历史数据的集群。 + +有关详细的升级说明,请参见[滚动升级文档](../deploy/rolling-upgrades.md#emqx-enterprise-rolling-upgrade)。 + +- [#15496](https://github.com/emqx/emqx/pull/15496) 会话持久化的状态已从 Mnesia 迁移到基于 EMQX 持久存储的新数据库。 + - 因此,6.0.0 之前创建的所有会话持久化状态在迁移过程中都会丢失。 + - 此改动解决了由于 Mnesia 事务隔离性不足而可能导致的会话状态损坏问题(见 [#14039](https://github.com/emqx/emqx/issues/14039))。 + - 同时通过分片和更高效的数据表示方式提升了会话持久化的性能与可扩展性。 + + +## 遗嘱消息行为 + +决定持久会话是否有资格发布遗嘱消息的授权检查现在在客户端断开连接时运行。 +以前,它们在 `Will-Delay-Interval` 过期后运行。 + +## 配置变更 + +**会话持久化** + +- `durable_storage.messages.n_sites` 参数已重命名为 `durable_storage.n_sites`。该参数现已适用于所有持久化存储。 +- 新增了 `durable_storage.sessions` 和 `durable_storage.timers` 配置项。 +- [#15734](https://github.com/emqx/emqx/pull/15734) 提升了会话持久化的可靠性和吞吐量。 + +**持久存储** + +- `durable_storage.messages.n_sites` 已更名为 `durable_storage.n_sites`,该参数现适用于所有持久存储类型。 +- 新增了 `durable_storage.sessions` 和 `durable_storage.timers` 配置项。 + +**RocketMQ** + +- [#15635](https://github.com/emqx/emqx/pull/15635) `parameters.strategy` 字段不再接受键模板(此前会隐式选择 `key_dispatch` 策略)。 + 现在必须显式设置 `parameters.strategy = key_dispatch`,并在 `parameters.key` 中指定键模板。 + +**平台支持** + +- [#15613](https://github.com/emqx/emqx/pull/15613) 停止提供 Debian 10 的安装包构建。 + +## 速率限制 + +- [#15743](https://github.com/emqx/emqx/pull/15743) 监听器连接速率限制(`max_conn_rate` 和 `max_conn_burst`)现在按监听器而不是按 accepter(连接接收进程)强制执行,恢复了 5.9.0 之前的行为。因此,来自 5.9.0、5.9.1 和 5.10.0 版本的配置不兼容:指定的速率必须按相应监听器配置的 acceptor 数量进行放大。 diff --git a/zh_CN/changes/breaking-changes-6.0.md b/zh_CN/changes/breaking-changes-6.0.md index 194801919..75df6271c 100644 --- a/zh_CN/changes/breaking-changes-6.0.md +++ b/zh_CN/changes/breaking-changes-6.0.md @@ -1,57 +1,7 @@ -# EMQX 5.x 与 EMQX 6.0 之间的不兼容变更 +# EMQX 6.0 中的不兼容变更 -## 停止支持的安装包 +## 6.0.1 -- [#15939](https://github.com/emqx/emqx/pull/15939) 停止为已达生命周期终止(EOL)的操作系统发布安装包: - - Debian 10 (Buster) - - 企业版 Linux (CentOS) 7 - - Ubuntu 18.04 - - Ubuntu 20.04 - - macOS 13 (Ventura) +- [#16061](https://github.com/emqx/emqx/pull/16061) 修复了一个问题:RocketMQ 动作忽略了配置的 payload 模板,错误地发送了整个规则的输出结果。 -- [#16050](https://github.com/emqx/emqx/pull/16050) 停止为 Amazon Linux 2 发布安装包。该操作系统将于 2026 年 6 月 30 日达到生命周期终止。 - -## MQTT 会话持久化 - -如果之前未启用 MQTT 会话持久化功能,可以忽略本节内容。 - -在 EMQX 6.0 中,会话持久化及其消息的内部表示方式已发生变更。对于在 5.x 版本中启用了会话持久化的集群,在升级到 6.0 时必须重新创建一个不带历史数据的集群。 - -有关详细的升级说明,请参见[滚动升级文档](../deploy/rolling-upgrades.md#emqx-enterprise-rolling-upgrade)。 - -- [#15496](https://github.com/emqx/emqx/pull/15496) 会话持久化的状态已从 Mnesia 迁移到基于 EMQX 持久存储的新数据库。 - - 因此,6.0.0 之前创建的所有会话持久化状态在迁移过程中都会丢失。 - - 此改动解决了由于 Mnesia 事务隔离性不足而可能导致的会话状态损坏问题(见 [#14039](https://github.com/emqx/emqx/issues/14039))。 - - 同时通过分片和更高效的数据表示方式提升了会话持久化的性能与可扩展性。 - - -## 遗嘱消息行为 - -决定持久会话是否有资格发布遗嘱消息的授权检查现在在客户端断开连接时运行。 -以前,它们在 `Will-Delay-Interval` 过期后运行。 - -## 配置变更 - -**会话持久化** - -- `durable_storage.messages.n_sites` 参数已重命名为 `durable_storage.n_sites`。该参数现已适用于所有持久化存储。 -- 新增了 `durable_storage.sessions` 和 `durable_storage.timers` 配置项。 -- [#15734](https://github.com/emqx/emqx/pull/15734) 提升了会话持久化的可靠性和吞吐量。 - -**持久存储** - -- `durable_storage.messages.n_sites` 已更名为 `durable_storage.n_sites`,该参数现适用于所有持久存储类型。 -- 新增了 `durable_storage.sessions` 和 `durable_storage.timers` 配置项。 - -**RocketMQ** - -- [#15635](https://github.com/emqx/emqx/pull/15635) `parameters.strategy` 字段不再接受键模板(此前会隐式选择 `key_dispatch` 策略)。 - 现在必须显式设置 `parameters.strategy = key_dispatch`,并在 `parameters.key` 中指定键模板。 - -**平台支持** - -- [#15613](https://github.com/emqx/emqx/pull/15613) 停止提供 Debian 10 的安装包构建。 - -## 速率限制 - -- [#15743](https://github.com/emqx/emqx/pull/15743) 监听器连接速率限制(`max_conn_rate` 和 `max_conn_burst`)现在按监听器而不是按接收器强制执行,恢复了 5.9.0 之前的行为。因此,来自 5.9.0、5.9.1 和 5.10.0 版本的配置不兼容:指定的速率必须按相应监听器配置的接收器数量进行放大。 + 如果您依赖了此前(错误)行为,可能需要更新 payload 模板,以确保消息格式符合预期。 \ No newline at end of file diff --git a/zh_CN/changes/changes-ee-v6.md b/zh_CN/changes/changes-ee-v6.md index 652e65358..b545b80d8 100644 --- a/zh_CN/changes/changes-ee-v6.md +++ b/zh_CN/changes/changes-ee-v6.md @@ -1,5 +1,131 @@ # EMQX 企业版 v6 版本 +## 6.0.1 + +*发布日期: 2025-11-11* + +在升级到 EMQX 6.0.1 之前,请务必查阅不兼容变更和已知问题。 + +### 增强 + +#### 消息队列 + +- [#16080](https://github.com/emqx/emqx/pull/16080) 新增用于禁用消息队列功能的配置选项。禁用消息队列可以略微降低集群的资源使用。当持久会话也被禁用时,EMQX 将避免维护持久存储,从而进一步降低管理开销并提升性能。 +- [#16096](https://github.com/emqx/emqx/pull/16096) 新增支持:当客户端订阅不存在的 `$q/` 主题时自动创建消息队列。现在可以通过配置项分别为常规队列和最后值语义队列启用自动创建功能。 +- [#16097](https://github.com/emqx/emqx/pull/16097) 优化了写入常规消息队列的性能。通过将事务追加操作替换为非事务(dirty)追加函数。对于 QoS 0 消息,现在使用异步追加操作。这些更改显著提升了写入常规队列的消息插入性能。 +- [#16098](https://github.com/emqx/emqx/pull/16098) 新增配置项,用于限制系统中消息队列的总数量。 +- [#16152](https://github.com/emqx/emqx/pull/16152) 引入每个队列的最大消息数量和消息总大小限制。同时新增了用于监控消息追加延迟的指标,有助于诊断性能问题或队列限制相关问题。 + +#### 数据集成 + +- [#16121](https://github.com/emqx/emqx/pull/16121) 将 GreptimeDB ingester 客户端升级至 [v0.2.3](https://github.com/GreptimeTeam/greptimedb-ingester-erl/releases/tag/v0.2.3)。此版本修复了若干问题,并引入了对基于行的 gRPC 协议的支持(原来的基于列的协议已被弃用)。此外,还将 CI 镜像更新为最新稳定版本的 GreptimeDB。 +- [#16127](https://github.com/emqx/emqx/pull/16127) 修复了在 [#16121](https://github.com/emqx/emqx/pull/16121) 引入更改后,GreptimeDB 连接器中出现的无效字符串值问题。 + +#### 性能 + +- [#15949](https://github.com/emqx/emqx/pull/15949) 将监听器配置中的 `parse_unit` 选项默认值从 `chunk` 修改为 `frame`。当负载大小超过 socket 缓冲区(默认 4 KB)时,此更改可以显著降低 CPU 使用率。 + + **注意:** 当 `parse_unit = frame` 时,如果 `PUBLISH` 报文超过允许的最大大小,EMQX 将关闭连接,而不是发送 `DISCONNECT` 报文。 + +- [#16165](https://github.com/emqx/emqx/pull/16165) 优化了 `GET /clients_v2` API 的性能。此前,在集群中连接客户端数量达到约 50,000 或以上时,调用该 API 获取客户端列表的响应速度可能非常慢,甚至会超时。 + +### 修复 + +#### 核心 MQTT 功能 + +- [#15884](https://github.com/emqx/emqx/pull/15884) 修复了一个问题:在极少数情况下,全局路由表可能会无限期保留已长时间离开集群的节点的路由信息。 +- [#15518](https://github.com/emqx/emqx/pull/15518) 修复了一个竞争条件,该问题在大量共享订阅者同时断开连接时,可能导致集群中路由表和共享订阅状态持续出现不一致。 + +#### 升级 + +- [#16047](https://github.com/emqx/emqx/pull/16047) 新增支持从 EMQX 企业版长期维护版本 5.8.0 及以上版本滚动升级至 6.0。在升级过程中,旧版本的配置会自动迁移为 6.0 所支持的新格式。具体来说,已废弃的 `bridges` 配置根节点将转换为新的 `connectors`、`sources` 和 `actions` 配置结构。 + + 不过,对于 GCP PubSub Consumer 和 Kafka Consumer 的 Source,仍然需要进行手动修改。如果配置中仍包含已废弃的 `topic_mapping` 字段,该字段必须被移除。随后,针对原先 `topic_mapping` 中的每一项,需手动创建一个对应的 “Source + Rule” 配对。 + +#### 安全 + +- [#16156](https://github.com/emqx/emqx/pull/16156) 修复了一个问题:与 EMQX 5.10 相比,某些依赖缺失了默认配置,可能导致 RSA 签名验证失败。缺失的默认配置可能导致错误,例如出现以下日志消息: + + ``` + {sign_unsupported,[[{rsa_padding,rsa_pkcs1_padding}]]}, [{jose_jwa_unsupported,verify,5,[{file,"src/jwa/jose_jwa_unsupported.erl"},{line,55}]} + ``` + +- [#16175](https://github.com/emqx/emqx/pull/16175) 修复了周期性 TLS 证书垃圾回收的问题。此前,垃圾回收的执行过程错误地删除了在托管命名空间配置中仍在使用的证书文件。 + +#### 访问控制 + +- [#16081](https://github.com/emqx/emqx/pull/16081) 修复了一个问题:使用扩展认证和内存会话的客户端可能因 `calling_self` 错误导致触发 `session_stepdown_request_exception` 异常并发生崩溃。 + +
错误日志示例 + + + ``` + 2025-09-24T07:13:08.973954+08:00 [error] clientid: someclientid, msg: session_stepdown_request_exception, peername: 127.0.0.1:41782, username: admin, error: exit, reason: calling_self, stacktrace: [{gen_server,call,3,[{file,"gen_server.erl"},{line,1222}]},{emqx_cm,request_stepdown,4,[{file,"emqx_cm.erl"},{line,427}]},{emqx_cm,do_takeover_begin,2,[{file,"emqx_cm.erl"},{line,398}]},{emqx_cm,takeover_session,2,[{file,"emqx_cm.erl"},{line,384}]},{emqx_cm,takeover_session_begin,2,[{file,"emqx_cm.erl"},{line,305}]},{emqx_session_mem,open,4,[{file,"emqx_session_mem.erl"},{line,210}]},{emqx_session,open,3,[{file,"emqx_session.erl"},{line,263}]},{emqx_cm,'-open_session/4-fun-1-',4,[{file,"emqx_cm.erl"},{line,290}]},{emqx_cm_locker,trans,2,[{file,"emqx_cm_locker.erl"},{line,32}]},{emqx_channel,post_process_connect,2,[{file,"emqx_channel.erl"},{line,575}]},{emqx_connection,with_channel,3,[{file,"emqx_connection.erl"},{line,852}]},{emqx_connection,process_msg,2,[{file,"emqx_connection.erl"},{line,470}]},{emqx_connection,process_msgs,2,[{file,"emqx_connection.erl"},{line,462}]},{emqx_connection,handle_recv,3,[{file,"emqx_connection.erl"},{line,406}]},{proc_lib,wake_up,3,[{file,"proc_lib.erl"},{line,340}]}], action: {takeover,'begin'}, ... + ``` + +
+ +#### 集群 + +- [#16123](https://github.com/emqx/emqx/pull/16123) 修复了管理 Mria 复制的组件中的一个问题,该问题可能导致在核心-副本(core-replicant)集群中集群加入过程卡住或未完成。 + + 在涉及新增核心节点的集群变更过程中,这些新加入的核心节点有时无法正常启动副本节点所依赖的复制相关进程。结果,升级后的副本节点或新加入的副本节点在启动时可能会出现卡顿。 + + 在 Kubernetes 部署中,该问题常导致就绪探针(readiness probe)失败,从而使控制器不断重启受影响的副本节点 Pod。 + + 此问题通常会影响包含新增核心节点和副本节点的升级部署。例如,在一个已有 2 个核心节点和 2 个副本节点的集群中,新增 2 个运行更新版本 EMQX 的核心节点和 2 个副本节点时可能会遇到该问题。 + +#### 规则引擎 + +- [#16028](https://github.com/emqx/emqx/pull/16028) 修复了规则引擎中 `jq` 函数的内存泄漏问题。 此前,如果使用内置的 `jq` 函数 `index`(例如 `.key | index("name")`),会导致内存泄漏。 + +#### 数据集成 + +- [#16010](https://github.com/emqx/emqx/pull/16010) 修复了一个问题:如果原始规则的 SQL 未包含规则环境中的 `metadata` 字段,规则的备选动作可能会因 `function_clause` 错误而执行失败。 + + 错误日志示例: + + ``` + [error] tag: RESOURCE, msg: failed_to_trigger_fallback_action, reason: {error,function_clause}, fallback_kind: republish, primary_action_resource_id: <<"action:type:name:connector:type:name">>, republish_topic: <<"republish/topic">> + ``` + +- [#16046](https://github.com/emqx/emqx/pull/16046) 修复了一个潜在的内存溢出(OOM)崩溃问题:当加载或重启包含数百个动作的连接器配置时,可能导致崩溃。 + +- [#16140](https://github.com/emqx/emqx/pull/16140) 修复了一个 Redis 集群故障转移(failover)相关的问题,该问题可能导致连接器长时间停留在 “connecting” 状态。 + + 此前,EMQX 的 Redis 集群客户端仅在常规查询(如 `GET`)失败时才会刷新集群拓扑结构。然而,周期性发送的 `PING` 命令即使失败,也不会触发刷新操作。因此,在发生故障转移后,如果没有其他命令被发送,连接器可能会继续使用过时的拓扑信息,导致无法恢复连接。 + + 此次修复后,`PING` 命令失败也会触发集群拓扑刷新,确保连接器能够及时检测到故障转移并恢复正常工作。 + +#### MQTT 会话持久化 + +- [#16105](https://github.com/emqx/emqx/pull/16105) 此修复优化了持久存储性能,尤其是减少了使用持久会话的客户端的 `CONNACK` 延迟。 +- [#16129](https://github.com/emqx/emqx/pull/16129) 持久存储事务配置现在可以在运行时更改。以前,修改此配置需要重启节点。 + +#### 可观测性 + +- [#15963](https://github.com/emqx/emqx/pull/15963) 减少了在远程 shell(`remsh`)中进行循环评估时产生的过多审计日志。 + +- [#15967](https://github.com/emqx/emqx/pull/15967) 修复了一个问题:在清理大量审计日志时,Mnesia 事务阻塞可能导致内存迅速增长。 + +- [#16060](https://github.com/emqx/emqx/pull/16060) 修复了一个日志格式化器崩溃的问题,该问题可能发生在某些包含深度嵌套的非 ASCII 字符的调试级别日志消息中。 + +
错误日志示例 + + + ``` + 2025-09-29T06:55:34.120640+00:00 debug: FORMATTER CRASH: {report,#{request => #{messages => [#{role => <<"user">>,content => <<"{\"msg\": \"hello\"}">>}],system => <<"将输入的 JSON 数据中,值为数字的 value 相加起来,并输出,只需返回输出结果。"/utf8>>,model => <<"claude-3-haiku-20240307">>,max_tokens => 100},msg => emqx_ai_completion_request}} + 2025-09-29T06:55:34.120780+00:00 [debug] formatter_crashed: emqx_logger_textfmt, config: #{time_offset => [],chars_limit => unlimited,depth => 100,single_line => true,template => ["[",level,"] ",msg,"\n"],with_mfa => false,timestamp_format => auto,payload_encode => text}, log_event: #{meta => #{line => 44,pid => <0.281254.0>,time => 1759128934120640,file => "emqx_ai_completion_anthropic.erl",gl => <0.4317.0>,mfa => {emqx_ai_completion_anthropic,call_completion,3},report_cb => fun logger:format_otp_report/1,matched => <<"t/1">>,namespace => global,clientid => <<"c_emqx">>,trigger => <<"t/1">>,rule_id => <<"r1sczoo0">>,rule_trigger_ts => [1759128934120]},msg => {report,#{request => #{messages => [#{role => <<"user">>,content => <<"{\"msg\": \"hello\"}">>}],system => <<"将输入的 JSON 数据中,值为数字的 value 相加起来,并输出,只需返回输出结果。"/utf8>>,model => <<"claude-3-haiku-20240307">>,max_tokens => 100},msg => emqx_ai_completion_request}},level => debug}, reason: {error,badarg,[{erlang,iolist_to_binary,[["[",[["messages",": ",[[91,[[35,123,[["role"," => ",[60,60,"\"user\"",62,62]],44,["content"," => ",[60,60,"\"{\\\"msg\\\": \\\"hello\\\"}\"",62,62]]],125]],93]]],", ",["system",": ","将输入的 JSON 数据中,值为数字的 value 相加起来,并输出,只需返回输出结果。"],", ",["model",": ","claude-3-haiku-20240307"],", ",["max_tokens",": ","100"]],"]"]],[{error_info,#{module => erl_erts_errors}}]},{emqx_trace_formatter,format_term,2,[{file,"emqx_trace_formatter.erl"},{line,126}]},{emqx_logger_textfmt,format_term,2,[{file,"emqx_logger_textfmt.erl"},{line,230}]},{emqx_logger_textfmt,try_encode_meta,4,[{file,"emqx_logger_textfmt.erl"},{line,206}]},{lists,foldl_1,3,[{file,"lists.erl"},{line,2151}]},{emqx_logger_textfmt,enrich_report,3,[{file,"emqx_logger_textfmt.erl"},{line,102}]},{emqx_logger_textfmt,format,2,[{file,"emqx_logger_textfmt.erl"},{line,24}]}]} + ``` + +
+ +- [#16134](https://github.com/emqx/emqx/pull/16134) 修复了一个向后兼容性问题,该问题在某些情况下可能导致无法创建新的日志追踪。 + +#### 速率限制 + +- [#16160](https://github.com/emqx/emqx/pull/16160) 改进了针对单个客户端连接的速率限制算法。此前,客户端在刚连接后或经过一段时间不活动后,可能会短暂地超出其发布速率限制。此次更新使限速行为更加可预测且一致,确保从连接建立开始就能正确执行速率限制。 + ## 6.0.0 *发布日期: 2025-09-30* diff --git a/zh_CN/changes/eol-ee.md b/zh_CN/changes/eol-ee.md index 7b7d262d5..b4322a05a 100644 --- a/zh_CN/changes/eol-ee.md +++ b/zh_CN/changes/eol-ee.md @@ -152,7 +152,7 @@ EMQX 根据版本类型及其生命周期阶段,提供不同的维护策略: | 5.8.x | 2024-08-28 | 长期支持版本 | 3 年 | 2027-08-27 | 最新长期支持版本 | | 5.9.x | 2025-05-02 | 功能版本 | 18 个月 | 2026-11-01 | 当前最新功能版本 | | 5.10.x | 2025-06-09 | 功能版本 | 18 个月 | 2026-12-08 | 下一个功能版本 | -| 6.0.0 | 2025-TBD | 主版本 | 18 个月(预计) | TBD | 下一主版本 | +| 6.0.0 | 2025-09-30 | 主版本 | 18 个月(预计) | 2027-03-30 | 下一主版本 | ## 升级路径建议