Skip to content

RabbitMQ 4.0.4

Latest
Compare
Choose a tag to compare
@rabbitmq-ci rabbitmq-ci released this 21 Nov 23:00
· 41 commits to main since this release
ff37ab2

RabbitMQ 4.0.4 is a maintenance release in the 4.0.x release series.

Starting June 1st, 2024, community support for this series will only be provided to regularly contributing users and those
who hold a valid commercial support license.

It is strongly recommended that you read 4.0 release notes
in detail if upgrading from a version prior to 4.0.0.

Minimum Supported Erlang Version

This release requires Erlang 26 and supports Erlang versions up to 27.1.x.
RabbitMQ and Erlang/OTP Compatibility Matrix has more details on
Erlang version requirements for RabbitMQ.

Nodes will fail to start on older Erlang releases.

Changes Worth Mentioning

Release notes can be found on GitHub at rabbitmq-server/release-notes.

Core Broker

Bug Fixes

  • In rare cases quorum queue could end up without an elected leader because
    chosen candidate replica was not verified for aliveness.

    Contributed by @Ayanda-D.

    GitHub issues: #12727, #10423, #12701

  • Quorum queue follower replicas that have falled behind the leader could
    run into an exception after installing a snapshot.

    GitHub issue: #12635

  • Clusters with a large number of streams could run into confusing timeout
    exceptions.

    GitHub issue: #12693

  • Stream members could fail to start when their data directories had externally added files,
    for example, metadata of certain file systems.

    GitHub issue: #12688

  • Fetching metrics of AMQP 1.0 connections could fail with an exception.

    GitHub issue: #12700

  • Nodes using Khepri for schema data store now follow a set of rabbitmqctl reset procedures
    better aligned with those performed by nodes still using Mnesia.

    GitHub issue: #12763

Enhancements

  • Policy changes are now periodicaly re-applied (only if necessary) to quorum queues.
    Quorum queues that did not have an online elected leader at the time
    of policy change would now eventually "pick up" the settings from that policy.

    Contributed by @LoisSotoLopez.

    GitHub issue: #12667

  • Clusters with many streams and stream consumers will see a reduced per-stream CPU and network I/O
    footprint.

    GitHub issue: #12685

  • Clusters now can optionally be tagged with key-value pairs (cluster tags). The tags will
    be reported by rabbitmq-diagnostics cluster_status and the GET /api/overview HTTP API endpoint.

    Note that the Prometheus scraper API endpoint intentionally omits them because this kind of
    metadata in Prometheus is considered to be deployment and not application metadata.

    The tags are configured using rabbitmq.conf:

    cluster_tags.environment = production
    
    cluster_tags.region = us-east
    cluster_tags.az = us-east-3

    Contributed by @SimonUnge.

    GitHub issue: #12552

  • Nodes now can optionally be tagged with key-value pairs (node tags). The tags will
    be reported by rabbitmq-diagnostics status and the GET /api/overview HTTP API endpoint.

    Note that the Prometheus scraper API endpoint intentionally omits them because this kind of
    metadata in Prometheus is considered to be deployment and not application metadata.

    The tags are configured using rabbitmq.conf:

    nodes_tags.environment = production
    
    nodes_tags.region = us-east
    nodes_tags.az = us-east-3

    Contributed by @SimonUnge.

    GitHub issue: #12703

  • When a max length limit is applied to a quorum queue with a larger backlog (e.g. millions of messages),
    the deletion of excess messages now carries a significantly more moderate spike in memory footprint
    of the queue.

    GitHub issue: #12608

CLI Tools

Bug Fixes

  • rabbitmq-diagnostics check_if_any_deprecated_features_are_used now takes more deprecated features
    into account.

    GitHub issue: #12734, #12738

MQTT Plugin

Bug Fixes

  • A message with expiration (TTL) set, that was published by an AMQP 0-9-1 publusher,
    could not be converted for an MQTT consumer.

    GitHub issue: #12711

  • When x.509 (TLS) certificate-based authentication was used, two keys that controlled
    what SAN (Subject Alternative Name) fields were used to fetch client identity did not
    have any effect when used in rabbitmq.conf.

    Partially contributed by @janezturk.

    GitHub issue: #12618

Prometheus Plugin and Grafana Dashboards

Bug Fixes

Management Plugin

Enhancements

  • The endpoint that creates bindings now uses a much smaller HTTP request body
    size limit by default. Unlike the definition upload endpoint that accepts
    large definition documents, bindings do not need the generous multi-MiB limit.

    Note that the default HTTP request body size limit can be configured,
    for example, to reduce it across the board.

    GitHub issue: #12697

  • Improved alignment of optional queue arguments on the queue declaration page.

    Contributed by @markus812498.

    GitHub issue: #12678

OAuth 2 Plugin

Bug Fixes

  • When configuring multiple resource servers,
    additional_scopes_key was not taken into account, which means some scopes were not considered
    when making an authorization decision.

Contributed by @Hathoute.

GitHub issue: #12750

Debian Package

Enhancements

  • The package now list Erlang 27.x as supported series.

    GitHub issue: #12603

RPM Package

Enhancements

  • The package now list Erlang 27.x as supported series.

    GitHub issue: #12603

Dependency Changes

  • osiris was upgraded to 1.8.4

Source Code Archives

To obtain source code of the entire distribution, please download the archive named rabbitmq-server-4.0.4.tar.xz
instead of the source tarball produced by GitHub.