github rabbitmq/rabbitmq-server v4.3.7
RabbitMQ 4.3.7

3 hours ago

RabbitMQ 4.3.7 is a maintenance release in the 4.3.x release series.

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

Minimum Supported Erlang Version

The minimum supported Erlang version for this release series is 27.0.

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 Server

Bug Fixes

  • The basic.cancel notification sent on a consumer delivery timeout
    now properly clears consumer state even if the client does not respond with basic.cancel-ok.

    Most clients do not respond, and nodes older than 4.3.0 do not accept a client-sent
    basic.cancel-ok at all. The server now advertises whether one is supported, and a short timeout
    removes the consumer if the client never responds.

    A new rabbitmq.conf setting controls what happens on such a timeout:

    # notify_consumer (the default) sends basic.cancel to clients that support
    # the consumer_cancel_notify capability and closes the channel for others
    # close_channel always closes the channel, which is the pre-4.3.0 behavior
    consumer_timeout_response = notify_consumer

    GitHub issue: #17734

  • Classic queue expiration (x-expires) timestamps were lost on node restart, so the queue
    TTL timer did not fire when it was supposed to if the TTL outlived the restart.

    GitHub issues: #17708, #17759

  • Routing to queues now handles concurrent queue deletion gracefully in more places, avoiding
    confusing (and also non-actionable) exceptions.

    This also avoids unnecessary publisher confirm noise, most visible with transient exclusive
    queues bound to a topic exchange.

    GitHub issues: #17645, #17664

  • A quorum queue declaration that timed out waiting for a remote Khepri projection left
    the queue metadata behind and prevented a retry with the same name.

    Contributed by @chenshi5012.

    GitHub issue: #17550

  • Message conversion between AMQP 1.0 and AMQP 0-9-1 no longer fails on AMQP 1.0 values
    that AMQP 0-9-1 cannot represent.

    GitHub issue: #17536

  • Definition import now rejects a binding with an unrecognised destination_type.

    GitHub issue: #17587

  • AMQP 0-9-1 content headers are validated more strictly.

    GitHub issue: #17697

Enhancements

  • ssl_options.supported_groups can now be used in rabbitmq.conf to restrict
    the named groups offered for TLS 1.3 key exchange.

    GitHub issue: #17555

CLI Tools

Enhancements

  • CLI commands that accept sensitive values as interactive input now suppress terminal echoing
    where possible. This behavior is specific to Erlang 28 and 29.

    GitHub issue: #17585

Management Plugin

Bug Fixes

  • Pagination bug fixes for stream connections.

    GitHub issues: #17722, #17729

  • A 404 for a virtual host the user has no permissions on is now identical to the 404 for
    a virtual host that does not exist.

    GitHub issue: #17540

  • The OAuth 2 token proxy responded with a 500 to some malformed JSON documents.

    GitHub issue: #17646

  • The default Content-Security-Policy value now includes base-uri 'none'.

    GitHub issue: #17615

Enhancements

  • AMQP 1.0 consumers now link directly to their connection in the management UI.

    GitHub issues: #17516, #17523

Shovel Plugin

Bug Fixes

  • When the destination rejects a message, for example because the destination queue
    has x-overflow set to reject-publish and has reached its maximum length, the shovel
    now returns the message to the source queue as a failed delivery. A quorum source queue
    therefore dead-letters the message once it exceeds the delivery limit,
    instead of redelivering it to the shovel over and over (a regression in 4.3.0).

    With an AMQP 1.0 source, such a message used to be dead-lettered on the first rejection.
    Now this happens once it exceeds the delivery limit. A classic source queue has no
    delivery limit, so the message is returned to it until the destination accepts it.

    GitHub issue: #17794

  • A shovel with an AMQP 1.0 destination did not settle a message at the source when
    the destination rejected or released it, and eventually stopped forwarding messages.

    GitHub issue: #17794

  • A shovel with an AMQP 1.0 source could restart and forward some messages twice when
    the destination confirmed messages out of order.

    GitHub issue: #17794

  • A shovel with an AMQP 1.0 source could settle messages incorrectly after more than
    4 billion deliveries. With a local destination, it could acknowledge a message at the
    source before the destination confirmed it.

    GitHub issue: #17794

  • The AMQP 0-9-1 shovel now ignores publisher confirms for unknown delivery tags.

    GitHub issues: #17486, #17488

Federation Plugins

Bug Fixes

  • Federation links now ignore publisher confirms for unknown delivery tags.

    GitHub issues: #17486, #17488

  • An exchange federation link now handles amqp_connection:open_channel/1 returning closing
    instead of {error, Reason}.

    GitHub issue: #17655

MQTT Plugin

Bug Fixes

  • QoS 0 consumer queue deletion now retries in more scenarios.

    GitHub issue: #17515

JMS Topic Exchange Plugin

Bug Fixes

  • Message selectors with arithmetic expressions now validate numerical arguments more thoroughly.

    GitHub issue: #17613

Erlang AMQP 0-9-1 Client

Enhancements

  • The client now responds to a server-sent basic.cancel with basic.cancel-ok only when the server
    advertises support for it.

    GitHub issue: #17734

  • The auth_mechanism query parameter of an AMQP 0-9-1 URI is now restricted to
    the mechanisms the client actually supports (plain, amqplain, external,
    crdemo), and an unsupported value is now rejected when the URI is parsed
    rather than when the connection is established. This also applies to the
    Shovel and federation plugins, which parse URIs the same way.

    GitHub issue: #17466

  • Likewise, the verify query parameter of an AMQP 0-9-1 URI now only accepts
    verify_peer or verify_none, and an unsupported value is rejected when the
    URI is parsed rather than when the TLS connection is established.

    GitHub issue: #17466

Erlang AMQP 1.0 Client

Enhancements

  • Connection configuration now accepts a connect_timeout, applied to the socket
    connect and, for TLS-enabled connections, to the TLS handshake as well.

    Contributed by @arrangabriel.

    GitHub issues: #17539, #17549

Dependency Changes

  • cowboy was upgraded to 2.20.0
  • cowlib was upgraded to 2.21.0
  • gun was upgraded to 2.7.0
  • khepri was upgraded to 0.18.4

Don't miss a new rabbitmq-server release

NewReleases is sending notifications on new releases.