RabbitMQ v2020.12-additions Release Notes

Release Date: 2020-11-25 // almost 3 years ago

Previous changes from v3.8.10-beta.1

  • RabbitMQ 3.8.10-beta.1

    ๐Ÿš€ RabbitMQ 3.8.10-beta.1 is a preview of a maintenance release.
    ๐Ÿ›  Besides containing several bug fixes, it introduces a couple new features for quorum queues.

    ๐Ÿ‘ This release no longer supports Erlang 21.3.

    Erlang/OTP Compatibility Notes

    ๐Ÿš€ This release requires Erlang 22 or
    Erlang 23.

    ๐Ÿ‘ Erlang 21.3 is no longer supported.
    ๐Ÿš€ 22.3 or 23.1 releases are recommended.

    ๐Ÿš€ Provisioning Latest Erlang Releases explains
    ๐Ÿ“ฆ what package repositories and tools can be used to provision latest patch versions of Erlang 22.3.x.

    โฌ†๏ธ Upgrade and Compatibility Notes

    โฌ†๏ธ Upgrade Doc Guides and Change Log

    ๐Ÿš€ See 3.8.0 release notes upgrade and
    ๐Ÿš€ compatibility notes first if upgrading from an earlier release series (e.g. 3.7.x).

    ๐Ÿ“š See the Upgrading guide for general documentation on upgrades and
    ๐Ÿš€ RabbitMQ change log for release notes of other releases.

    โฌ†๏ธ Upgrading to Erlang 22.x or Later Versions

    ๐Ÿš€ When upgrading to this release from 3.7.15 or an older version, extra care has to be taken.

    ๐Ÿš€ Because older RabbitMQ CLI tools can be incompatible with Erlang 22+ releases,
    โฌ†๏ธ RabbitMQ must be upgraded at the same time as Erlang.

    โฌ†๏ธ Alternatively the node can be upgraded to 3.7.18 on Erlang 21.3 first,
    ๐Ÿš€ then Erlang 22.x or 23.x, then RabbitMQ to the most recent 3.8.x release.

    Getting Help

    ๐Ÿš€ Any questions about this release, upgrades or RabbitMQ in general are welcome on the RabbitMQ mailing list
    and RabbitMQ community Slack.

    ๐Ÿ”„ Changes Worth Mentioning

    Core Server

    ๐Ÿ› Bug Fixes

    Starting with 3.8.0, an unintentionally introduced assertion could prevent classic mirrored queue
    mirrors from starting successfully in case the primary replica changed concurrently with their startup.

    GitHub issue: rabbitmq/rabbitmq-server#2449

    ๐ŸŒฒ Syslog dependency was not started correctly. This meant no log messages were sent to Syslog.

    GitHub issue: rabbitmq/rabbitmq-server#2456

    rabbitmq-diagnostics check_if_node_is_quorum_critical returned a false positive for a node marked for maintenance.
    โฌ†๏ธ Given the refinement to the rabbitmq-upgrade drain command in rabbitmq/rabbitmq-server#2474,
    rabbitmq-diagnostics check_if_node_is_quorum_critical now will unconditionally return a success
    if target node is under maintanence.

    GitHub issue: rabbitmq/rabbitmq-server#2469

    ๐Ÿ– Queues could update their internal bookkeeping state incorrectly in some cases, leading to a file_handle_cache
    ๐Ÿ‘ป operation exception.

    GitHub issue: rabbitmq/rabbitmq-server#2488

    โœจ Enhancements

    Quorum queues now can use the reject-publish
    max length overflow strategy.

    GitHub issue: rabbitmq/rabbitmq-server#2407

    ๐Ÿ‘ Quorum queues now support consumer priority.

    GitHub issue: rabbitmq/rabbitmq-server#2451

    Per-user connection and queue limits. This is similar to per-vhost limits but,
    as the name suggests, these limits are associated for a given user.

    The limits are controlled using CLI tools or the HTTP API:

    # limits user "user-e8d3f85c" to up to five connections, ten channels and a fifty queuesrabbitmqctl set\_user\_limits "user-e8d3f85c" '{"max-connections": 5, "max-channels": 10, "max-queues": 50}'# clears the maximum number of queues limit for the userrabbitmqctl clear\_user\_limits "user-e8d3f85c" "max-queues"# clears all limits for the userrabbitmqctl clear\_user\_limits "user-e8d3f85c" "all"

    Contributed by Erlang Solutions, sponsored by CloudAMQP.

    GitHub issue: rabbitmq/rabbitmq-server#607, rabbitmq/rabbitmq-server#2380

    ๐Ÿ”ง TLSv1.3 is no longer considered experimental (on Erlang 23) and excluded from TLS listener configuration.

    GitHub issue: rabbitmq/rabbitmq-common#415

    ๐Ÿšง When a node is put under maintenance, it will now stop all local quorum queue replicas after completing
    leadership transfer. This means that no quorum queue replicas on the node will be considered for
    leader elections.

    GitHub issue: rabbitmq/rabbitmq-server#2474

    Nodes now keep track of failed client authentication attempts and expose it as a metric via both the Prometheus endpoint
    and the HTTP API at GET /api/auth/attempts/{node}.

    ๐Ÿ‘ The tracking is done for every cluster node individually. The protocols that support authentication attempt tracking
    right now are AMQP 0-9-1, AMQP 1.0 and MQTT.

    GitHub issue: rabbitmq/rabbitmq-server#2436

    rabbitmq.conf schema now allows for peer certificate chain verification depth to be set to zero.
    When this value is used, peer certificate must be signed by a trusted CA certificate directly in order
    for the verification to pass.

    GitHub issue: rabbitmq/rabbitmq-server#2493

    RABBITMQ_IO_THREAD_POOL_SIZE will no longer be respected by RabbitMQ nodes. It is no longer relevant
    with supported Erlang versions and will simplify rabbitmq-diagnostics runtime_thread_stats output.

    GitHub issue: rabbitmq/rabbitmq-server#2473

    The +K runtime parameter is no longer used by RabbitMQ nodes as it has no effect
    ๐Ÿ‘ with supported Erlang versions.

    Contributed by Ayanda Dube (Erlang Solutions).

    GitHub issue: rabbitmq/rabbitmq-server#2470


    โœจ Enhancements

    rabbitmq-queues peek is a new command that allows for peeking at a queue position. It is only
    ๐Ÿ‘Œ supported by quorum queues (and not classic queues):

    # peeks at the head of queue "qq.1" in virtual host "staging"rabbitmq-queues peek --vhost "staging" "qq.1 1"

    GitHub issue: rabbitmq/rabbitmq-cli#452

    rabbitmq-queues reclaim_quorum_memory is a new command that forces Raft WAL compaction which in most cases should reduce memory footprint of a quorum queue:

    rabbitmq-queues reclaim\_quorum\_memory --vhost "staging" "qq.1"

    GitHub issue: rabbitmq/rabbitmq-cli#453

    ๐Ÿ› Bug Fixes

    rabbitmqctl rename_cluster_node failed with an error about a missing directory.

    GitHub issue: rabbitmq/rabbitmq-cli#457

    ๐Ÿšš Force removal of a node did not remove it from quorum queue member lists.

    GitHub issue: rabbitmq/rabbitmq-server#2414

    CLI tools now pick a unique identifier from a pool. Previously the pool of possible values was theoretically
    unbounded, which could result in an atom table exhaustion condition on long running nodes that
    had a lot of CLI tool invocations (e.g. CLI tools were used to collect monitoring data frequently).

    Such use of CLI tools for monitoring is not recommended:
    ๐Ÿ‘ there are better options such as Prometheus and Grafana.

    GitHub issue: rabbitmq/rabbitmq-cli#461

    ๐Ÿ”Œ Federation Plugin

    ๐Ÿ› Bug Fixes

    โฑ Federation links that failed to connect due to a TCP connection timeout leaked resources.
    Other connection failure scenarios did not result in a leak.

    GitHub issue: rabbitmq/rabbitmq-federation#119

    ๐Ÿ”Œ Management Plugin

    โœจ Enhancements

    Individual health checks are now available through the HTTP API.

    GitHub issue: rabbitmq/rabbitmq-management#844

    ๐Ÿ› Bug Fixes

    โšก๏ธ Quorum queue consumer counter on on the queue list page was not updated when consumers were cancelled or failed.

    GitHub issue: rabbitmq/rabbitmq-server#2421

    The aliveness check endpoint now responds with a 503 Service Unavailable instead of a 500 when
    โœ… it cannot publish a test message, e.g. because a policy with zero message TTL was applied to all queues.

    GitHub issue: rabbitmq/rabbitmq-management#855

    ๐Ÿ”Œ AWS Peer Discovery Plugin

    AWS API request errors are now propagated. This means that should an AWS API request fail,
    the peer discovery subsystem will retry it a limited number of times.

    Contributed by Stefan @stefanmoser Moser.

    GitHub issue: rabbitmq/rabbitmq-peer-discovery-aws#40

    โฌ†๏ธ Dependency Upgrades

    Source code archives

    โš  Warning : The source code archive provided by GitHub only contains the source of the broker, not the plugins or the client libraries.
    Please download the archive named rabbitmq-server-3.8.10.tar.xz.