release-notes/4.3.3.md
RabbitMQ 4.3.3 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.
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.
Release notes can be found on GitHub at rabbitmq-server/release-notes.
Quorum queue, Khepri and other Raft leaders could optimistically commit new log entries in certain scenarios.
GitHub issue: rabbitmq/ra#637
Quorum queues that use at-least-once dead lettering could get their
dead lettering process permanently stuck after repeated queue membership changes.
GitHub issue: #16652
Classic queue index directory paths could accumulate slashes, eventually failing
with an enametoolong file system error.
GitHub issue: #16833
Enabling the tie_binding_to_dest_with_keep_while_cond feature flag could fail with an exception
when certain exchange-to-exchange topologies.
GitHub issue: #16824
An invalid consumer_timeout value in the configuration now falls back to the default
value (24 hours) instead of being used as is.
GitHub issue: #16799
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.
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.
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.
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
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.
Permissions required for certain stream protocol operations were adjusted to be consistent with comparable operations over other protocols.
GitHub issue: #16754
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.
A client RPC timeout is now logged as a concise message instead of an exception with a stack trace.
Contributed by @MugemaneBertin2001.
OAuth 2 login could fail in Safari. A new token endpoint proxy is now used for the affected authorization flow.
Several management UI templates now use safe string escaping in more places.
HTTP API message publishing endpoint now uses a timeout when waiting for publisher confirms.
GitHub issue: #16911
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
The Allow HTTP response header can now be excluded from HTTP API responses.
GitHub issue: #16907
HTTP API error responses were refactored to be more consistent and expose fewer internal details.
GitHub issue: #16709
HTTP access log entries for OAuth 2-authenticated requests now use the username determined
by the authentication backend (e.g. preferred_username) instead of the client ID.
Definition file uploads via the management UI now require a .json file extension
(enabled via a feature switch).
GitHub issue: #16946
Fractional exp (token expiry) timestamp values are now honored.
GitHub issue: #16713
The token refresh path is now more robust.
GitHub issue: #16858
Several shovel bug fixes, including one for static shovel URIs whose credentials could be logged.
A shovel deleted before it successfully connected (in the starting state) no longer
leaks its status entry.
GitHub issue: #16767
Improved network failure recovery for shovels.
GitHub issue: #16662
Shovels with AMQP 1.0 sources now support the src-consumer-args parameter.
GitHub issue: #16800
Federation upstream URIs are now validated more strictly.
GitHub issue: #16942
Improved network failure recovery for shovels.
GitHub issue: #16662
Exchange federation links now trap exits later in the initialization process, avoiding confusing timeouts and log noise.
GitHub issue: #16801
More correct peer host detection in setups that have Proxy Protocol enabled.
GitHub issue: #16933
Internal socket handling refactoring shared by STOMP and Web STOMP connections.
GitHub issue: #16935
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.
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 STOMP listeners.
Additional DN escaping (RFC 4514) improvements
GitHub issue: #16712
JMS selector evaluation now uses much smaller, safer limits.
GitHub issue: #16951
Fixed a SigV4 request signing issue (SignatureDoesNotMatch) for body-less requests such as S3 GETs.
Contributed by @sdewhitt.
GitHub issue: #16759