Current Series Release Notes¶
18.3.0-27¶
New Features¶
A new
oslo-messaging-listen-notificationconsole script is available to consume and print notifications from a topic. It accepts--config-file,--transport-urland--topicoptions and is the counterpart ofoslo-messaging-send-notification.
The RabbitMQ driver can now limit minimum TLS version and maximum TLS version it accepts, using the following options.
[oslo_messaging_rabbit] tls_maximum_version[oslo_messaging_rabbit] tls_minimum_version
Upgrade Notes¶
Kafka consumer groups without a valid committed offset start at the earliest retained notification instead of the end of the log. New groups can therefore receive older notifications still retained by Kafka. Groups with valid committed offsets continue to resume from those offsets.
Default value of the
[oslo_messaging_metrics] metrics_process_nameoption has been changed and now it defaults to the program/command name. This is very helpful when multiple agents are reading/using the same configuration file and thus cannot have a different setting.
Deprecation Notes¶
The
[oslo_messaging_rabbit] ssl_versionconfiguration option is now deprecated. The RabbitMQ driver automatically negotiates the highest mutually supported TLS version (TLS 1.2 or 1.3) when this option is not set.Deployments should remove
ssl_versionfrom their configuration files. The option will be removed in a future release.
The
[oslo_messaging_rabbit] rabbit_quorum_queueand[oslo_messaging_rabbit] rabbit_transient_quorum_queueoptions will default toTruein a future release. The RabbitMQ driver now logs a warning when either of them isFalse.With these options disabled the driver declares transient (non-durable) non-exclusive queues, which RabbitMQ 4.3.0 and later refuse to create by default. Deployments on RabbitMQ 4.3.0 or later should enable both options.
Existing queues and exchanges are not converted when the options are enabled. Remove them before the services restart with quorum queues, for example by stopping the services and recreating the RabbitMQ virtual host. Services sharing exchanges or queues must use the same settings.
rabbit_ha_queues = Trueandamqp_auto_delete = Trueare not compatible with quorum queues, and on RabbitMQ releases older than 4.0 every quorum queue reserves file handles on the broker, so make sure its file descriptor limit is high enough.
Bug Fixes¶
Fixed a reply queue name collision with
use_queue_manager = True. TheQManagerused to only rely on the process-group identity captured at object construction time to key the shared/dev/shmcounter. When the process group changes after some oslo.messaging objects already exist – as happens under the cotyledon supervisor, whose master callsos.setsid()after creating them – a manager born in the master and a manager born in a worker disagreed on that identity and kept resetting the shared counter, so several processes built the same reply queue name (reply_<host>:<proc>:1) and stole each other’s RPC replies (leading toNo calling threads waiting for msg_idandMessagingTimeout). The identity is now re-evaluated when the queue name is built. When the process group id is 0 (crun edge case) it falls back to the process id, as before. See bug 2110957.
Made the RabbitMQ driver resilient to the removal of deprecated SSL protocol constants.
ssl.PROTOCOL_TLSv1andssl.PROTOCOL_SSLv23were referenced directly at class load time; these constants have been deprecated since Python 3.10 and are candidates for removal in a future CPython release, which would break importing the driver outright, just as the already-removedssl.PROTOCOL_SSLv2andssl.PROTOCOL_SSLv3would. All SSL protocol constants are now resolved viagetattrwith a graceful fallback, consistent with how the other optional protocols were already handled. LP#2167003
Kafka notification listeners now receive retained notifications when their consumer group has no valid committed offset. Previously, listeners could skip notifications published before partition assignment. Listener startup also no longer polls and discards a notification before dispatch begins.