Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(container): update image public.ecr.aws/emqx/emqx to v5.7.1 #368

Merged
merged 1 commit into from
Jul 28, 2024

Conversation

bot-kanga[bot]
Copy link
Contributor

@bot-kanga bot-kanga bot commented May 27, 2024

This PR contains the following updates:

Package Update Change
public.ecr.aws/emqx/emqx (source) minor 5.6.1 -> 5.7.1

Release Notes

emqx/emqx (public.ecr.aws/emqx/emqx)

v5.7.1: EMQX v5.7.1

Compare Source

Enhancements
  • #​12983 Add new rule engine event $events/client_check_authn_complete for authentication completion event.

  • #​13180 Improved client message handling performance when EMQX is running on Erlang/OTP 26 and increased message throughput by 10% in fan-in mode.

  • #​13191 Upgraded EMQX Docker images to run on Erlang/OTP 26.

    EMQX had been running on Erlang/OTP 26 since v5.5 except for docker images which were on Erlang/OTP 25. Now all releases are on Erlang/OTP 26.

  • #​13242 Significantly increased the startup speed of EMQX dashboard listener.

Bug Fixes
  • #​13156 Resolved an issue where the Dashboard Monitoring pages would crash following the update to EMQX v5.7.0.

  • #​13164 Fixed HTTP authorization request body encoding.

    Before this fix, the HTTP authorization request body encoding format was taken from the accept header. The fix is to respect the content-type header instead. Also added access templating variable for v4 compatibility. The access code of SUBSCRIBE action is 1 and PUBLISH action is 2.

  • #​13238 Improved the logged error messages when an HTTP authorization request with an unsupported content-type header is returned.

  • #​13258 Fix an issue where the MQTT-SN gateway would not restart correctly due to incorrect startup order of gateway dependencies.

  • #​13273 Fixed and improved handling of URIs in several configurations. The fix includes the following improvement details:

    • Authentication and authorization configurations: Corrected a previous error where valid pathless URIs such as https://example.com?q=x were mistakenly rejected. These URIs are now properly recognized as valid.
    • Connector configurations: Enhanced checks to ensure that URIs with potentially problematic components, such as user info or fragment parts, are no longer erroneously accepted.
  • #​13276 Fixed an issue in the durable message storage mechanism where parts of the internal storage state were not correctly persisted during the setup of new storage generations. The concept of "generation" is used internally and is crucial for managing message expiration and cleanup. This could have manifested as messages being lost after a restart of EMQX.

  • #​13291 Fixed an issue where durable storage sites that were down being reported as up.

  • #​13290 Fixed an issue where the command $ bin/emqx ctl rules show rule_0hyd would produce no output when used to display rules with a data integration action attached.

  • #​13293 Improved the restoration process from data backups by automating the re-indexing of imported retained messages. Previously, re-indexing required manual intervention using the emqx ctl retainer reindex start CLI command after importing a data backup file.

    This fix also extended the functionality to allow exporting retained messages to a backup file when the retainer.backend.storage_type is configured as ram. Previously, only setups with disc as the storage type supported exporting retained messages.

  • #​13140 Fixed an issue that caused text traces for the republish action to crash and not display correctly.

  • #​13148 Fixed an issue where a 500 HTTP status code could be returned by /connectors/:connector-id/start when there is a timeout waiting for the resource to be connected.

  • #​13181 EMQX now forcefully shut down the connector process when attempting to stop a connector, if such operation times out. This fix also improved the clarity of error messages when disabling an action or source fails due to an unresponsive underlying connector.

  • #​13216 Respect clientid_prefix config for MQTT bridges. Since EMQX v5.4.1, the MQTT client IDs are restricted to a maximum of 23 bytes. Previously, the system factored the clientid_prefix into the hash of the original, longer client ID, affecting the final shortened ID. The fix includes the following change details:

    • Without Prefix: The behavior remains unchanged. EMQX hashes the long client IDs (exceeding 23 bytes) to fit within the 23-byte limit.
    • With Prefix:
      • Prefix ≤ 19 bytes: The prefix is retained, and the remaining portion of the client ID is hashed into a 4-byte space, ensuring the total length does not exceed 23 bytes.
      • Prefix ≥ 20 bytes: EMQX will not attempt to shorten the client ID, fully preserving the configured prefix regardless of length.

v5.7.0: EMQX v5.7.0

Compare Source

Enhancements
Security
  • #​12947 For JWT authentication, support new disconnect_after_expire option. When enabled, the client will be disconnected after the JWT token expires.

Note: This is a breaking change. This option is enabled by default, so the default behavior is changed. Previously, the clients with actual JWTs could connect to the broker and stay connected even after the JWT token expired. Now, the client will be disconnected after the JWT token expires. To preserve the previous behavior, set disconnect_after_expire to false.

Data Processing and Integration
  • #​12671 An unescape function has been added to the rule engine SQL language to handle the expansion of escape sequences in strings. This addition has been done because string literals in the SQL language don't support any escape codes (e.g., \n and \t). This enhancement allows for more flexible string manipulation within SQL expressions.
Extensibility
  • #​12872 Implemented Client Attributes feature. It allows setting additional properties for each client using key-value pairs. Property values can be generated from MQTT client connection information (such as username, client ID, TLS certificate) or set from data accompanying successful authentication returns. Properties can be used in EMQX for authentication, authorization, data integration, and MQTT extension functions. Compared to using static properties like client ID directly, client properties offer greater flexibility in various business scenarios, simplifying the development process and enhancing adaptability and efficiency in development work.
    Initialization of client_attrs
    The client_attrs fields can be initially populated from one of the following clientinfo fields:

    • cn: The common name from the TLS client's certificate.
    • dn: The distinguished name from the TLS client's certificate, that is, the certificate "Subject".
    • clientid: The MQTT client ID provided by the client.
    • username: The username provided by the client.
    • user_property: Extract a property value from 'User-Property' of the MQTT CONNECT packet.

    Extension through Authentication Responses
    Additional attributes may be merged into client_attrs from authentication responses. Supported
    authentication backends include:

    • HTTP: Attributes can be included in the JSON object of the HTTP response body through a
      client_attrs field.
    • JWT: Attributes can be included via a client_attrs claim within the JWT.

    Usage in Authentication and Authorization
    If client_attrs is initialized before authentication, it can be used in external authentication
    requests. For instance, ${client_attrs.property1} can be used within request templates
    directed at an HTTP server for authenticity validation.

    • The client_attrs can be utilized in authorization configurations or request templates, enhancing
      flexibility and control. Examples include: In acl.conf, use {allow, all, all, ["${client_attrs.namespace}/#"]} to apply permissions based on the namespace attribute.
    • In other authorization backends, ${client_attrs.namespace} can be used within request templates to dynamically include client attributes.
  • #​12910 Added plugin configuration management and schema validation. For EMQX enterprise edition, one can also annotate the schema with metadata to facilitate UI rendering in the Dashboard. See more details in the plugin template and plugin documentation.

Operations and Management
  • #​12923 Provided more specific error when importing wrong format into builtin authenticate database.

  • #​12940 Added ignore_readonly argument to PUT /configs API.
    Before this change, EMQX would return 400 (BAD_REQUEST) if the raw config included read-only root keys (cluster, rpc, and node).
    After this enhancement it can be called as PUT /configs?ignore_readonly=true, EMQX will in this case ignore readonly root config keys, and apply the rest. For observability purposes, an info level message is logged if any readonly keys are dropped.
    Also fixed an exception when config has bad HOCON syntax (returns 500). Now bad syntax will cause the API to return 400 (BAD_REQUEST).

  • #​12957 Started building packages for macOS 14 (Apple Silicon) and Ubuntu 24.04 Noble Numbat (LTS).

Bug Fixes
Security
  • #​12887 Fixed MQTT enhanced auth with sasl scram.

  • #​12962 TLS clients can now verify server hostname against wildcard certificate. For example, if a certificate is issued for host *.example.com, TLS clients is able to verify server hostnames like srv1.example.com.

MQTT
  • #​12996 Fixed process leak in emqx_retainer application. Previously, client disconnection while receiving retained messages could cause a process leak.
Data Processing and Integration
  • #​12653 The rule engine function bin2hexstr now supports bitstring inputs with a bit size that is not divisible by 8. Such bitstrings can be returned by the rule engine function subbits.

  • #​12657 The rule engine SQL-based language previously did not allow putting any expressions as array elements in array literals (only constants and variable references were allowed). This has now been fixed so that one can use any expressions as array elements.
    The following is now permitted, for example:

    select
    [21 + 21, abs(-abs(-2)), [1 + 1], 4] as my_array
    from "t/#"
  • #​12932 Previously, if a HTTP action request received a 503 (Service Unavailable) status, it was marked as a failure and the request was not retried. This has now been fixed so that the request is retried a configurable number of times.

  • #​12948 Fixed an issue where sensitive HTTP header values like Authorization would be substituted by ****** after updating a connector.

  • #​13118 Fix a performance issue in the rule engine template rendering.

Observability
  • #​12765 Make sure stats subscribers.count subscribers.max contains shared-subscribers. It only contains non-shared subscribers previously.
Operations and Management
  • #​12812 Made resource health checks non-blocking operations. This means that operations such as updating or removing a resource won't be blocked by a lengthy running health check.

  • #​12830 Made channel (action/source) health checks non-blocking operations. This means that operations such as updating or removing an action/source data integration won't be blocked by a lengthy running health check.

  • #​12993 Fixed listener config update API when handling an unknown zone.
    Before this fix, when a listener config is updated with an unknown zone, for example {"zone": "unknown"}, the change would be accepted, causing all clients to crash whens connected.
    After this fix, updating the listener with an unknown zone name will get a "Bad request" response.

  • #​13012 The MQTT listerners config option access_rules has been improved in the following ways:

    • The listener no longer crash with an incomprehensible error message if a non-valid access rule is configured. Instead a configuration error is generated.
    • One can now add several rules in a single string by separating them by comma (for example, "allow 10.0.1.0/24, deny all").
  • #​13041 Improved HTTP authentication error log message. If HTTP content-type header is missing for POST method, it now emits a meaningful error message instead of a less readable exception with stack trace.

  • #​13077 This fix makes EMQX only read action configurations from the global configuration when the connector starts or restarts, and instead stores the latest configurations for the actions in the connector. Previously, updates to action configurations would sometimes not take effect without disabling and enabling the action. This means that an action could sometimes run with the old (previous) configuration even though it would look like the action configuration has been updated successfully.

  • #​13090 Attempting to start an action or source whose connector is disabled will no longer attempt to start the connector itself.

Gateways
  • #​12909 Fixed UDP listener process handling on errors or closure, The fix ensures the UDP listener is cleanly stopped and restarted as needed if these error conditions occur.

  • #​13001 Fixed an issue where the syskeeper forwarder would never reconnect when the connection was lost.

  • #​13010 Fixed the issue where the JT/T 808 gateway could not correctly reply to the REGISTER_ACK message when requesting authentication from the registration service failed.

Breaking Changes
  • #​12947 For JWT authentication, a new boolean option disconnect_after_expire has been added with default value set to true. When enabled, the client will be disconnected after the JWT token expires.

    Previously, the clients with actual JWTs could connect to the broker and stay connected even after the JWT token expired. Now, the client will be disconnected after the JWT token expires. To preserve the previous behavior, set disconnect_after_expire to false.

  • #​12957 Stopped building packages for macOS 12.


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about these updates again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

@github-actions github-actions bot added area/kubernetes Changes made in the kubernetes directory cluster labels May 27, 2024
@bot-kanga bot-kanga bot removed the cluster label May 28, 2024
@bot-kanga bot-kanga bot force-pushed the renovate/public.ecr.aws-emqx-emqx-5.x branch from a6d90fd to ace754c Compare June 26, 2024 14:10
@bot-kanga bot-kanga bot changed the title feat(container): update image public.ecr.aws/emqx/emqx to v5.7.0 feat(container): update image public.ecr.aws/emqx/emqx to v5.7.1 Jun 26, 2024
@bot-kanga bot-kanga bot removed the cluster label Jun 27, 2024
@jalim jalim merged commit 4b9bace into main Jul 28, 2024
2 checks passed
@jalim jalim deleted the renovate/public.ecr.aws-emqx-emqx-5.x branch July 28, 2024 05:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/kubernetes Changes made in the kubernetes directory renovate/container type/minor
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant