** Description changed:
This bug tracks an update for the rabbitmq-server package in Ubuntu.
This bug tracks an update to the following versions:
- * Focal (20.04): rabbitmq-server 3.8.3
- * Jammy (22.04): rabbitmq-server 3.9.27
+ * Focal (20.04): rabbitmq-server 3.8.3
+ * Jammy (22.04): rabbitmq-server 3.9.27
+
+ (NOTE) - Jammy is only updating to 3.9.27 because 3.9.28 requires Erlang
24.3. If Erlang updates in the future, then we can upgrade further.
+ (NOTE) - Focal is only updating to 3.8.3 from 3.8.2 because 3.8.4 requires
etcd v3.4.
+
+ This is the first MRE of rabbitmq-server.
+
+ Upstream has a very rapid release cadence with micro releases that
+ contain many bug fixes that would be good to bring into our LTS
+ releases.
+
+ One major hurdle with this is the lack of proper dep8 tests, which a
+ limited suite of dep8 tests were created for this MRE, which is planned
+ to get integrated into newer releases once approved.
+
+ rabbitmq-server is a complicated package that the new dep8 tests will
+ not be able to cover everything, therefore our openstack charms CI/CD
+ ran the new verison to provide more confidence in the package, and to at
+ least verify that our workflow works. The results of these runs can be
+ found at https://review.opendev.org/c/openstack/charm-rabbitmq-
+ server/+/915836.
+
+ In addition to this, only Jammy has github workflows to build+test the
+ package, where the results can be found at
+ https://github.com/mitchdz/rabbitmq-
+ server-3-9-27-tests/actions/runs/8955069098/job/24595393599.
+
+ Reviewing the changes, there is only one change that I want to bring to
attention. That is version 3.9.23
(https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.9.23 ) introduces
the following change:
+ Nodes now default to 65536 concurrent client connections instead of using the
effective kernel open file handle limit
+
+ ------------------------------------------------------------------------------
+
+ Jammy Changes:
+ - Notices:
+ + Nodes now default to 65536 concurrent client connections instead of
+ using the effective kernel open file handle limit. Users who want to
+ override this default, that is, have nodes that should support more
+ concurrent connections and open files, now have to perform an additional
+ configuration step:
+
+ 1. Pick a new limit value they would like to use, for instance, 100K
+ 2. Set the maximum open file handle limit (for example, via `systemd`
+ or similar tooling) for the OS user used by RabbitMQ to 100K
+ 3. Set the ERL_MAX_PORTS environment variable to 100K
+
+ This change was introduced because of a change in several Linux
+ distributions: they now use a default open file handle limit so high,
+ they cause a significant (say, 1.5 GiB) memory preallocated the Erlang
+ runtime.
+ - Updates:
+ + Free disk space monitor robustness improvements.
+ + `raft.adaptive_failure_detector.poll_interval` exposes aten()'s
+ poll_interval setting to RabbitMQ users. Increasing it can reduce the
+ probability of false positives in clusters where inter-node
+ communication links are used at close to maximum capacity. The default
+ is `5000` (5 seconds).
+ + When both `disk_free_limit.relative` and `disk_free_limit.absolute`,
+ or both `vm_memory_high_watermark.relative` and
+ `vm_memory_high_watermark.absolute` are set, the absolute settings will
+ now take precedence.
+ + New key supported by `rabbitmqctl list_queues`:
+ `effective_policy_definition` that returns merged definitions of regular
+ and operator policies effective for the queue.
+ + New HTTP API endpoint, `GET /api/config/effective`, returns effective
+ node configuration. This is an HTTP API counterpart of
+ `rabbitmq-diagnostics environment`.
+ + Force GC after definition import to reduce peak memory load by mostly
+ idle nodes that import a lot of definitions.
+ + A way to configure an authentication timeout, much like in some other
+ protocols RabbitMQ supports.
+ + Windows installer Service startup is now optional. More environment
+ variables are respected by the installer.
+ + In environments where DNS resolution is not yet available at the time
+ RabbitMQ nodes boot and try to perform peer discovery, such as CoreDNS
+ with default caching interval of 30s on Kubernetes, nodes now will
+ retry hostname resolution (including of their own host) several times
+ with a wait interval.
+ + Prometheus plugin now exposes one more metric process_start_time_seconds
+ the moment of node process startup in seconds.
+ + Reduce log noise when `sysctl` cannot be accessed by node memory
+ monitor.
+ + Shovels now handle consumer delivery timeouts gracefully and restart.
+ + Optimization: internal message GUID is no longer generated for quorum
+ queues and streams, as they are specific to classic queues.
+ + Two more AMQP 1.0 connection lifecycle events are now logged.
+ + TLS configuration for inter-node stream replication connections now can
+ use function references and definitions.
+ + Stream protocol connection logging is now less verbose.
+ + Max stream segment size is now limited to 3 GiB to avoid a potential
+ stream position overflow.
+ + Logging messages that use microseconds now use "us" for the SI symbol to
+ be compatible with more tools.
+ + Consul peer discovery now supports client-side TLS options, much like
+ its Kubernetes and etcd peers.
+ + A minor quorum queue optimization.
+ + 40 to 50% throughput improvement for some workloads where AMQP 0-9-1
+ clients consumed from a [stream](https://rabbitmq.com/stream.html).
+ + Configuration of fallback secrets for Shovel and Federation credential
+ obfuscation. This feature allows for secret rotation during rolling
+ cluster node restarts.
+ + Reduced memory footprint of individual consumer acknowledgements of
+ quorum queue consumers.
+ + `rabbitmq-diagnostics status` now reports crypto library (OpenSSL,
+ LibreSSL, etc) used by the runtime, as well as its version details.
+ + With a lot of busy quorum queues, nodes hosting a moderate number of of
+ leader replicas could experience growing memory footprint of one of the
+ Raft implementation processes.
+ + Re-introduced key file log rotation settings. Some log rotation settings
+ were left behind during the migration to the standard runtime logger
+ starting with 3.9.0. Now some key settings have been re-introduced.
+ + Cleaned up some compiler options that are no longer relevant.
+ + Quorum queues: better forward compatibility with RabbitMQ 3.10.
+ + Significantly faster queue re-import from definitions on subsequent node
+ restarts. Initial definition import still takes the same amount of time
+ as before.
+ + Significantly faster exchange re-import from definitions on subsequent
+ node restarts. Initial definition import still takes the same amount of
+ time as before.
+ + RabbitMQ nodes will now filter out certain log messages related to
+ connections, channels, and queue leader replicas receiving internal
+ protocol messages sent to this node before a restart. These messages
+ usually raise more questions and cause confusion than help.
+ + More Erlang 24.3's `eldap` library compatibility improvements.
+ + Restart of a node that hosted one or more stream leaders resulted in
+ their consumers not "re-attaching" to the newly elected leader.
+ + Large fanouts experienced a performance regression when streams were not
+ enabled using a feature flag.
+ + Stream management plugin did not support mixed version clusters.
+ + Stream deletion did not result in a `basic.cancel` being sent to AMQP
+ 0-9-1 consumers.
+ + Stream clients did not receive a correct stream unavailability error in
+ some cases.
+ + It is again possible to clear user tags and update the password in a
+ single operation.
+ + Forward compatibility with Erlang 25.
+ + File handle cache efficiency improvements.
+ + Uknown stream properties (e.g. those requested by a node that runs a
+ newer version)
+ are now handled gracefully.
+ + Temporary hostname resolution issues-attempts that fail with `nxdomain`
+ are now handled more gracefully and with a delay of several seconds.
+ + Build time compatibility with Elixir 1.13.
+ + `auth_oauth2.additional_scopes_key` in `rabbitmq.conf` was not converted
+ correctly during configuration translation and thus had no effect.
+ + Adapt to a breaking Erlang 24.3 LDAP client change.
+ + Shovels now can be declared with `delete-after` parameter set to `0`.
+ Such shovels will immediately stop instead of erroring and failing to
+ start after a node restart.
+ + Support for Consul 1.1 response code changes
+ when an operation is attempted on a non-existent health check.
+ - Bug Fixes:
+ + Classic queues with Single Active Consumer enabled could run into an
+ exception.
+ + When a global parameter was cleared,
+ nodes emitted an internal event of the wrong type.
+ + Fixed a type analyzer definition.
+ + LDAP server password could end up in the logs in certain types of
+ exceptions.
+ + `rabbitmq-diagnostics status` now handles server responses where free
+ disk space is not yet computed. This is the case with nodes early in the
+ boot process.
+ + Management UI links now include "noopener" and "noreferrer" attributes
+ to protect them against reverse tabnabbing. Note that since management
+ UI only includes a small number of external links to trusted resources,
+ reverse tabnabbing is unlikely to affect most users. However, it can
+ show up in security scanner results and become an issue in environments
+ where a modified version of RabbitMQ is offered as a service.
+ + Plugin could stop in environments where no static Shovels were defined
+ and a specific sequence of events happens at the same time.
+ + When installation directory was overridden, the plugins directory did
+ not respect the updated base installation path.
+ + Intra-cluster communication link metric collector could run into an
+ exception when peer connection has just been re-established, e.g. after
+ a peer node restart.
+ + When a node was put into maintenance mode, it closed all MQTT client
+ connections cluster-wide instead of just local client connections.
+ + Reduced log noise from exceptions connections could run into when a
+ client was closings it connection end concurrently with other activity.
+ + `rabbitmq-env-conf.bat§ on Windows could fail to load when its path
+ contained spaces.
+ + Stream declaration could run into an exception when stream parameters
+ failed validation.
+ + Some counters on the Overview page have been moved to global counters
+ introduced in RabbitMQ 3.9.
+ + Avoid an exception when MQTT client closes TCP connection before server
+ could fully process a `CONNECT` frame sent earlier by the same client.
+ + Channels on connections to mixed clusters that had 3.8 nodes in them
+ could run into an exception.
+ + Inter-node cluster link statistics did not have any data when TLS was
+ enabled for them.
+ + Quorum queues now correctly propagate errors when a `basic.get` (polling
+ consumption) operation hits a timeout.
+ + Stream consumer that used AMQP 0-9-1 instead of a stream protocol
+ client, and disconnected, leaked a file handle.
+ + Max frame size and client heartbeat parameters for [RabbitMQ stream]()
+ clients were not correctly set when taken from `rabbitmq.conf`.
+ + Removed a duplicate exchange decorator set operation.
+ + Node restarts could result in a hashing ring inconsistency.
+ + Avoid seeding default user in old clusters that still use the deprecated
+ `management.load_definitions` option.
+ + Streams could run into an exception or fetch stale stream position data
+ in some scenarios.
+ + `rabbitmqctl set_log_level` did not have any effect on logging via
+ `amq.rabbitmq.log`.
+ + `rabbitmq-diagnostics status` is now more resilient and won't fail if
+ free disk space monitoring repeatedly fails (gets disabled) on the node.
+ + CLI tools failed to run on Erlang 25 because of an old version of Elixir
+ (compiled on Erlang 21) was used in the release pipeline. Erlang 25 no
+ longer loads modules
+ compiled on Erlang 21 or older.
+ + Default log level used a four-character severity abbreviation instead of
+ more common longer format, for example, `warn` instead of `warning`.
+ + `rabbitmqctl set_log_level` documentation clarification.
+ + Nodes now make sure that maintenance mode status table exists after node
+ boot as long as the feature flag is enabled.
+ + "In flight" messages directed to an exchange that has just been deleted
+ will be silently dropped or returned back to the publisher instead of
+ causing an exception.
+ + rabbitmq-upgrade await_online_synchronized_mirror is now a no-op in
+ single node clusters
+ + One metric that was exposed via CLI tools and management plugin's HTTP
+ API was not exposed via Prometheus scraping API.
+ + Stream delivery rate could drop if concurrent stream consumers consumed
+ in a way that made them reach the end of the stream often.
+ + If a cluster that had streams enabled was upgraded with a jump of
+ multiple patch releases, stream state could fail an upgrade.
+ + Significantly faster queue re-import from definitions on subsequent node
+ restarts. Initial definition import still takes the same amount of time
+ as before.
+ + When a policy contained keys unsupported by a particular queue
+ type, and later updated or superseded by a higher priority policy,
+ effective optional argument list could become inconsistent (policy
+ would not have the expected effect).
+ + Priority queues could run into an exception in some cases.
+ + Maintenance mode could run into a timeout during queue leadership
+ transfer.
+ + Prometheus collector could run into an exception early on node's
+ schema database sync.
+ + Connection data transfer rate units were incorrectly displayed when
+ rate was less than 1 kiB per second.
+ + `rabbitmqadmin` now correctly loads TLS-related keys from its
+ configuration file.
+ + Corrected a help message for node memory usage tool tip.
+ * Added new dep8 tests:
+ - d/t/hello-world
+ - d/t/publish-subscribe
+ - d/t/rpc
+ - d/t/work-queue
+ * Remove patches fixed upstream:
+ - d/p/lp1999816-fix-rabbitmqctl-status-disk-free-timeout.patch
+
+ ------------------------------------------------------------------------------
+
+ Focal Changes:
+ * New upstream verison 3.8.3 (LP: #2060248).
+ - Updates:
+ + Some Proxy protocol errors are now logged at debug level.
+ This reduces log noise in environments where TCP load balancers and
+ proxies perform health checks by opening a TCP connection but never
+ sending any data.
+ + Quorum queue deletion operation no longer supports the "if unused" and
+ "if empty" options. They are typically used for transient queues don't
+ make much sense for quorum ones.
+ + Do not treat applications that do not depend on rabbit as plugins.
+ This is especially important for applications that should not be stopped
+ before rabbit is stopped.
+ + RabbitMQ nodes will now gracefully shutdown when receiving a `SIGTERM`
+ signal. Previously the runtime would invoke a default handler that
+ terminates the VM giving RabbitMQ no chance to execute its shutdown
+ steps.
+ + Every cluster now features a persistent internal cluster ID that can be
+ used by core features or plugins. Unlike the human-readable cluster name,
+ the value cannot be overridden by the user.
+ + Speedup execution of boot steps by a factor of 2N, where N is the number
+ of attributes per step.
+ + New health checks that can be used to determine if it's a good moment to
+ shut down a node for an upgrade.
+
+ ``` sh
+ # Exits with a non-zero code if target node hosts leader replica of at
+ # least one queue that has out-of-sync mirror.
+ rabbitmq-diagnostics check_if_node_is_mirror_sync_critical
+
+ # Exits with a non-zero code if one or more quorum queues will lose
+ # online quorum should target node be shut down
+ rabbitmq-diagnostics check_if_node_is_quorum_critical
+ ```
+ + Some proxy protocol errors are now logged at debug level. This reduces
+ log noise in environments where TCP load balancers and proxies perform
+ health checks by opening a TCP connection but never sending any data.
+ + Management and Management Agent Plugins:
+ * An undocumented "automagic login" feature on the login form was
+ removed.
+ * A new `POST /login` endpoint can be used by custom management UI login
+ forms to authenticate the user and set the cookie.
+ * A new `POST /rebalance/queues` endpoint that is the HTTP API equivalent
+ of `rabbitmq-queues rebalance`
+ * Warning about a missing `handle.exe` in `PATH` on Windows is now only
+ logged every 10 minutes.
+ * `rabbitmqadmin declare queue` now supports a new `queue_type` parameter
+ to simplify declaration of quorum queues.
+ * HTTP API request log entries now includes acting user.
+ * Content Security Policy headers are now also set for static assets such
+ as JavaScript files.
+ + Prometheus Plugin:
+ * Add option to aggregate metrics for channels, queues & connections.
+ Metrics are now aggregated by default (safe by default).
+ + Kubernetes Peer Discovery Plugin:
+ * The plugin will now notify Kubernetes API of node startup and peer
+ stop/unavailability events. This new behaviour can be disabled via
+ `prometheus.return_per_object_metrics = true` config.
+ + Federation Plugin:
+ * "Command" operations such as binding propagation now use a separate
+ channel for all links, preventing latency spikes for asynchronous
+ operations (such as message publishing) (a head-of-line blocking
+ problem).
+ + Auth Backend OAuth 2 Plugin:
+ * Additional scopes can be fetched from a predefined JWT token field.
+ Those scopes will be combined with the standard scopes field.
+ + Trust Store Plugin:
+ * HTTPS certificate provider will not longer terminate if upstream
+ service response contains invalid JSON.
+ + MQTT Plugin:
+ * Avoid blocking when registering or unregistering a client ID.
+ + AMQP 1.0 Client Plugin:
+ * Handle heartbeat in `close_sent/2`.
+ - Bug Fixes:
+ + Reduced scheduled GC activity in connection socket writer to one run per
+ 1 GiB of data transferred, with an option to change the value or disable
+ scheduled run entirely.
+ + Eliminated an inefficiency in recovery of quorum queues with a backlog of
+ messages.
+ + In a case where a node hosting a quorum queue replica went offline and
+ was removed from the cluster, and later came back, quorum queues could
+ enter a loop of Raft leader elections.
+ + Quorum queues with a dead lettering could fail to recover.
+ + The node now can recover even if virtual host recovery terms file was
+ corrupted.
+ + Autoheal could fail to finish if one of its state transitions initiated
+ by a remote node timed out.
+ + Syslog client is now started even when Syslog logging is configured only
+ for some log sinks.
+ + Policies that quorum queues ignored were still listed as applied to them.
+ + If a quorum queue leader rebalancing operation timed out, CLI tools
+ failed with an exception instead of a sensible internal API response.
+ + Handle timeout error on the rebalance function.
+ + Handle and raise protocol error for absent queues assumed to be alive.
+ + `rabbitmq-diagnostics status` failed to display the results when executed
+ against a node that had high VM watermark set as an absolute value
+ (using `vm_memory_high_watermark.absolute`).
+ + Management and Management Agent Plugins:
+ * Consumer section on individual page was unintentionally hidden.
+ + Management and Management Agent Plugins:
+ * Fix queue-type select by adding unsafe-inline CSP policy.
+ + Etcd Peer Discovery Plugin:
+ * Only run healthcheck when backend is configured.
+ + Federation Plugin:
+ * Use vhost to delete federated exchange.
+ * Added new dep8 tests:
+ - d/t/smoke-test
+ - d/t/hello-world
+ - d/t/publish-subscribe
+ - d/t/rpc
+ - d/t/work-queue
** Changed in: rabbitmq-server (Ubuntu)
Assignee: (unassigned) => Mitchell Dzurick (mitchdz)
** Merge proposal linked:
https://code.launchpad.net/~mitchdz/ubuntu/+source/rabbitmq-server/+git/rabbitmq-server/+merge/465969
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2060248
Title:
MRE updates of rabbitmq-server for Jammy,Focal
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/rabbitmq-server/+bug/2060248/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs