Current Series Release Notes

18.3.0-27

New Features

  • A new oslo-messaging-listen-notification console script is available to consume and print notifications from a topic. It accepts --config-file, --transport-url and --topic options and is the counterpart of oslo-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_name option 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_version configuration 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_version from their configuration files. The option will be removed in a future release.

  • The [oslo_messaging_rabbit] rabbit_quorum_queue and [oslo_messaging_rabbit] rabbit_transient_quorum_queue options will default to True in a future release. The RabbitMQ driver now logs a warning when either of them is False.

    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 = True and amqp_auto_delete = True are 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. The QManager used to only rely on the process-group identity captured at object construction time to key the shared /dev/shm counter. When the process group changes after some oslo.messaging objects already exist – as happens under the cotyledon supervisor, whose master calls os.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 to No calling threads waiting for msg_id and MessagingTimeout). 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_TLSv1 and ssl.PROTOCOL_SSLv23 were 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-removed ssl.PROTOCOL_SSLv2 and ssl.PROTOCOL_SSLv3 would. All SSL protocol constants are now resolved via getattr with 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.