Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-oslo.messaging for openSUSE:Factory checked in at 2021-05-08 22:07:23 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-oslo.messaging (Old) and /work/SRC/openSUSE:Factory/.python-oslo.messaging.new.2988 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-oslo.messaging" Sat May 8 22:07:23 2021 rev:24 rq:889993 version:12.7.1 Changes: -------- --- /work/SRC/openSUSE:Factory/python-oslo.messaging/python-oslo.messaging.changes 2020-10-26 16:17:29.942992349 +0100 +++ /work/SRC/openSUSE:Factory/.python-oslo.messaging.new.2988/python-oslo.messaging.changes 2021-05-08 22:07:25.345741333 +0200 @@ -1,0 +2,35 @@ +Sun May 2 17:30:41 UTC 2021 - cloud-de...@suse.de + +- update to version 12.7.1 + - Adding pre-commit + - Fix doc title rendering + - Dropping lower constraints testing + - Remove six + - Deprecate the mandatory flag + - Run rabbitmq heartbeat in python thread by default + - remove unicode from code + - Update master for stable/victoria + - fix variable name + - Move jobs to py38 + - Correctly handle missing RabbitMQ queues + - Python 3.9: isAlive is removed + - Add Python3 wallaby unit tests + - Use TOX_CONSTRAINTS_FILE + - Use py3 as the default runtime for tox + - Fix type of direct_mandatory_flag opt + - add min of 1 to rpc_conn_pool_size + +------------------------------------------------------------------- +Tue Mar 16 11:16:36 UTC 2021 - Dirk M??ller <dmuel...@suse.com> + +- avoid sphinx-build failure on parsing rst files + +------------------------------------------------------------------- +Tue Feb 2 00:39:03 UTC 2021 - cloud-de...@suse.de + +- update to version 12.5.1 + - Update .gitreview for stable/victoria + - add min of 1 to rpc_conn_pool_size + - Update TOX_CONSTRAINTS_FILE for stable/victoria + +------------------------------------------------------------------- Old: ---- oslo.messaging-12.5.0.tar.gz New: ---- oslo.messaging-12.7.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-oslo.messaging.spec ++++++ --- /var/tmp/diff_new_pack.YTK89g/_old 2021-05-08 22:07:25.797739375 +0200 +++ /var/tmp/diff_new_pack.YTK89g/_new 2021-05-08 22:07:25.797739375 +0200 @@ -1,7 +1,7 @@ # # spec file for package python-oslo.messaging # -# Copyright (c) 2020 SUSE LLC +# Copyright (c) 2021 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,13 +17,13 @@ Name: python-oslo.messaging -Version: 12.5.0 +Version: 12.7.1 Release: 0 Summary: OpenStack oslo.messaging library License: Apache-2.0 Group: Development/Languages/Python -URL: https://launchpad.net/oslo.messaging -Source0: https://files.pythonhosted.org/packages/source/o/oslo.messaging/oslo.messaging-12.5.0.tar.gz +URL: https://docs.openstack.org/oslo.messaging +Source0: https://files.pythonhosted.org/packages/source/o/oslo.messaging/oslo.messaging-12.7.1.tar.gz BuildRequires: openstack-macros BuildRequires: python3-PyYAML >= 3.13 BuildRequires: python3-WebOb >= 1.7.1 @@ -61,7 +61,6 @@ %package -n python3-oslo.messaging Summary: OpenStack oslo.messaging library -Group: Development/Languages/Python Requires: python3-PyYAML >= 3.13 Requires: python3-WebOb >= 1.7.1 Requires: python3-amqp >= 2.5.2 @@ -91,7 +90,6 @@ %package -n python3-oslo.messaging-doc Summary: Documentation for OpenStack messaging library -Group: Development/Languages/Python BuildRequires: python3-Sphinx BuildRequires: python3-openstackdocstheme @@ -101,7 +99,7 @@ This package contains the documentation. %prep -%autosetup -p1 -n oslo.messaging-12.5.0 +%autosetup -p1 -n oslo.messaging-12.7.1 %py_req_cleanup %build ++++++ _service ++++++ --- /var/tmp/diff_new_pack.YTK89g/_old 2021-05-08 22:07:25.821739271 +0200 +++ /var/tmp/diff_new_pack.YTK89g/_new 2021-05-08 22:07:25.825739254 +0200 @@ -1,8 +1,8 @@ <services> <service mode="disabled" name="renderspec"> - <param name="input-template">https://opendev.org/openstack/rpm-packaging/raw/branch/stable/victoria/openstack/oslo.messaging/oslo.messaging.spec.j2</param> + <param name="input-template">https://opendev.org/openstack/rpm-packaging/raw/branch/stable/wallaby/openstack/oslo.messaging/oslo.messaging.spec.j2</param> <param name="output-name">python-oslo.messaging.spec</param> - <param name="requirements">https://opendev.org/openstack/oslo.messaging/raw/branch/stable/victoria/requirements.txt</param> + <param name="requirements">https://opendev.org/openstack/oslo.messaging/raw/branch/stable/wallaby/requirements.txt</param> <param name="changelog-email">cloud-de...@suse.de</param> <param name="changelog-provider">gh,openstack,oslo.messaging</param> </service> ++++++ oslo.messaging-12.5.0.tar.gz -> oslo.messaging-12.7.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-12.5.0/.pre-commit-config.yaml new/oslo.messaging-12.7.1/.pre-commit-config.yaml --- old/oslo.messaging-12.5.0/.pre-commit-config.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/oslo.messaging-12.7.1/.pre-commit-config.yaml 2021-02-16 10:01:45.000000000 +0100 @@ -0,0 +1,35 @@ +# We from the Oslo project decided to pin repos based on the +# commit hash instead of the version tag to prevend arbitrary +# code from running in developer's machines. To update to a +# newer version, run `pre-commit autoupdate` and then replace +# the newer versions with their commit hash. + +default_language_version: + python: python3 + +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: ebc15addedad713c86ef18ae9632c88e187dd0af # v3.1.0 + hooks: + - id: trailing-whitespace + # Replaces or checks mixed line ending + - id: mixed-line-ending + args: ['--fix', 'lf'] + exclude: '.*\.(svg)$' + # Forbid files which have a UTF-8 byte-order marker + - id: check-byte-order-marker + # Checks that non-binary executables have a proper shebang + - id: check-executables-have-shebangs + # Check for files that contain merge conflict strings. + - id: check-merge-conflict + # Check for debugger imports and py37+ breakpoint() + # calls in python source + - id: debug-statements + - id: check-yaml + files: .*\.(yaml|yml)$ + - repo: https://gitlab.com/pycqa/flake8 + rev: 181bb46098dddf7e2d45319ea654b4b4d58c2840 # 3.8.3 + hooks: + - id: flake8 + additional_dependencies: + - hacking>=3.0.1,<3.1.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-12.5.0/.zuul.yaml new/oslo.messaging-12.7.1/.zuul.yaml --- old/oslo.messaging-12.5.0/.zuul.yaml 2020-09-11 21:18:07.000000000 +0200 +++ new/oslo.messaging-12.7.1/.zuul.yaml 2021-02-16 10:01:45.000000000 +0100 @@ -1,29 +1,29 @@ - job: - name: oslo.messaging-tox-py36-func-scenario01 - parent: openstack-tox-py36 + name: oslo.messaging-tox-py38-func-scenario01 + parent: openstack-tox-py38 vars: - tox_envlist: py36-func-scenario01 + tox_envlist: py38-func-scenario01 bindep_profile: rabbit - job: - name: oslo.messaging-tox-py36-func-scenario02 - parent: openstack-tox-py36 + name: oslo.messaging-tox-py38-func-scenario02 + parent: openstack-tox-py38 vars: - tox_envlist: py36-func-scenario02 + tox_envlist: py38-func-scenario02 bindep_profile: rabbit kafka amqp1 - job: - name: oslo.messaging-tox-py36-func-scenario03 - parent: openstack-tox-py36 + name: oslo.messaging-tox-py38-func-scenario03 + parent: openstack-tox-py38 vars: - tox_envlist: py36-func-scenario03 + tox_envlist: py38-func-scenario03 bindep_profile: rabbit amqp1 - job: - name: oslo.messaging-tox-py36-func-scenario04 - parent: openstack-tox-py36 + name: oslo.messaging-tox-py38-func-scenario04 + parent: openstack-tox-py38 vars: - tox_envlist: py36-func-scenario04 + tox_envlist: py38-func-scenario04 bindep_profile: kafka amqp1 # Begin v3 native jobs @@ -108,19 +108,18 @@ - check-requirements - lib-forward-testing-python3 - openstack-cover-jobs - - openstack-lower-constraints-jobs - - openstack-python3-victoria-jobs + - openstack-python3-wallaby-jobs - periodic-stable-jobs - publish-openstack-docs-pti - release-notes-jobs-python3 check: jobs: - - oslo.messaging-tox-py36-func-scenario01 - - oslo.messaging-tox-py36-func-scenario02: + - oslo.messaging-tox-py38-func-scenario01 + - oslo.messaging-tox-py38-func-scenario02: voting: false - - oslo.messaging-tox-py36-func-scenario03: + - oslo.messaging-tox-py38-func-scenario03: voting: false - - oslo.messaging-tox-py36-func-scenario04: + - oslo.messaging-tox-py38-func-scenario04: voting: false - oslo.messaging-src-dsvm-full-rabbit - oslo.messaging-src-dsvm-full-amqp1-hybrid: @@ -134,5 +133,5 @@ gate: jobs: - - oslo.messaging-tox-py36-func-scenario01 + - oslo.messaging-tox-py38-func-scenario01 - oslo.messaging-src-dsvm-full-rabbit diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-12.5.0/AUTHORS new/oslo.messaging-12.7.1/AUTHORS --- old/oslo.messaging-12.5.0/AUTHORS 2020-09-11 21:19:52.000000000 +0200 +++ new/oslo.messaging-12.7.1/AUTHORS 2021-02-16 10:02:14.000000000 +0100 @@ -156,6 +156,7 @@ Sean Dague <s...@dague.net> Sean McGinnis <sean.mcgin...@gmail.com> Sean McGinnis <sean.mcgin...@huawei.com> +Sean Mooney <w...@seanmooney.info> Sergey Lukjanov <slukja...@mirantis.com> Sergey Vilgelm <ser...@vilgelm.info> Shahar Lev <sha...@stratoscale.com> @@ -167,6 +168,7 @@ Takashi NATSUME <natsume.taka...@lab.ntt.co.jp> Thomas Bechtold <tbecht...@suse.com> Thomas Goirand <tho...@goirand.fr> +Thomas Goirand <z...@debian.org> Thomas Herve <the...@redhat.com> Thomas Herve <thomas.he...@enovance.com> TommyLike <tommylik...@gmail.com> @@ -236,6 +238,7 @@ venkatamahesh <venkatamaheshko...@gmail.com> wanglmopenstack <wanglm_openst...@163.com> weiweigu <gu.wei...@zte.com.cn> +xuanyandong <xuanyand...@inspur.com> yan.haifeng <yanhe...@qq.com> zhang-shaoman <zhang.shao...@zte.com.cn> zhangboye <zhangb...@inspur.com> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-12.5.0/ChangeLog new/oslo.messaging-12.7.1/ChangeLog --- old/oslo.messaging-12.5.0/ChangeLog 2020-09-11 21:19:52.000000000 +0200 +++ new/oslo.messaging-12.7.1/ChangeLog 2021-02-16 10:02:14.000000000 +0100 @@ -1,6 +1,38 @@ CHANGES ======= +12.7.1 +------ + +* Correctly handle missing RabbitMQ queues + +12.7.0 +------ + +* Deprecate the mandatory flag + +12.6.1 +------ + +* remove unicode from code +* Remove six +* Fix type of direct\_mandatory\_flag opt +* Dropping lower constraints testing +* Move jobs to py38 +* fix variable name +* Fix doc title rendering +* Use TOX\_CONSTRAINTS\_FILE +* Use py3 as the default runtime for tox + +12.6.0 +------ + +* Python 3.9: isAlive is removed +* add min of 1 to rpc\_conn\_pool\_size +* Adding pre-commit +* Add Python3 wallaby unit tests +* Update master for stable/victoria + 12.5.0 ------ @@ -9,6 +41,7 @@ 12.4.0 ------ +* Run rabbitmq heartbeat in python thread by default * Add a ping endpoint to RPC dispatcher 12.3.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-12.5.0/PKG-INFO new/oslo.messaging-12.7.1/PKG-INFO --- old/oslo.messaging-12.5.0/PKG-INFO 2020-09-11 21:19:52.000000000 +0200 +++ new/oslo.messaging-12.7.1/PKG-INFO 2021-02-16 10:02:15.136758800 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: oslo.messaging -Version: 12.5.0 +Version: 12.7.1 Summary: Oslo Messaging API Home-page: https://docs.openstack.org/oslo.messaging/latest/ Author: OpenStack diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-12.5.0/doc/source/admin/rabbit.rst new/oslo.messaging-12.7.1/doc/source/admin/rabbit.rst --- old/oslo.messaging-12.5.0/doc/source/admin/rabbit.rst 2020-09-11 21:18:07.000000000 +0200 +++ new/oslo.messaging-12.7.1/doc/source/admin/rabbit.rst 2021-02-16 10:01:45.000000000 +0100 @@ -66,7 +66,8 @@ through the *Connection* class. With mandatory flag RabbitMQ raises a callback if the message is not routed to -any queue. +any queue. This callback will be used to loop for a timeout and let's a chance +to sender to recover. .. _Exchange is a AMQP mechanism: https://www.rabbitmq.com/tutorials/amqp-concepts.html#exchanges .. _queues: https://www.rabbitmq.com/queues.html @@ -101,8 +102,8 @@ Exchange types ~~~~~~~~~~~~~~ -`direct` -^^^^^^^^ +``direct`` +^^^^^^^^^^ A direct exchange is an exchange which route messages to queues based on message routing key. Message will be directly delivered to the queue that diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-12.5.0/doc/source/conf.py new/oslo.messaging-12.7.1/doc/source/conf.py --- old/oslo.messaging-12.5.0/doc/source/conf.py 2020-09-11 21:18:07.000000000 +0200 +++ new/oslo.messaging-12.7.1/doc/source/conf.py 2021-02-16 10:01:45.000000000 +0100 @@ -1,4 +1,17 @@ # -*- coding: utf-8 -*- +# Copyright (C) 2020 Red Hat, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. # # Configuration file for the Sphinx documentation builder. # diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-12.5.0/doc/source/reference/index.rst new/oslo.messaging-12.7.1/doc/source/reference/index.rst --- old/oslo.messaging-12.5.0/doc/source/reference/index.rst 2020-09-11 21:18:07.000000000 +0200 +++ new/oslo.messaging-12.7.1/doc/source/reference/index.rst 2021-02-16 10:01:45.000000000 +0100 @@ -16,4 +16,4 @@ notification_driver notification_listener serializer - exceptions + exceptions diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-12.5.0/lower-constraints.txt new/oslo.messaging-12.7.1/lower-constraints.txt --- old/oslo.messaging-12.5.0/lower-constraints.txt 2020-09-11 21:18:07.000000000 +0200 +++ new/oslo.messaging-12.7.1/lower-constraints.txt 2021-02-16 10:01:45.000000000 +0100 @@ -66,7 +66,6 @@ requestsexceptions==1.2.0 rfc3986==0.3.1 Routes==2.3.1 -six==1.10.0 smmap==0.9.0 snowballstemmer==1.2.1 statsd==3.2.1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-12.5.0/oslo.messaging.egg-info/PKG-INFO new/oslo.messaging-12.7.1/oslo.messaging.egg-info/PKG-INFO --- old/oslo.messaging-12.5.0/oslo.messaging.egg-info/PKG-INFO 2020-09-11 21:19:52.000000000 +0200 +++ new/oslo.messaging-12.7.1/oslo.messaging.egg-info/PKG-INFO 2021-02-16 10:02:14.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: oslo.messaging -Version: 12.5.0 +Version: 12.7.1 Summary: Oslo Messaging API Home-page: https://docs.openstack.org/oslo.messaging/latest/ Author: OpenStack diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-12.5.0/oslo.messaging.egg-info/SOURCES.txt new/oslo.messaging-12.7.1/oslo.messaging.egg-info/SOURCES.txt --- old/oslo.messaging-12.5.0/oslo.messaging.egg-info/SOURCES.txt 2020-09-11 21:19:52.000000000 +0200 +++ new/oslo.messaging-12.7.1/oslo.messaging.egg-info/SOURCES.txt 2021-02-16 10:02:15.000000000 +0100 @@ -1,4 +1,5 @@ .coveragerc +.pre-commit-config.yaml .stestr.conf .zuul.yaml AUTHORS @@ -145,9 +146,11 @@ releasenotes/notes/bump-amqp-version-due-to-tls-issue-e877b152eb101c15.yaml releasenotes/notes/connection_ttl-2cf0fe6e1ab8c73c.yaml releasenotes/notes/deprecate-ZeroMQ-driver-a8af25aaba867c5b.yaml +releasenotes/notes/disable-mandatory-flag-a6210a534f3853f0.yaml releasenotes/notes/drop-python27-support-5ef2f365d8930483.yaml releasenotes/notes/fix-access_policy-deafult-a6954a147cb002b0.yaml releasenotes/notes/get_rpc_transport-4aa3511ad9754a60.yaml +releasenotes/notes/handle-missing-queue-553a803f94976be7.yaml releasenotes/notes/kafka-client-library-change-fe16d5a34550db7f.yaml releasenotes/notes/no-log-if-ignore-errors-e2223b8a646b4c40.yaml releasenotes/notes/option-rabbitmq-max_retries-has-been-deprecated-471f66a9e6d672a2.yaml @@ -158,6 +161,7 @@ releasenotes/notes/remove-ZeroMQ-driver-e9e0bbbb7bd4f5e6.yaml releasenotes/notes/remove-pika-1bae204ced2521a3.yaml releasenotes/notes/retry-support-07996ef04dda9482.yaml +releasenotes/notes/run-heartbeat-in-pthread-by-default-28637b41ebf500dc.yaml releasenotes/notes/use-extras-for-optional-deps-2a00e8007ef7a629.yaml releasenotes/source/conf.py releasenotes/source/index.rst @@ -170,6 +174,7 @@ releasenotes/source/train.rst releasenotes/source/unreleased.rst releasenotes/source/ussuri.rst +releasenotes/source/victoria.rst releasenotes/source/_static/.placeholder releasenotes/source/_templates/.placeholder releasenotes/source/locale/en_GB/LC_MESSAGES/releasenotes.po diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-12.5.0/oslo.messaging.egg-info/pbr.json new/oslo.messaging-12.7.1/oslo.messaging.egg-info/pbr.json --- old/oslo.messaging-12.5.0/oslo.messaging.egg-info/pbr.json 2020-09-11 21:19:52.000000000 +0200 +++ new/oslo.messaging-12.7.1/oslo.messaging.egg-info/pbr.json 2021-02-16 10:02:14.000000000 +0100 @@ -1 +1 @@ -{"git_version": "62e104bd", "is_release": true} \ No newline at end of file +{"git_version": "11a49a0a", "is_release": true} \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-12.5.0/oslo.messaging.egg-info/requires.txt new/oslo.messaging-12.7.1/oslo.messaging.egg-info/requires.txt --- old/oslo.messaging-12.5.0/oslo.messaging.egg-info/requires.txt 2020-09-11 21:19:52.000000000 +0200 +++ new/oslo.messaging-12.7.1/oslo.messaging.egg-info/requires.txt 2021-02-16 10:02:14.000000000 +0100 @@ -30,6 +30,7 @@ hacking<3.1.0,>=3.0.1 oslotest>=3.2.0 pifpaf>=2.2.0 +pre-commit>=2.6.0 pyngus>=2.2.0 stestr>=2.0.0 testscenarios>=0.4 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-12.5.0/oslo_messaging/_drivers/amqp1_driver/controller.py new/oslo.messaging-12.7.1/oslo_messaging/_drivers/amqp1_driver/controller.py --- old/oslo.messaging-12.5.0/oslo_messaging/_drivers/amqp1_driver/controller.py 2020-09-11 21:18:07.000000000 +0200 +++ new/oslo.messaging-12.7.1/oslo_messaging/_drivers/amqp1_driver/controller.py 2021-02-16 10:01:45.000000000 +0100 @@ -1022,9 +1022,9 @@ def _do_connect(self): """Establish connection and reply subscription on processor thread.""" host = self.hosts.current - conn_props = {'properties': {u'process': self._command, - u'pid': self._pid, - u'node': self._node}} + conn_props = {'properties': {'process': self._command, + 'pid': self._pid, + 'node': self._node}} # only set hostname in the AMQP 1.0 Open performative if the message # bus can interpret it as the virtual host. We leave it unspecified # since apparently noone can agree on how it should be used otherwise! diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-12.5.0/oslo_messaging/_drivers/amqpdriver.py new/oslo.messaging-12.7.1/oslo_messaging/_drivers/amqpdriver.py --- old/oslo.messaging-12.5.0/oslo_messaging/_drivers/amqpdriver.py 2020-09-11 21:18:07.000000000 +0200 +++ new/oslo.messaging-12.7.1/oslo_messaging/_drivers/amqpdriver.py 2021-02-16 10:01:45.000000000 +0100 @@ -145,39 +145,67 @@ while True: try: with self.listener.driver._get_connection( - rpc_common.PURPOSE_SEND) as conn: + rpc_common.PURPOSE_SEND, + ) as conn: self._send_reply(conn, reply, failure) + return - except rpc_amqp.AMQPDestinationNotFound: - if timer.check_return() > 0: - LOG.debug(("The reply %(msg_id)s cannot be sent " - "%(reply_q)s reply queue doesn't exist, " - "retrying..."), { - 'msg_id': self.msg_id, - 'reply_q': self.reply_q}) - time.sleep(0.25) - else: + except oslo_messaging.MessageUndeliverable: + # queue not found + if timer.check_return() <= 0: self._obsolete_reply_queues.add(self.reply_q, self.msg_id) - infos = { + LOG.error( + 'The reply %(msg_id)s failed to send after ' + '%(duration)d seconds due to a missing queue ' + '(%(reply_q)s). Abandoning...', { + 'msg_id': self.msg_id, + 'duration': duration, + 'reply_q': self.reply_q}) + return + + LOG.debug( + 'The reply %(msg_id)s could not be sent due to a missing ' + 'queue (%(reply_q)s). Retrying...', { 'msg_id': self.msg_id, - 'reply_q': self.reply_q, - 'duration': duration - } - LOG.info("The reply %(msg_id)s cannot be sent " - "%(reply_q)s reply queue don't exist after " - "%(duration)s sec abandoning...", infos) + 'reply_q': self.reply_q}) + time.sleep(0.25) + except rpc_amqp.AMQPDestinationNotFound as exc: + # exchange not found/down + if timer.check_return() <= 0: + self._obsolete_reply_queues.add(self.reply_q, self.msg_id) + LOG.error( + 'The reply %(msg_id)s failed to send after ' + '%(duration)d seconds due to a broker issue ' + '(%(exc)s). Abandoning...', { + 'msg_id': self.msg_id, + 'duration': duration, + 'exc': exc}) return + LOG.debug( + 'The reply %(msg_id)s could not be sent due to a broker ' + 'issue (%(exc)s). Retrying...', { + 'msg_id': self.msg_id, + 'exc': exc}) + time.sleep(0.25) + def heartbeat(self): # generate a keep alive for RPC call monitoring with self.listener.driver._get_connection( - rpc_common.PURPOSE_SEND) as conn: + rpc_common.PURPOSE_SEND, + ) as conn: try: self._send_reply(conn, None, None, ending=False) + except oslo_messaging.MessageUndeliverable: + # internal exception that indicates queue gone - + # broker unreachable. + raise MessageDeliveryFailure( + "Heartbeat send failed. Missing queue") except rpc_amqp.AMQPDestinationNotFound: - # internal exception that indicates queue/exchange gone - + # internal exception that indicates exchange gone - # broker unreachable. - raise MessageDeliveryFailure("Heartbeat send failed") + raise MessageDeliveryFailure( + "Heartbeat send failed. Missing exchange") # NOTE(sileht): Those have already be ack in RpcListener IO thread # We keep them as noop until all drivers do the same diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-12.5.0/oslo_messaging/_drivers/base.py new/oslo.messaging-12.7.1/oslo_messaging/_drivers/base.py --- old/oslo.messaging-12.5.0/oslo_messaging/_drivers/base.py 2020-09-11 21:18:07.000000000 +0200 +++ new/oslo.messaging-12.7.1/oslo_messaging/_drivers/base.py 2021-02-16 10:01:45.000000000 +0100 @@ -24,7 +24,8 @@ base_opts = [ cfg.IntOpt('rpc_conn_pool_size', default=30, deprecated_group='DEFAULT', - help='Size of RPC connection pool.'), + help='Size of RPC connection pool.', + min=1), cfg.IntOpt('conn_pool_min_size', default=2, help='The pool size limit for connections expiration policy'), cfg.IntOpt('conn_pool_ttl', default=1200, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-12.5.0/oslo_messaging/_drivers/impl_rabbit.py new/oslo.messaging-12.7.1/oslo_messaging/_drivers/impl_rabbit.py --- old/oslo.messaging-12.5.0/oslo_messaging/_drivers/impl_rabbit.py 2020-09-11 21:18:07.000000000 +0200 +++ new/oslo.messaging-12.7.1/oslo_messaging/_drivers/impl_rabbit.py 2021-02-16 10:01:45.000000000 +0100 @@ -88,14 +88,16 @@ help='SSL certification authority file ' '(valid only if SSL enabled).'), cfg.BoolOpt('heartbeat_in_pthread', - default=False, - help="EXPERIMENTAL: Run the health check heartbeat thread " - "through a native python thread. By default if this " - "option isn't provided the health check heartbeat will " - "inherit the execution model from the parent process. By " - "example if the parent process have monkey patched the " + default=True, + help="Run the health check heartbeat thread " + "through a native python thread by default. If this " + "option is equal to False then the health check " + "heartbeat will inherit the execution model " + "from the parent process. For " + "example if the parent process has monkey patched the " "stdlib by using eventlet/greenlet then the heartbeat " - "will be run through a green thread."), + "will be run through a green thread.", + deprecated_for_removal=True), cfg.FloatOpt('kombu_reconnect_delay', default=1.0, deprecated_group='DEFAULT', @@ -167,12 +169,18 @@ default=2, help='How often times during the heartbeat_timeout_threshold ' 'we check the heartbeat.'), - cfg.IntOpt('direct_mandatory_flag', - default=True, - help='Enable/Disable the RabbitMQ mandatory flag ' - 'for direct send. The direct send is used as reply, ' - 'so the MessageUndeliverable exception is raised ' - 'in case the client queue does not exist.'), + cfg.BoolOpt('direct_mandatory_flag', + default=True, + deprecated_for_removal=True, + deprecated_reason='Mandatory flag no longer deactivable.', + help='(DEPRECATED) Enable/Disable the RabbitMQ mandatory ' + 'flag for direct send. The direct send is used as reply, ' + 'so the MessageUndeliverable exception is raised ' + 'in case the client queue does not exist.' + 'MessageUndeliverable exception will be used to loop for a ' + 'timeout to lets a chance to sender to recover.' + 'This flag is deprecated and it will not be possible to ' + 'deactivate this functionality anymore'), cfg.BoolOpt('enable_cancel_on_failover', default=False, help="Enable x-cancel-on-ha-failover flag so that " @@ -510,6 +518,7 @@ # if it was already monkey patched by eventlet/greenlet. global threading threading = stdlib_threading + self.direct_mandatory_flag = driver_conf.direct_mandatory_flag if self.ssl: @@ -1259,11 +1268,11 @@ _set_current_channel is responsible to cleanup the cache. """ - queue_indentifier = (exchange.name, routing_key) + queue_identifier = (exchange.name, routing_key) # NOTE(sileht): We only do it once per reconnection # the Connection._set_current_channel() is responsible to clear # this cache - if queue_indentifier not in self._declared_queues: + if queue_identifier not in self._declared_queues: queue = kombu.entity.Queue( channel=self.channel, exchange=exchange, @@ -1277,7 +1286,7 @@ 'Connection._publish_and_creates_default_queue: ' 'declare queue %(key)s on %(exchange)s exchange', log_info) queue.declare() - self._declared_queues.add(queue_indentifier) + self._declared_queues.add(queue_identifier) self._publish(exchange, msg, routing_key=routing_key, timeout=timeout) @@ -1387,6 +1396,10 @@ # the pool configuration properties max_size = conf.oslo_messaging_rabbit.rpc_conn_pool_size min_size = conf.oslo_messaging_rabbit.conn_pool_min_size + if max_size < min_size: + raise RuntimeError( + f"rpc_conn_pool_size: {max_size} must be greater than " + f"or equal to conn_pool_min_size: {min_size}") ttl = conf.oslo_messaging_rabbit.conn_pool_ttl connection_pool = pool.ConnectionPool( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-12.5.0/oslo_messaging/rpc/server.py new/oslo.messaging-12.7.1/oslo_messaging/rpc/server.py --- old/oslo.messaging-12.5.0/oslo_messaging/rpc/server.py 2020-09-11 21:18:07.000000000 +0200 +++ new/oslo.messaging-12.7.1/oslo_messaging/rpc/server.py 2021-02-16 10:01:45.000000000 +0100 @@ -168,7 +168,7 @@ # by another exception raised by a log handler during # LOG.debug(). So keep a copy and delete it later. failure = e.exc_info - LOG.debug(u'Expected exception during message handling (%s)', e) + LOG.debug('Expected exception during message handling (%s)', e) except rpc_dispatcher.NoSuchMethod as e: failure = sys.exc_info() if e.method.endswith('_ignore_errors'): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-12.5.0/oslo_messaging/tests/drivers/test_amqp_driver.py new/oslo.messaging-12.7.1/oslo_messaging/tests/drivers/test_amqp_driver.py --- old/oslo.messaging-12.5.0/oslo_messaging/tests/drivers/test_amqp_driver.py 2020-09-11 21:18:07.000000000 +0200 +++ new/oslo.messaging-12.7.1/oslo_messaging/tests/drivers/test_amqp_driver.py 2021-02-16 10:01:45.000000000 +0100 @@ -227,7 +227,7 @@ {"msg": "value"}, wait_for_reply=False) self.assertIsNone(rc) listener.join(timeout=30) - self.assertFalse(listener.isAlive()) + self.assertFalse(listener.is_alive()) self.assertEqual({"msg": "value"}, listener.messages.get().message) predicate = lambda: (self._broker.sender_link_ack_count == 1) @@ -260,9 +260,9 @@ self.assertEqual('e2', rc.get('correlation-id')) listener1.join(timeout=30) - self.assertFalse(listener1.isAlive()) + self.assertFalse(listener1.is_alive()) listener2.join(timeout=30) - self.assertFalse(listener2.isAlive()) + self.assertFalse(listener2.is_alive()) driver.cleanup() def test_messaging_patterns(self): @@ -313,9 +313,9 @@ {"method": "echo", "id": "fanout"}) listener1.join(timeout=30) - self.assertFalse(listener1.isAlive()) + self.assertFalse(listener1.is_alive()) listener2.join(timeout=30) - self.assertFalse(listener2.isAlive()) + self.assertFalse(listener2.is_alive()) self.assertEqual(1, self._broker.fanout_count) listener1_ids = [x.message.get('id') for x in listener1.get_messages()] @@ -359,7 +359,7 @@ wait_for_reply=True, timeout=1.0) listener.join(timeout=30) - self.assertFalse(listener.isAlive()) + self.assertFalse(listener.is_alive()) driver.cleanup() def test_released_send(self): @@ -428,7 +428,7 @@ wait_for_reply=True, timeout=1.0) listener.join(timeout=30) - self.assertFalse(listener.isAlive()) + self.assertFalse(listener.is_alive()) predicate = lambda: (self._broker.sender_link_ack_count == 1) _wait_until(predicate, 30) @@ -465,7 +465,7 @@ wait_for_reply=True, timeout=5.0) listener.join(timeout=30) - self.assertFalse(listener.isAlive()) + self.assertFalse(listener.is_alive()) driver.cleanup() def test_call_reply_timeout(self): @@ -497,7 +497,7 @@ wait_for_reply=True, timeout=3) listener.join(timeout=30) - self.assertFalse(listener.isAlive()) + self.assertFalse(listener.is_alive()) driver.cleanup() def test_listener_requeue(self): @@ -515,7 +515,7 @@ self.assertIsNone(rc) listener.join(timeout=30) - self.assertFalse(listener.isAlive()) + self.assertFalse(listener.is_alive()) predicate = lambda: (self._broker.sender_link_requeue_count == 1) _wait_until(predicate, 30) @@ -564,7 +564,7 @@ _wait_until(predicate, 30) self.assertTrue(predicate()) - self.assertTrue(listener.isAlive()) + self.assertTrue(listener.is_alive()) self.assertEqual({"msg": "value"}, listener.messages.get().message) predicate = lambda: (self._broker.receiver_link_count == 0) @@ -580,7 +580,7 @@ _wait_until(predicate, 30) self.assertTrue(predicate()) - self.assertTrue(listener.isAlive()) + self.assertTrue(listener.is_alive()) self.assertEqual({"msg": "value"}, listener.messages.get().message) predicate = lambda: (self._broker.receiver_link_count == 0) @@ -606,7 +606,7 @@ self.assertIsNotNone(rc) self.assertEqual("1", rc.get('correlation-id')) listener.join(timeout=30) - self.assertFalse(listener.isAlive()) + self.assertFalse(listener.is_alive()) driver.cleanup() def test_call_monitor_bad_no_heartbeat(self): @@ -626,7 +626,7 @@ timeout=60, call_monitor_timeout=5) listener.kill() - self.assertFalse(listener.isAlive()) + self.assertFalse(listener.is_alive()) driver.cleanup() def test_call_monitor_bad_call_timeout(self): @@ -646,7 +646,7 @@ timeout=11, call_monitor_timeout=5) listener.kill() - self.assertFalse(listener.isAlive()) + self.assertFalse(listener.is_alive()) driver.cleanup() @@ -681,7 +681,7 @@ excepted_targets.append(t) listener.join(timeout=30) - self.assertFalse(listener.isAlive()) + self.assertFalse(listener.is_alive()) topics = [x.message.get('target') for x in listener.get_messages()] self.assertEqual(msg_count, len(topics)) self.assertEqual(2, topics.count('topic-1.info')) @@ -763,7 +763,7 @@ {"method": "echo"}, wait_for_reply=True) self.assertIsNotNone(rc) listener.join(timeout=30) - self.assertFalse(listener.isAlive()) + self.assertFalse(listener.is_alive()) driver.cleanup() def test_authentication_failure(self): @@ -865,7 +865,7 @@ retry=retry) self.assertIsNotNone(rc) listener.join(timeout=30) - self.assertFalse(listener.isAlive()) + self.assertFalse(listener.is_alive()) finally: driver.cleanup() @@ -949,7 +949,7 @@ def tearDown(self): super(TestFailover, self).tearDown() for broker in self._brokers: - if broker.isAlive(): + if broker.is_alive(): broker.stop() def _failover(self, fail_broker): @@ -1007,7 +1007,7 @@ self.assertEqual(1, self._brokers[self._backup].direct_count) listener.join(timeout=30) - self.assertFalse(listener.isAlive()) + self.assertFalse(listener.is_alive()) # note: stopping the broker first tests cleaning up driver without a # connection active @@ -1087,7 +1087,7 @@ listener1.join(timeout=30) listener2.join(timeout=30) - self.assertFalse(listener1.isAlive() or listener2.isAlive()) + self.assertFalse(listener1.is_alive() or listener2.is_alive()) driver.cleanup() self._brokers[1].stop() @@ -1127,7 +1127,7 @@ driver.cleanup() raise listener.join(timeout=30) - self.assertFalse(listener.isAlive()) + self.assertFalse(listener.is_alive()) self.assertEqual(listener.messages.get().message.get('method'), "echo") driver.cleanup() @@ -1193,7 +1193,7 @@ wait_for_reply=False) listener.join(timeout=30) self.assertTrue(self._broker.fanout_count == 1) - self.assertFalse(listener.isAlive()) + self.assertFalse(listener.is_alive()) self.assertEqual(listener.messages.get().message.get('method'), "echo") driver.cleanup() @@ -1208,8 +1208,8 @@ else: # unblock all link when RPC call is made link.add_capacity(10) - for l in self._blocked_links: - l.add_capacity(10) + for li in self._blocked_links: + li.add_capacity(10) self._broker.on_receiver_active = _on_active self._broker.on_credit_exhausted = lambda link: None @@ -1243,7 +1243,7 @@ self.assertEqual(rc.get('correlation-id'), 'e1') listener.join(timeout=30) self.assertTrue(self._broker.fanout_count == 3) - self.assertFalse(listener.isAlive()) + self.assertFalse(listener.is_alive()) driver.cleanup() @@ -1293,15 +1293,15 @@ {"msg": topic}, 2.0) expected.append(topic) - for l in rl: - l.join(timeout=30) + for li in rl: + li.join(timeout=30) # anycast will not evenly distribute an odd number of msgs predicate = lambda: len(expected) == (nl[0].messages.qsize() + nl[1].messages.qsize()) _wait_until(predicate, 30) - for l in nl: - l.kill(timeout=30) + for li in nl: + li.kill(timeout=30) s1_payload = [m.message.get('msg') for m in rl[0].get_messages()] s2_payload = [m.message.get('msg') for m in rl[1].get_messages()] @@ -1520,7 +1520,7 @@ self.assertEqual(rc.get('correlation-id'), 'blah') listener.join(timeout=30) finally: - self.assertFalse(listener.isAlive()) + self.assertFalse(listener.is_alive()) driver.cleanup() def test_released(self): @@ -1615,7 +1615,7 @@ wait_for_reply=True, timeout=30) listener.join(timeout=30) - self.assertFalse(listener.isAlive()) + self.assertFalse(listener.is_alive()) driver.cleanup() def test_server_ok(self): @@ -1669,7 +1669,7 @@ wait_for_reply=True, timeout=30) listener.join(timeout=30) - self.assertFalse(listener.isAlive()) + self.assertFalse(listener.is_alive()) driver.cleanup() def test_bad_server_fail(self): @@ -1723,7 +1723,7 @@ wait_for_reply=True, timeout=30) listener.join(timeout=30) - self.assertFalse(listener.isAlive()) + self.assertFalse(listener.is_alive()) driver.cleanup() def tearDown(self): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-12.5.0/oslo_messaging/tests/drivers/test_impl_rabbit.py new/oslo.messaging-12.7.1/oslo_messaging/tests/drivers/test_impl_rabbit.py --- old/oslo.messaging-12.5.0/oslo_messaging/tests/drivers/test_impl_rabbit.py 2020-09-11 21:18:07.000000000 +0200 +++ new/oslo.messaging-12.7.1/oslo_messaging/tests/drivers/test_impl_rabbit.py 2021-02-16 10:01:45.000000000 +0100 @@ -33,6 +33,7 @@ from oslo_messaging._drivers import impl_rabbit as rabbit_driver from oslo_messaging.exceptions import MessageDeliveryFailure from oslo_messaging.tests import utils as test_utils +from oslo_messaging.transport import DriverLoadFailure from unittest import mock load_tests = testscenarios.load_tests_apply_scenarios @@ -143,6 +144,20 @@ self.assertIsInstance(driver, rabbit_driver.RabbitDriver) + @mock.patch('oslo_messaging._drivers.impl_rabbit.Connection' + '.ensure_connection') + @mock.patch('oslo_messaging._drivers.impl_rabbit.Connection.reset') + def test_driver_load_max_less_than_min(self, fake_ensure, fake_reset): + self.config( + rpc_conn_pool_size=1, conn_pool_min_size=2, + group='oslo_messaging_rabbit') + self.messaging_conf.transport_url = self.transport_url + error = self.assertRaises( + DriverLoadFailure, oslo_messaging.get_transport, self.conf) + self.assertIn( + "rpc_conn_pool_size: 1 must be greater than or equal " + "to conn_pool_min_size: 2", str(error)) + class TestRabbitDriverLoadSSL(test_utils.BaseTestCase): scenarios = [ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-12.5.0/oslo_messaging/tests/functional/utils.py new/oslo.messaging-12.7.1/oslo_messaging/tests/functional/utils.py --- old/oslo.messaging-12.5.0/oslo_messaging/tests/functional/utils.py 2020-09-11 21:18:07.000000000 +0200 +++ new/oslo.messaging-12.7.1/oslo_messaging/tests/functional/utils.py 2021-02-16 10:01:45.000000000 +0100 @@ -130,7 +130,7 @@ def _stop(self): self.thread.stop() self.thread.join(timeout=30) - if self.thread.isAlive(): + if self.thread.is_alive(): raise Exception("Server did not shutdown correctly") def ping(self, ctxt): @@ -280,13 +280,13 @@ def match(self, actual): errors = InvalidDistribution(self.original, actual) - received = [[i for i in l] for l in actual] + received = [[idx for idx in act] for act in actual] def _remove(obj, lists): - for l in lists: - if obj in l: - front = l[0] - l.remove(obj) + for li in lists: + if obj in li: + front = li[0] + li.remove(obj) return front return None @@ -296,8 +296,8 @@ errors.missing += item elif item != o: errors.wrong_order.append([item, o]) - for l in received: - errors.extra += l + for li in received: + errors.extra += li return errors or None @@ -356,7 +356,7 @@ def _stop(self): self.thread.stop() self.thread.join(timeout=30) - if self.thread.isAlive(): + if self.thread.is_alive(): raise Exception("Server did not shutdown properly") def notifier(self, publisher, topics=None): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-12.5.0/oslo_messaging/tests/notify/test_listener.py new/oslo.messaging-12.7.1/oslo_messaging/tests/notify/test_listener.py --- old/oslo.messaging-12.5.0/oslo_messaging/tests/notify/test_listener.py 2020-09-11 21:18:07.000000000 +0200 +++ new/oslo.messaging-12.7.1/oslo_messaging/tests/notify/test_listener.py 2021-02-16 10:01:45.000000000 +0100 @@ -42,7 +42,7 @@ if self.thread is not None: self.thread.stop() self.thread.join(timeout=15) - ret = self.thread.isAlive() + ret = self.thread.is_alive() self.thread = None return ret return True diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-12.5.0/oslo_messaging/tests/notify/test_notifier.py new/oslo.messaging-12.7.1/oslo_messaging/tests/notify/test_notifier.py --- old/oslo.messaging-12.5.0/oslo_messaging/tests/notify/test_notifier.py 2020-09-11 21:18:07.000000000 +0200 +++ new/oslo.messaging-12.7.1/oslo_messaging/tests/notify/test_notifier.py 2021-02-16 10:01:45.000000000 +0100 @@ -1,4 +1,3 @@ - # Copyright 2013 Red Hat, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); you may diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-12.5.0/oslo_messaging/tests/test_exception_serialization.py new/oslo.messaging-12.7.1/oslo_messaging/tests/test_exception_serialization.py --- old/oslo.messaging-12.5.0/oslo_messaging/tests/test_exception_serialization.py 2020-09-11 21:18:07.000000000 +0200 +++ new/oslo.messaging-12.7.1/oslo_messaging/tests/test_exception_serialization.py 2021-02-16 10:01:45.000000000 +0100 @@ -198,9 +198,9 @@ args=[], kwargs={}, str=("Remote error: NovaStyleException test\n" - "[%r]." % u'traceback\ntraceback\n'), + "[%r]." % 'traceback\ntraceback\n'), msg=("Remote error: NovaStyleException test\n" - "[%r]." % u'traceback\ntraceback\n'), + "[%r]." % 'traceback\ntraceback\n'), remote_name='RemoteError', remote_args=(), remote_kwargs={'exc_type': 'NovaStyleException', @@ -214,9 +214,9 @@ args=[], kwargs={}, str=("Remote error: Exception test\n" - "[%r]." % u'traceback\ntraceback\n'), + "[%r]." % 'traceback\ntraceback\n'), msg=("Remote error: Exception test\n" - "[%r]." % u'traceback\ntraceback\n'), + "[%r]." % 'traceback\ntraceback\n'), remote_name='RemoteError', remote_args=(), remote_kwargs={'exc_type': 'Exception', @@ -230,9 +230,9 @@ args=[], kwargs={}, str=("Remote error: FarcicalError test\n" - "[%r]." % u'traceback\ntraceback\n'), + "[%r]." % 'traceback\ntraceback\n'), msg=("Remote error: FarcicalError test\n" - "[%r]." % u'traceback\ntraceback\n'), + "[%r]." % 'traceback\ntraceback\n'), remote_name='RemoteError', remote_args=(), remote_kwargs={'exc_type': 'FarcicalError', @@ -246,9 +246,9 @@ args=[], kwargs={'foobar': 'blaa'}, str=("Remote error: Exception test\n" - "[%r]." % u'traceback\ntraceback\n'), + "[%r]." % 'traceback\ntraceback\n'), msg=("Remote error: Exception test\n" - "[%r]." % u'traceback\ntraceback\n'), + "[%r]." % 'traceback\ntraceback\n'), remote_name='RemoteError', remote_args=(), remote_kwargs={'exc_type': 'Exception', @@ -262,9 +262,9 @@ args=[], kwargs={}, str=("Remote error: SystemExit test\n" - "[%r]." % u'traceback\ntraceback\n'), + "[%r]." % 'traceback\ntraceback\n'), msg=("Remote error: SystemExit test\n" - "[%r]." % u'traceback\ntraceback\n'), + "[%r]." % 'traceback\ntraceback\n'), remote_name='RemoteError', remote_args=(), remote_kwargs={'exc_type': 'SystemExit', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-12.5.0/releasenotes/notes/disable-mandatory-flag-a6210a534f3853f0.yaml new/oslo.messaging-12.7.1/releasenotes/notes/disable-mandatory-flag-a6210a534f3853f0.yaml --- old/oslo.messaging-12.5.0/releasenotes/notes/disable-mandatory-flag-a6210a534f3853f0.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/oslo.messaging-12.7.1/releasenotes/notes/disable-mandatory-flag-a6210a534f3853f0.yaml 2021-02-16 10:01:45.000000000 +0100 @@ -0,0 +1,5 @@ +--- +upgrade: + - | + Deprecating the ``direct_mandatory_flag``. It will not be possible to + deactivate this functionality anymore. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-12.5.0/releasenotes/notes/handle-missing-queue-553a803f94976be7.yaml new/oslo.messaging-12.7.1/releasenotes/notes/handle-missing-queue-553a803f94976be7.yaml --- old/oslo.messaging-12.5.0/releasenotes/notes/handle-missing-queue-553a803f94976be7.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/oslo.messaging-12.7.1/releasenotes/notes/handle-missing-queue-553a803f94976be7.yaml 2021-02-16 10:01:45.000000000 +0100 @@ -0,0 +1,5 @@ +--- +features: + - | + Adding retry strategy based on the mandatory flag. Missing exchanges and + queues are now identified separately for logging purposes. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-12.5.0/releasenotes/notes/run-heartbeat-in-pthread-by-default-28637b41ebf500dc.yaml new/oslo.messaging-12.7.1/releasenotes/notes/run-heartbeat-in-pthread-by-default-28637b41ebf500dc.yaml --- old/oslo.messaging-12.5.0/releasenotes/notes/run-heartbeat-in-pthread-by-default-28637b41ebf500dc.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/oslo.messaging-12.7.1/releasenotes/notes/run-heartbeat-in-pthread-by-default-28637b41ebf500dc.yaml 2021-02-16 10:01:45.000000000 +0100 @@ -0,0 +1,10 @@ +--- +upgrade: + - | + The ``[oslo_messaging_rabbit] heartbeat_in_pthread`` config option now + defaults to ``True``. + Applications will run RabbitMQ heartbeat in a Python thread by default. +deprecations: + - | + ``heartbeat_in_pthread`` has been deprecated and will be removed in a + future release. If configured, this option should be unset. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-12.5.0/releasenotes/source/conf.py new/oslo.messaging-12.7.1/releasenotes/source/conf.py --- old/oslo.messaging-12.5.0/releasenotes/source/conf.py 2020-09-11 21:18:07.000000000 +0200 +++ new/oslo.messaging-12.7.1/releasenotes/source/conf.py 2021-02-16 10:01:45.000000000 +0100 @@ -27,7 +27,7 @@ # -- Project information -------------------------------------------------- # General information about the project. -copyright = u'2016, oslo.messaging Developers' +copyright = '2016, oslo.messaging Developers' # Release notes do not need a version in the title, they span # multiple versions. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-12.5.0/releasenotes/source/index.rst new/oslo.messaging-12.7.1/releasenotes/source/index.rst --- old/oslo.messaging-12.5.0/releasenotes/source/index.rst 2020-09-11 21:18:07.000000000 +0200 +++ new/oslo.messaging-12.7.1/releasenotes/source/index.rst 2021-02-16 10:01:45.000000000 +0100 @@ -6,6 +6,7 @@ :maxdepth: 1 unreleased + victoria ussuri train stein diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-12.5.0/releasenotes/source/victoria.rst new/oslo.messaging-12.7.1/releasenotes/source/victoria.rst --- old/oslo.messaging-12.5.0/releasenotes/source/victoria.rst 1970-01-01 01:00:00.000000000 +0100 +++ new/oslo.messaging-12.7.1/releasenotes/source/victoria.rst 2021-02-16 10:01:45.000000000 +0100 @@ -0,0 +1,6 @@ +============================= +Victoria Series Release Notes +============================= + +.. release-notes:: + :branch: stable/victoria diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-12.5.0/test-requirements.txt new/oslo.messaging-12.7.1/test-requirements.txt --- old/oslo.messaging-12.5.0/test-requirements.txt 2020-09-11 21:18:07.000000000 +0200 +++ new/oslo.messaging-12.7.1/test-requirements.txt 2021-02-16 10:01:45.000000000 +0100 @@ -7,6 +7,7 @@ fixtures>=3.0.0 # Apache-2.0/BSD stestr>=2.0.0 # Apache-2.0 +pre-commit>=2.6.0 # MIT testscenarios>=0.4 # Apache-2.0/BSD testtools>=2.2.0 # MIT oslotest>=3.2.0 # Apache-2.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-12.5.0/tools/simulator.py new/oslo.messaging-12.7.1/tools/simulator.py --- old/oslo.messaging-12.5.0/tools/simulator.py 2020-09-11 21:18:07.000000000 +0200 +++ new/oslo.messaging-12.7.1/tools/simulator.py 2021-02-16 10:01:45.000000000 +0100 @@ -1,3 +1,4 @@ +#!/usr/bin/env python3 # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at @@ -10,8 +11,12 @@ # License for the specific language governing permissions and limitations # under the License. -import eventlet # noqa -eventlet.monkey_patch() # noqa +try: + # Avoid https://github.com/PyCQA/pycodestyle/issues/472 + import eventlet + eventlet.monkey_patch() +except ImportError: + raise import argparse import bisect diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.messaging-12.5.0/tox.ini new/oslo.messaging-12.7.1/tox.ini --- old/oslo.messaging-12.5.0/tox.ini 2020-09-11 21:18:07.000000000 +0200 +++ new/oslo.messaging-12.7.1/tox.ini 2021-02-16 10:01:45.000000000 +0100 @@ -1,6 +1,6 @@ [tox] minversion = 3.1 -envlist = py38,pep8 +envlist = py3,pep8 ignore_basepython_conflict = true [testenv] @@ -12,14 +12,14 @@ REQUIREMENTS_PIP_LOCATION install_command = pip install {opts} {packages} deps = - -c{env:UPPER_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master} + -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master} -r{toxinidir}/test-requirements.txt -r{toxinidir}/requirements.txt commands = stestr run --slowest {posargs} [testenv:pep8] commands = - flake8 + pre-commit run -a # run security linter bandit -r oslo_messaging -x tests -n5 @@ -54,22 +54,19 @@ # scenario03 amqp rabbit # scenario04 amqp kafka # -[testenv:py36-func-scenario01] -basepython = python3.6 +[testenv:py38-func-scenario01] setenv = {[testenv]setenv} SCENARIO=scenario01 commands = {toxinidir}/tools/setup-scenario-env.sh stestr run --slowest {posargs:oslo_messaging.tests.functional} -[testenv:py36-func-scenario02] -basepython = python3.6 +[testenv:py38-func-scenario02] setenv = {[testenv]setenv} SCENARIO=scenario02 commands = {toxinidir}/tools/setup-scenario-env.sh stestr run --slowest {posargs:oslo_messaging.tests.functional} -[testenv:py36-func-scenario03] -basepython = python3.6 +[testenv:py38-func-scenario03] setenv = {[testenv]setenv} SCENARIO=scenario03 @@ -77,8 +74,7 @@ WORKDIR={toxworkdir} commands = {toxinidir}/tools/setup-scenario-env.sh stestr run --slowest {posargs:oslo_messaging.tests.functional} -[testenv:py36-func-scenario04] -basepython = python3.6 +[testenv:py38-func-scenario04] setenv = {[testenv]setenv} SCENARIO=scenario04