summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Merge "amqp1: fix race when reconnecting" into stable/xenaxena-em12.9.4stable/xenaZuul2022-04-081-1/+2
|\
| * amqp1: fix race when reconnectingJohn Eckersberg2021-12-151-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently this is how reconnect works: - pyngus detects failure and invokes callback Controller.connection_failed() which in turn calls Controller._handle_connection_loss() - The first thing that _handle_connection_loss does is to set self.addresser to None (important later) - Then it defers _do_reconnect after a delay (normally 1 second) - (1 second passes) - _do_reconnect calls _hard_reset which resets the controller state However, there is a race here. This can happen: - The above, up until it defers and waits for 1 second - Controller.send() is invoked on a task - A new Sender is created, and critically because self.reply_link still exists and is active, we call sender.attach and pass in self.addresser. Remember _handle_connection_loss sets self.addresser to None. - Eventually Sender.attach throws an AttributeError because it attempts to call addresser.resolve() but addresser is None The reason this happens is because although the connection is dead, the controller state is still half-alive because _hard_reset hasn't been called yet since it's deferred one second in _do_reconnect. The fix here is to move _hard_reset out of _do_reconnect and directly into _handle_connection_loss. The eventloop is woken up immediately to process _hard_reset but _do_reconnect is still deferred as before so as to retain the desired reconnect backoff behavior. Closes-Bug: #1941652 Change-Id: Ife62a7d76022908f0dc6a77f1ad607cb2fbd3e8f (cherry picked from commit 02a38f507d8f0c377a2ef468e3497b5e897f1b09)
* | [rabbit] use retry parameters during notification sending12.9.3Balazs Gibizer2022-01-138-26/+60
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The rabbit backend now applies the [oslo_messaging_notifications]retry, [oslo_messaging_rabbit]rabbit_retry_interval, rabbit_retry_backoff and rabbit_interval_max configuration parameters when tries to establish the connection to the message bus during notification sending. This patch also clarifies the differences between the behavior of the kafka and the rabbit drivers in this regard. Closes-Bug: #1917645 Change-Id: Id4ccafc95314c86ae918336e42cca64a6acd4d94 (cherry picked from commit 7b3968d9b012e873a9b393fcefa578c46fca18c6)
* | Reproduce bug 1917645Balazs Gibizer2022-01-131-0/+68
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The [oslo_messaging_notification]retry parameter is not applied during connecting to the message bus. But the documentation implies it should[1][2]. The two possible drivers, rabbit and kafka, behaves differently. 1) The rabbit driver will retry the connection forever, blocking the caller process. 2) The kafka driver also ignores the retry configuration but the notifier call returns immediately even if the notification is not (cannot) be delivered. This patch adds test cases to show the wrong behavior. [1] https://docs.openstack.org/oslo.messaging/latest/configuration/opts.html#oslo_messaging_notifications.retry [2] https://github.com/openstack/oslo.messaging/blob/feb72de7b81e3919dedc697f9fb5484a92f85ad8/oslo_messaging/notify/messaging.py#L31-L36 Related-Bug: #1917645 Change-Id: Id8557050157aecd3abd75c9114d3fcaecdfc5dc9 (cherry picked from commit 1db6de63a86812742cbc37a0f5fe1fd7a095dd7f)
* | use message id cache for RPC listener12.9.2Nikita Kalyanov2021-09-142-1/+61
| | | | | | | | | | | | | | | | | | | | | | | | | | Return back the message id cache feature to RPC listener, it was removed while refactoring in I708c3d6676b974d8daac6817c15f596cdf35817b See attached bug for more info. We should not raise DuplicateMessageError to avoid rejecting the previously ACK'ed message. Closes-Bug: #1935883 Change-Id: Ie237e9e3fdc3fc27b3deb18b94751cdc3afd190e (cherry picked from commit 129c223307141be1bc767dfca704b06192458d5b)
* | limit maximum timeout in the poll loopNikita Kalyanov2021-09-142-2/+29
|/ | | | | | | | | | | | | | | We should properly limit the maximum timeout with a 'min' to avoid long delays before message processing. Such delays may happen if the connection to a RabbitMQ server is re-established at the same time when the message arrives (see attached bug for more info). Moreover, this change is in line with the original intent to actually have an upper limit on maximum possible timeout (see comments in code and in the original review). Closes-Bug: #1935864 Change-Id: Iebc8a96e868d938a5d250bf9d66d20746c63d3d5 (cherry picked from commit bdcf915e788bb368774e5462ccc15e6f5b7223d7)
* Update TOX_CONSTRAINTS_FILE for stable/xenaOpenStack Release Bot2021-09-101-1/+1
| | | | | | | | | | | | Update the URL to the upper-constraints file to point to the redirect rule on releases.openstack.org so that anyone working on this branch will switch to the correct upper-constraints list automatically when the requirements repository branches. Until the requirements repository has as stable/xena branch, tests will continue to use the upper-constraints list on master. Change-Id: I11f9be64360191590c04c2eae245b45cf98e831b
* Update .gitreview for stable/xenaOpenStack Release Bot2021-09-101-0/+1
| | | | Change-Id: Ie0a6b96bf1b4fd214fe8c9da7f58ac0c29405da1
* amqp1: Do not reuse _socket_connection on reconnect12.9.1John Eckersberg2021-08-102-8/+37
| | | | | | | | | | | | | | | | | | Each _SocketConnection object is unique per-peer. For example, the properties attribute may contain keys such as 'x-ssl-peer-name'. Reusing the existing _socket_connection during failover will cause the TLS handshake to fail since the peer name will not match. There is potential for other similar-yet-unexplored bad things to happen as well. Instead, reconnect by waking up the eventloop via the _do_reconnect method, which reconstructs the connection properties to reflect the new (failed-over-to) host and ultimately crates a new _SocketConnection (or re-uses a *valid* old one) in eventloop.Thread.connect(). Closes-Bug: #1938945 Change-Id: I0c8dc447f4dc8d0d08c312a1f3e6fa1745fb69fd
* amqp1: re-organize TestFailover to be reused by TestSSLJohn Eckersberg2021-08-101-7/+13
| | | | | | | | | | This breaks out the generation of brokers and transport_url into separate methods. These methods are used in the next patch in this series, where TestSSL is updated to inherit from TestFailover, and TestSSL overrides the _gen_brokers and _gen_transport_url methods to supply the necessary SSL-aware options. Change-Id: Ia2f977795abc2e81a996e299867e05d41057f33f
* Revert "Disable AMQP 1.0 SSL unit tests"John Eckersberg2021-08-101-2/+1
| | | | | | | | This reverts commit 8f5cfda6642ea7f75206d3183c2507e2e83c5693. Reason for revert: This was supposed to be temporary to unblock the gate. Whatever broke SSL cert generation in the first place appears to be fixed because I can run SSL tests now. Change-Id: I4f286cf3af0d578f472b84fe355c812910c7a121
* Merge "Changed minversion in tox to 3.18.0"12.9.0Zuul2021-08-101-3/+3
|\
| * Changed minversion in tox to 3.18.0yangyawei2021-06-071-3/+3
| | | | | | | | | | | | | | | | The patch bumps min version of tox to 3.18.0 in order to replace tox's whitelist_externals by allowlist_externals option: https://github.com/tox-dev/tox/blob/master/docs/changelog.rst#v3180-2020-07-23 Change-Id: If129b56be47952d018b9f6024d2a192950c1a974
* | Merge "Remove the oslo_utils.fnmatch"Zuul2021-06-251-1/+1
|\ \
| * | Remove the oslo_utils.fnmatchdengzhaosen2021-05-111-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Oslo.utils's fnmatch module was added to fix the py2.7 fnmatch module who was not thread safe [1]. Python 2.7 is no longer supported so now we can use the stdlib's fnmatch module and deprecate the one of oslo.utils. [1] https://bugs.python.org/issue23191$ Change-Id: Id5381a0a5216783f0df594b126786947db16a8d1
* | | Merge "Add Support For oslo.metrics"Zuul2021-06-107-17/+360
|\ \ \ | |_|/ |/| |
| * | Add Support For oslo.metricsChing Kuo2021-06-087-17/+360
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit added support to send rpc metrics to oslo.metrics. Changes includes: - Adding client wrapper for oslo.metrics to process metrics information and send to oslo.metrics socket - Modify rpc client to send metric when certain rpc events happens For more information on oslo.metrics https://opendev.org/openstack/oslo.metrics Change-Id: Idf8cc0e52ced1f697ac4048655eff4c956fd5c79
* | | Merge "Upgrade the pre-commit-hooks version"Zuul2021-05-261-1/+1
|\ \ \
| * | | Upgrade the pre-commit-hooks versionwu.shiming2021-05-181-1/+1
| |/ / | | | | | | | | | | | | | | | [1] https://github.com/pre-commit/pre-commit-hooks/commit/9136088a246768144165fcc3ecc3d31bb686920a Change-Id: Ifbea6ef06e230127bfa16fc3dc0ddd9f236cfbed
* | | setup.cfg: Replace dashes with underscoresyangyawei2021-05-131-4/+4
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Setuptools v54.1.0 introduces a warning that the use of dash-separated options in 'setup.cfg' will not be supported in a future version [1]. Get ahead of the issue by replacing the dashes with underscores. Without this, we see 'UserWarning' messages like the following on new enough versions of setuptools: UserWarning: Usage of dash-separated 'description-file' will not be supported in future versions. Please use the underscore name 'description_file' instead [1] https://github.com/pypa/setuptools/commit/a2e9ae4cb Change-Id: I6e015bf3955e3ff7aa21bc86d3f6f69e0017ca29
* | Remove references to 'sys.version_info'12.8.0Jorhson Deng2021-04-281-12/+1
| | | | | | | | | | | | We support Python 3.6 as a minimum now, making these checks no-ops. Change-Id: I2cd6d5272eeacbda91e389efb1cfaaadf376d767
* | Merge "Fix formatting of release list"Zuul2021-04-161-13/+13
|\ \
| * | Fix formatting of release listPierre Riteau2021-04-161-13/+13
| | | | | | | | | | | | Change-Id: I1f859a964de7f96e5decdec0977faa355b6a2a60
* | | Merge "bindep: Add 'librdkafka-dev' dependency"Zuul2021-04-161-0/+1
|\ \ \ | |/ / |/| |
| * | bindep: Add 'librdkafka-dev' dependencyStephen Finucane2020-06-021-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We're seeing the following in our build logs: In file included from confluent_kafka/src/confluent_kafka.c:17:0: confluent_kafka/src/confluent_kafka.h:22:10: fatal error: librdkafka/rdkafka.h: No such file or directory #include <librdkafka/rdkafka.h> ^~~~~~~~~~~~~~~~~~~~~~ compilation terminated. error: command 'x86_64-linux-gnu-gcc' failed with exit status 1 Resolve this by installing the development headers. Change-Id: Idda79dc87bcd0e3367a6abd1b52104c000ad1dcd Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
* | | Merge "Add Python3 xena unit tests"Zuul2021-04-151-1/+1
|\ \ \
| * | | Add Python3 xena unit testsOpenStack Release Bot2021-03-181-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is an automatically generated patch to ensure unit testing is in place for all the of the tested runtimes for xena. See also the PTI in governance [1]. [1]: https://governance.openstack.org/tc/reference/project-testing-interface.html Change-Id: I0be0881612b74a6d003616ee7747e303939be11f
* | | | Merge "Update master for stable/wallaby"Zuul2021-04-152-0/+7
|\ \ \ \ | |/ / /
| * | | Update master for stable/wallabyOpenStack Release Bot2021-03-182-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add file to the reno documentation build to show release notes for stable/wallaby. Use pbr instruction to increment the minor version number automatically so that master versions are higher than the versions on stable/wallaby. Sem-Ver: feature Change-Id: I2deb189cfdd7420e69060cd89c45b03b43c211af
* | | | Move flake8 as a pre-commit local target.Kenneth Giusti2021-04-131-2/+6
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The goal here is to avoid conflicts between flake8 and hacking version each 2 days. Inspired from nova's approach[1]. The flake8 version to install will be determined by hacking and requirements[2] will stay aligned instead of relying on different versions. [1] https://opendev.org/openstack/nova/src/branch/master/.pre-commit-config.yaml#L26-L35 [2] https://opendev.org/openstack/hacking/src/branch/master/requirements.txt#L1 Co-authored-by: Daniel Bengtsson <dbengt@redhat.com> Change-Id: I3d2e95c783cb0ca88ea8657acd9f262ea9244e9d
* | | Merge "Remove lower constraints."Zuul2021-02-122-88/+0
|\ \ \
| * | | Remove lower constraints.Daniel Bengtsson2021-02-052-88/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove the lower constraints file and the tox environment for lower constraints. Change-Id: Iefa00bee6f67e9e82f0c703a7aff144c0dcbe1ec
* | | | Merge "Correctly handle missing RabbitMQ queues"12.7.1Zuul2021-02-094-21/+58
|\ \ \ \ | |/ / / |/| | |
| * | | Correctly handle missing RabbitMQ queuesHervé Beraud2021-02-044-21/+58
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, setting the '[oslo_messaging] direct_mandatory_flag' config option to 'True' (the default) will result in a 'MessageUndeliverable' exception being raised when sending a reply if a RabbitMQ queue is missing [1]. It was the responsibility of the application to handle this exception, however, many applications are not doing so. This has resulted in a number of bug reports. Start handling this error condition, using a retry loop to attempt to resend the message and work around any temporary glitches. Since attempting to send a reply will will no longer raise an exception, there is little benefit in retaining the '[oslo_messaging] direct_mandatory_flag' config option: users setting this to False will simply not benefit from the retry logic and improved logging added here. This option is already deprecated though and will be fully removed in a future release. [1] https://www.rabbitmq.com/channels.html Change-Id: Id5cddbefbe24ef100f1cc522f44430df77d217cb Closes-Bug: #1905965
* | | | Merge "Move jobs to py38"Zuul2021-02-032-25/+21
|\ \ \ \
| * | | | Move jobs to py38Hervé Beraud2020-12-162-25/+21
| | | | | | | | | | | | | | | | | | | | Change-Id: I5e7e3f84519770e39754338ea4968fa6cd3ee6f6
* | | | | Merge "remove unicode from code"Zuul2021-02-034-15/+15
|\ \ \ \ \
| * | | | | remove unicode from codexuanyandong2021-01-034-15/+15
| | | | | | | | | | | | | | | | | | | | | | | | Change-Id: Ib2b816728307166450a4cea2ccdb3c4b550a0713
* | | | | | Merge "Remove six"Zuul2021-02-031-1/+0
|\ \ \ \ \ \ | |/ / / / / | | | / / / | |_|/ / / |/| | | |
| * | | | Remove sixxuanyandong2021-01-021-1/+0
| |/ / / | | | | | | | | | | | | Change-Id: I9ac8671d9a37c218cb0e5546eb6dbcec7a7a764e
* | | | Merge "Deprecate the mandatory flag"12.7.0Zuul2021-02-012-3/+12
|\ \ \ \
| * | | | Deprecate the mandatory flagHervé Beraud2021-02-012-3/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It will not be possible to deactivate this functionality anymore. Change-Id: I1cbafff03349f7da9224de46285707fbf2a81a68
* | | | | Merge "Use py3 as the default runtime for tox"Zuul2021-01-181-1/+1
|\ \ \ \ \
| * | | | | Use py3 as the default runtime for toxHervé Beraud2020-11-041-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Moving on py3 as the default runtime for tox to avoid to update this at each new cycle. Wallaby support officially the following runtimes [1]: - Python 3.6 - Python 3.8 During Victoria Python 3.7 was used as the default runtime [2] however this version isn't longer officially supported. [1] https://governance.openstack.org/tc/reference/runtimes/wallaby.html#python-runtimes-for-wallaby [2] https://governance.openstack.org/tc/reference/runtimes/victoria.html#python-runtimes-for-victoria Change-Id: I2c517401aa1ae464e6563800ecb0a459076655b3
* | | | | | Merge "fix variable name"12.6.1Zuul2021-01-081-3/+3
|\ \ \ \ \ \
| * | | | | | fix variable nameHervé Beraud2020-12-111-3/+3
| | |_|/ / / | |/| | | | | | | | | | | | | | | | Change-Id: I6039d09533c86d651b5c63b500058aac3c9f0a7f
* | | | | | Merge "Use TOX_CONSTRAINTS_FILE"Zuul2021-01-081-1/+1
|\ \ \ \ \ \ | |_|_|/ / / |/| | | | |
| * | | | | Use TOX_CONSTRAINTS_FILEHervé Beraud2020-11-041-1/+1
| | |/ / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | UPPER_CONSTRAINTS_FILE is old name and deprecated This allows to use upper-constraints file as more readable way instead of UPPER_CONSTRAINTS_FILE=<lower-constraints file>. [1] https://review.opendev.org/#/c/722814/ [2] https://zuul-ci.org/docs/zuul-jobs/python-roles.html#rolevar-tox.tox_constraints_file Change-Id: I93bab5b1e77e720cbf308a97a9605a9dc98025a0
* | | | | Merge "Fix type of direct_mandatory_flag opt"Zuul2021-01-061-6/+6
|\ \ \ \ \
| * | | | | Fix type of direct_mandatory_flag optBen Nemec2020-12-221-6/+6
| | |/ / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | An IntOpt with a default of True is invalid. I'm a little surprised this doesn't fail a defaults check somewhere, but it needs to be fixed regardless. Looking at where it is used, it appears the boolean type is correct. This just changes the opt type to BoolOpt to match. Change-Id: I01a38754a31c891f2b3b9c7f8135690693df5d13 Closes-Bug: 1909036