RabbitMQ v4.2.9

v4.2.9

RabbitMQ 4.2.9

Added 1
  • rabbitmq-queues and rabbitmq-streams now provide transfer_leadership commands for individual queues and streams
Changed 4
  • Minimum supported Erlang version is now 27.0, with Erlang/OTP 26 no longer supported
  • Password salts are now generated using a cryptographically secure pseudo-random number generator
  • Socket-level metric collection used by several protocol readers and the management agent now handles concurrently closed connections safely
  • rabbitmq-upgrade drain safety improvements: the command now handles certain failures more gracefully
Fixed 15
  • Classic queue index directory paths could accumulate slashes, eventually failing with an enametoolong file system error
  • AMQP 1.0 management operations that declare an exchange with an alternate exchange now verify the necessary permissions on the alternate exchange
  • AMQP 1.0 management GET /bindings operations now behave consistently with the rest of the binding-related handlers
  • Worker pool processes no longer terminate when they receive an unexpected message
  • A race condition between concurrent queue or virtual host deletion and a Ra cluster shutdown could log an exception
  • A closing channel or connection that failed to send channel.close_ok on an already terminated writer or socket no longer produces log noise

RabbitMQ 4.2.9 is a maintenance release in the 4.2.x release series.

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

Minimum Supported Erlang Version

Important: starting with this release, the minimum supported Erlang version is 27.0. Erlang/OTP 26 has reached end of life and is no longer supported.

GitHub issue: #16914

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
  • Classic queue index directory paths could accumulate slashes, eventually failing with an enametoolong file system error.

    GitHub issue: #16833

  • AMQP 1.0 management operations that declare an exchange with an alternate exchange now verify the necessary permissions on the alternate exchange, matching AMQP 0-9-1.

    GitHub issue: #16785

  • AMQP 1.0 management GET /bindings operations now behave consistently with the rest of the binding-related handlers.

    GitHub issue: #16790

  • Worker pool processes no longer terminate when they receive an unexpected message.

    Contributed by @Ayanda-D.

    GitHub issue: #16666

  • A race condition between concurrent queue (or virtual host) deletion and a Ra cluster shutdown could log an exception.

    Contributed by @Ayanda-D.

    GitHub issue: #16880

  • A closing channel (connection) that failed to send channel.close_ok on an already terminated writer or socket no longer produce log noise.

    Contributed by @Ayanda-D.

    GitHub issue: #16651

  • Unexpected failures during channel termination cleanup no longer produce log noise.

    Contributed by @Ayanda-D.

    GitHub issue: #16740

  • Code paths that use rabbit_queue_type_util:erpc_call/5 now handle more errors.

    Contributed by @Ayanda-D.

    GitHub issue: #16701

  • Nodes could fail to start with a bad_generator exception in rabbit_queue_decorator:select/1 when a quorum queue record in the metadata store had its decorators set to undefined.

    GitHub issues: #16843, #16844

  • Enabling tracing on multiple virtual hosts concurrently could silently drop some of the virtual hosts from the traced set. All virtual host tracing state modifications are now linearized.

    GitHub issues: #16755, #16763

Enhancements
  • Password salts are now generated using a cryptographically secure pseudo-random number generator (CSPRNG).

    GitHub issue: #16775

  • Socket-level metric collection used by several protocol readers and the management agent now handles concurrently closed connections safely.

    Inspired by a contribution of @MugemaneBertin2001.

    GitHub issues: #16856, #16832

CLI Tools
Bug Fixes
  • rabbitmq-plugins commands now tolerate plugins that are listed as enabled but are not installed.

    GitHub issue: #16896

  • rabbitmq-plugins list no longer outputs an empty plugin table when the target node cannot be reached.

    GitHub issue: #16791

  • rabbitmq-plugins commands now correctly handle file paths of remote nodes, validate remote nodes in offline mode, and no longer report false positives for rabbitmq-plugins is_enabled.

    GitHub issue: #16842

  • Shell (Bash, zsh) command completion fixes.

    Contributed by @Chr1s70ph.

    GitHub issue: #16776

Enhancements
  • rabbitmq-queues and rabbitmq-streams now provide transfer_leadership commands for individual queues and streams.

    GitHub issue: #16757

  • rabbitmq-upgrade drain safety improvements: the command now handles certain failures more gracefully.

    Proposed by @MugemaneBertin2001.

    GitHub issues: #16865, #3369

Stream Plugin
Bug Fixes
  • Permissions required for certain stream protocol operations were adjusted to be consistent with comparable operations over other protocols.

    GitHub issue: #16754

Enhancements
  • The maximum number of super stream partitions is now limited to 1,000 partitions by default. This limit can be increased using the stream.max_super_stream_partitions key in rabbitmq.conf.

    GitHub issues: #16689, #16706

  • A client RPC timeout is now logged as a concise message instead of an exception with a stack trace.

    Contributed by @MugemaneBertin2001.

    GitHub issues: #16829, #15744

Management Plugin
Bug Fixes
  • OAuth 2 login could fail in Safari. A new token endpoint proxy is now used for the affected authorization flow.

    GitHub issues: #16664, #16892

  • Several management UI templates now use safe string escaping in more places.

    GitHub issue: #16738, #16677

  • HTTP API message publishing endpoint now uses a timeout when waiting for publisher confirms.

    GitHub issue: #16911

Enhancements
  • Definition export over the HTTP API is now significantly more efficient and transfers the result using HTTP response streaming.

    GitHub issue: #16734

  • The Referrer-Policy HTTP response header is now set (and configurable).

    GitHub issue: #16893

  • HTTP API error responses were refactored to be more consistent and expose fewer internal details.

    GitHub issue: #16709

OAuth 2 AuthN and AuthZ Backend Plugin
Bug Fixes
  • Fractional exp (token expiry) timestamp values are now honored.

    GitHub issue: #16713

Enhancements
  • The token refresh path is now more robust.

    GitHub issue: #16858

Shovel Plugin
Bug Fixes
  • Several shovel bug fixes, including one for static shovel URIs whose credentials could be logged.

    GitHub issues: #16855, #16835

  • A shovel deleted before it successfully connected (in the starting state) no longer leaks its status entry.

    GitHub issue: #16767

Federation Plugin
Bug Fixes
  • Federation upstream URIs are now validated more strictly.

    GitHub issue: #16942

MQTT Plugin
Enhancements
  • More correct peer host detection in setups that have Proxy Protocol enabled.

    GitHub issue: #16933

Web MQTT Plugin
Enhancements
  • More correct peer host detection in setups that have Proxy Protocol enabled.

    GitHub issue: #16933

  • The HSTS response header policy can now be configured for Web MQTT listeners.

    GitHub issues: #14161, #16772

STOMP Plugin
Enhancements
  • Internal socket handling refactoring shared by STOMP and Web STOMP connections.

    GitHub issue: #16935

Web STOMP Plugin
Enhancements
  • More correct peer host detection in setups that have Proxy Protocol enabled.

    GitHub issue: #16935

  • The HSTS response header policy can now be configured for Web STOMP listeners.

    GitHub issues: #14161, #16772

LDAP AuthN and AuthZ Backend Plugin
Bug Fixes
  • Additional DN escaping (RFC 4514) improvements

    GitHub issue: #16712

JMS Topic Exchange Plugin
Enhancements
  • JMS selector evaluation now uses much smaller, safer limits.

    GitHub issue: #16951

AWS Peer Discovery Plugin
Bug Fixes
  • Fixed a SigV4 request signing issue (SignatureDoesNotMatch) for body-less requests such as S3 GETs.

    Contributed by @sdewhitt.

    GitHub issue: #16759

Dependency Changes
  • cowboy was upgraded to 2.17.0
View original

Upgraded? How did it go?

Discussion