New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
py3.7 deadlock with monkeypatch of stdlib thread modules + use of ThreadPoolExecutor #508
Comments
Eventlet and asyncio solve same problem. Why would you want concurrent.futures and eventlet in same application? |
@temoto I'll pose that question to folks from affected upstream projects who are more knowledgeable than I am. I'm just trying to get this packaged for Ubuntu. |
I've posed some questions upstream on the openstack-dev mailing list. You can follow along here: http://lists.openstack.org/pipermail/openstack-dev/2018-July/132473.html Note that further testing has shown that https://docs.openstack.org/futurist/latest/reference/index.html#futurist.GreenThreadPoolExecutor does not deadlock. |
Thank you. Is |
#An idea (it's ok if it gets shot down), but it might be useful to suck |
@harlowja thank you, I absolutely agree that we should host eventlet related hacks in eventlet source tree. |
Cool, feel free to take it (if u want); just let me know if/when that happens (likely futurist will have to proxy to that new implementation for some time for deprecation purposes). |
python3.7 and eventlet cause the `future.ThreadPoolExecutor` to hang indefinitely. Moving to `futurist.GreenThreadPoolExecutor` allows the `designate-worker` process to use native eventlet greenthreads, which bypasses the hanging issue. Closes-Bug: #1782647 Related-Bug: https://bugs.python.org/issue34173 Related-Bug: eventlet/eventlet#508 Change-Id: I36c79ca72635d81cfcc8d3cc87b1bc5e0657d9e8 Signed-off-by: Graham Hayes <gr@ham.ie>
Based on eventlet issue [1] ThreadPoolExecutor doesn't play nice with eventlet in python 3.7. We saw deadlocks in the functional-py37 execution in live migration tests due to live migration using ThreadPoolExecutor. The [1] suggests to replaces ThreadPoolExecutor with futurist.GreenThreadPoolExecutor to avoid deadlocks. So this patch does the replacement and adjusts the unit tests accordingly. As the ThreadPoolExecutor was the last used class from the futures module we remove that from the requirements and add the futurist module instead. [1] eventlet/eventlet#508 Change-Id: Ia56ab43be739e677760bbad5c40caad924425fa5
* Update designate from branch 'master' - Merge "Fix test failures for new dnspython module" - Merge "Add blueprint in README.rst" - Fix test failures for new dnspython module Release dnspython==1.16.0 has fixed a bug which didn't apply the zone default TTL to records without an explicit TTL. Since there doesn't seem to be a way to accomodate both the old and new behaviour in our tests, set an explicit TTL for all our sample records. Change-Id: I2d4cd55b69da696a9d4b25213969248a4c2e6119 - Imported Translations from Zanata For more information about this automatic import see: https://docs.openstack.org/i18n/latest/reviewing-translation-import.html Change-Id: I63154423204632d0f0d6b756ad9d3cc7a90a894f - Change openstack-dev to openstack-discuss Mailinglists have been updated. Openstack-discuss replaces openstack-dev. Change-Id: I429898c6f3a65a3287aa33a401911f3d1dcfc65a - Fix the record_types for CAA and NAPTR Co-Authored-By: Jake Yip <jake.yip@unimelb.edu.au> Change-Id: Ie064cb1212e960700ef24fa3ae7bde18e56eeedc - Imported Translations from Zanata For more information about this automatic import see: https://docs.openstack.org/i18n/latest/reviewing-translation-import.html Change-Id: I97e0d616b5fae021db4725aa1a9e6f7557809599 - Imported Translations from Zanata For more information about this automatic import see: https://docs.openstack.org/i18n/latest/reviewing-translation-import.html Change-Id: Ie576daf140a81f8da11faa26bbc01efaf88b22fa - Merge "Standardize colorized logging" - Merge "CAA DNS records" - Merge "NAPTR DNS records" - Add blueprint in README.rst add blueprint int readme.rst Change-Id: I0fb02b5af9212fa31d78c028992c7b971d0792c8 - Imported Translations from Zanata For more information about this automatic import see: https://docs.openstack.org/i18n/latest/reviewing-translation-import.html Change-Id: Ie9dc15999432ced927b7aad8a8193bde6ec3d90f - CAA DNS records This patchset adds support for DNS CAA (Certification Authority Authorization) Resource Record which is described in RFC 6844 (https://tools.ietf.org/html/rfc6844) Change-Id: If9619096f1706d1123895b63b9129b9ffd4fb320 Closes-Bug: 1787552 - Merge "Add openstack-python37-jobs template" - Merge "Imported Translations from Zanata" - NAPTR DNS records This patchset adds support for DNS NAPTR (Naming Authority Pointer) Resource Record which is described in RFC 2915 (https://tools.ietf.org/html/rfc2915) Change-Id: Ic7d26a6c653ce46e67438e983476782edd6ec890 Closes-Bug: 1779850 - Imported Translations from Zanata For more information about this automatic import see: https://docs.openstack.org/i18n/latest/reviewing-translation-import.html Change-Id: I33df114dce55ef18e3b38d0200b10d23c29a55ce - Standardize colorized logging Change-Id: Ic479f467cad40a57d6b0e2dd866ee631b91da2c6 - Replace deprecated "decodestring()" "decodestring()" is deprecated alias of "decodebytes()" https://docs.python.org/3/library/base64.html#base64.decodestring This patch replaces "base64.decodestring" with "oslo_serialization.base64.decode_as_bytes". The same has been done for nova: https://review.openstack.org/#/c/610401/ Change-Id: I604afb9cd34b7ff6695031dc271930e49ed80bcf - Merge "Move to GreenThreadPoolExecutor" - Add openstack-python37-jobs template Make sure that we are testing with the latest python version, too. We should also add a functional job running with py37. Change-Id: If6c2cd41ec39f15682ea6385ccbb5cfc8551689a - Move to GreenThreadPoolExecutor python3.7 and eventlet cause the `future.ThreadPoolExecutor` to hang indefinitely. Moving to `futurist.GreenThreadPoolExecutor` allows the `designate-worker` process to use native eventlet greenthreads, which bypasses the hanging issue. Closes-Bug: #1782647 Related-Bug: https://bugs.python.org/issue34173 Related-Bug: eventlet/eventlet#508 Change-Id: I36c79ca72635d81cfcc8d3cc87b1bc5e0657d9e8 Signed-off-by: Graham Hayes <gr@ham.ie> - Increment versioning with pbr instruction With moving away from required milestone releases, the version numbers calculated by PBR on the master branch will not work for those testing upgrades from the last stable release. More details can be found in the mailing list post here: http://lists.openstack.org/pipermail/openstack-dev/2018-October/135706.html This is an empty commit that will cause PBR to increment its calculated version to get around this. PBR will see the following which will cause it to increment the version: Sem-Ver: feature Please merge this patch as soon as possible to support those testing upgrades. Change-Id: I3e6e122655455b249a7fdc03514643f167521497 Signed-off-by: Sean McGinnis <sean.mcginnis@gmail.com> - Update sphinx extension logging Sphinx 1.6 deprecated using the application object to perform logging and it will be removed in the upcoming 2.0 release. This updates our extensions to use the recommended sphinx.util.logging instead. Change-Id: I0b4d0d66ad60ff8e9b2d7de70d9858bd6ca5efa6 Signed-off-by: Sean McGinnis <sean.mcginnis@gmail.com> - Merge "Fixing RabbitMQ gate timeouts" - Don't quote {posargs} in tox.ini Quotes around {posargs} cause the entire string to be combined into one arg that gets passed to stestr. This prevents passing multiple args (e.g. '--concurrency=16 some-regex') Change-Id: Ia9cf4ec0b6cd5addb81dd1ff31d7e930040ddc44 - Fixing RabbitMQ gate timeouts - Raised rpc timeout from 5s to 60s (default). Change-Id: Ib5ffdd7f5a3e09b394b05a396e91148c869ab0b9 - Merge "Add top-level CLI reference page in docs" - Merge "Fix venv target for creating release notes" - Merge "Worker should send NOTIFY also to all servers in 'also_notifies' pool settings." - Add top-level CLI reference page in docs This creates the top-level cli/ reference in the docs and moves the designate-manage docs to that CLI reference. A redirect is added for sending old links to the new home for the designate-manage.html page. We'll build on this to add docs for the new designate-status upgrade check command. Change-Id: Ic05bc343131651edc7379976fdc877cfb286e310 - Fix venv target for creating release notes Without doc/requirements.txt in the venv target you can't create release notes by doing: tox -e venv -- reno new <slug> This fixes the venv target dependencies to do that. Change-Id: Ia4b0311755fe30a79bdb529dcea4ae21efd57c8a - Imported Translations from Zanata For more information about this automatic import see: https://docs.openstack.org/i18n/latest/reviewing-translation-import.html Change-Id: I637935e527a090e7e5e8d5529b173f942d5bdffd - Imported Translations from Zanata For more information about this automatic import see: https://docs.openstack.org/i18n/latest/reviewing-translation-import.html Change-Id: Ib107d8076150b35d8fe90a3c98ec9460ca505849 - Merge "Remove -u root as mysql is executed with root user" - Merge "Use templates for cover and lower-constraints" - Merge "Add docs for project-id verification feature" - Merge "Imported Translations from Zanata" - Fixing Python 3.x issues introduced with eventlet update Closes-Bug: #1792671 Change-Id: Iecef0977a1e4c102bd85b0d9c27a8d37dcd3ee17 - Imported Translations from Zanata For more information about this automatic import see: https://docs.openstack.org/i18n/latest/reviewing-translation-import.html Change-Id: I38e17af7ab0bb27bf12317a7e3f65902f7701419 - Use templates for cover and lower-constraints Use openstack-tox-cover template, this runs the cover job as non-voting in the check queue only. Use openstack-lower-constraints-jobs template Remove jobs that are part of the templates. Change-Id: I83bd26265887a0661ecd7fca60f27671d1c91699 - Merge "Improve configuration guide" - Merge "Check the project zone quota when accepting zone transfer." - Improve configuration guide add example command line to generate policy file and add links to configuration docs (they are currently reside in the Admin Guide). Change-Id: Ie5a24ef99a7d272693702a39aa679c7ba0c07655 - Merge "Verify project-id when setting quota" - Merge "Simplify olso.log setup" - Merge "Removed deprecated managed option in notification handler" - Merge "Update links in README" - Merge "Update link tags in README" - Check the project zone quota when accepting zone transfer. Change-Id: I3cb6cf8c804f008244e34968101f7343be192d48 Closes-Bug: 1789876 - Update link tags in README Change-Id: If3018699b4d0d8022ceca256e25cb0f60af1d138 - Remove install-guide-jobs The install-guide-jobs template needs to stay in project-config, remove it from zuul file. See also https://review.openstack.org/597618 Change-Id: I41ea3432e380eb884fa04d55a7c1e9ee338d04ea - Merge "switch documentation job to new PTI" - Add docs for project-id verification feature Change-Id: Ibe98d50be578b35cb92c70d703c23dd27b192787 Related-Bug: #1760822 - Merge "import zuul job settings from project-config" - Merge "Make update_status use synchronized_zone" - Remove -u root as mysql is executed with root user As openstack installation guides suggest to run mysql with root shell user, mysql will not ask for password, so the "-u root -p" is useless. Change-Id: I245b8969ec58de91b7d21267bbdf4273d572c8d2 Related-Bug: #1785025 - Update links in README Change the outdated links to the latest links in README Change-Id: Ia771f6b26c46967d48ca421a3290fa7f04c89c48 - switch documentation job to new PTI This is a mechanically generated patch to switch the documentation jobs to use the new PTI versions of the jobs as part of the python3-first goal. See the python3-first goal document for details: https://governance.openstack.org/tc/goals/stein/python3-first.html Change-Id: Ic07158b0022f57069d7e117d03c329cb01c6f722 Story: #2002586 Task: #24292 - import zuul job settings from project-config This is a mechanically generated patch to complete step 1 of moving the zuul job settings out of project-config and into each project repository. Because there will be a separate patch on each branch, the branch specifiers for branch-specific jobs have been removed. Because this patch is generated by a script, there may be some cosmetic changes to the layout of the YAML file(s) as the contents are normalized. See the python3-first goal document for details: https://governance.openstack.org/tc/goals/stein/python3-first.html Change-Id: I3111e19b546a12a61975d339ac0e7512fef50c04 Story: #2002586 Task: #24292 - Removing removed bandit plugins to fix gate The following Openstack specific plugins were removed in the 1.5.0 release on bandit and is causing the pep8 tests to fail. * B109, B111 Change-Id: I6270decd28be26e8c497062e75b54a12f3a54517 - Imported Translations from Zanata For more information about this automatic import see: https://docs.openstack.org/i18n/latest/reviewing-translation-import.html Change-Id: Id5d89bde7b6f0b289bdd8c3e11425f1f50e1b025 - Update reno for stable/rocky Change-Id: I1ad06e118c4a164f68313c0c9b0ae3b834b137db - Imported Translations from Zanata For more information about this automatic import see: https://docs.openstack.org/i18n/latest/reviewing-translation-import.html Change-Id: I660e0dd489a24aac6d6dbbe516236e9f6d640fc9 - Merge "Change Bad Action from a traceback into a warning" - Worker should send NOTIFY also to all servers in 'also_notifies' pool settings. Change-Id: I0a85c5df5c323d6f636c8cb92ee5201c14cdb306 Closes-Bug: #1785769 - Simplify olso.log setup Switching to log.get_default_log_levels, and implement _EXTRA_DEFAULT_LOG_LEVELS on top for anything designate specific. Change-Id: I20c89e0ddfde39c1a43c2e32a5dad67d180e38c3 - Make update_status use synchronized_zone There is a race condition when adding a new recordset to a zone and when central is processing the update_status from a previous recordset/zone operation. In the subsequent recordset operation, central fails to update the zone's action/status in DB to UPDATE/PENDING. It remains as NONE/ACTIVE, and worker error's out. Each operation retrieves a different copy in memory of the Zone object (when it calls self.storage.get_zone). As a result this does not update the obj_changes field for the zone object for the latter operation. Therefore the DB update doesn't update any values. update_status should be synchronized as it updates zone DB Change-Id: Ib4e0bc567ba8eb54c61c3921d165521bf2f12206 Closes-Bug: #1713875 - Change Bad Action from a traceback into a warning * Added new exception BadAction. * Cleaned up processing code. Partial-Bug: #1768618 Change-Id: I1255b87209a94ab25519aaa83648b7abfd49f067 - Enable mutable config in designate New releases of oslo.config support a 'mutable' parameter to Opts. oslo.service provides an option here Icec3e664f3fe72614e373b2938e8dee53cf8bc5e allows services to tell oslo.service they want mutate_config_files to be called by passing a parameter. This commit is to use the same. This allows designate to benefit from I1e7a69de169cc85f4c09954b2f46ce2da7106d90, where the 'debug' option (owned by oslo.log) is made mutable. we should be able to turn debug logging on and off by changing the config. tc goal: https://governance.openstack.org/tc/goals/rocky/enable-mutable-configuration.html Change-Id: I5fba66b32b2b8eeea7c206e9eaec0d8c217dafb2 - Merge "Reenable py3.6 tempest jobs + add py36 tox" - Merge "Remove testrepository" - Reenable py3.6 tempest jobs + add py36 tox Change-Id: I24cf490f74517aa8f92f81a5aca6785a7a442537 Signed-off-by: Graham Hayes <gr@ham.ie> - Merge "Replace use of os.errno.* with errno.*" - Merge "Replace StopIteration with return for PEP 0479" - Removed deprecated managed option in notification handler The managed option has been deprecated for 3 years now, and is risky in general as it can cause custom sink handlers to delete all records in a zone by mistake. This also allows us to clean the code path up a bit. Related-Bug: #1387662 Change-Id: Id6174eb7df0c7bc9d138e74f72b6931a025ec818 - Set py36 gate non voting Change-Id: I42413448773a07fbbfdbc5f4b86515c6a3710574 Signed-off-by: Graham Hayes <gr@ham.ie> - Replace use of os.errno.* with errno.* According to the following, os.errno has been removed in Py3.7: https://bugs.python.org/msg317876 Change-Id: I941ba24a5f4ede4cc596dca92946ff5ae88a1d53 Closes-Bug: #1782204 - Replace StopIteration with return for PEP 0479 PEP 0479, https://www.python.org/dev/peps/pep-0479/, makes the following change: "when StopIteration is raised inside a generator, it is replaced it with RuntimeError". The PEP suggests that if raise StopIteration occurs directly in a generator, simply replace it with return. Change-Id: I9bb72936c8d56b338084bb0be7e75aecdf09f8b3 Closes-Bug: #1780827 - Remove testrepository This commit is a follow-up of "switch to using stestr" which was merged already [1]. After switch to using stestr, testrepository is unnecessary and should be removed. [1] https://review.openstack.org/571948 Change-Id: I7b496624721173955315869b17d3f2050dc83d30 - Merge "Replace testr to stestr" - Merge "Added CONTRIBUTING.rst file to the project" - Replace testr to stestr According to Openstack summit session [1] stestr is maintained project to which all Openstack projects should migrate. Let's switch it then. [1] https://etherpad.openstack.org/p/YVR-python-pti Change-Id: I0d2391779623135551f095f8f4b61a2d523c6f35 - Added CONTRIBUTING.rst file to the project Change-Id: I8947abfb476827a6043c1567e671bc046f3ff755 - Don't run tempest jobs when patching releasenote Change-Id: I28f8b9f3f75cf5a4dab43c1b728794f49321f777 - Verify project-id when setting quota this patch adds several things to attempt (on best effort basis) to use incoming user token in the quota set request to ask Keystone if the project id the quota being set on is actualy valid: - added new [keystone] config section to hold session- and adapter-realated options for accessing Keystone enndpoint - added a token- and service catalog-based user auth plugin to the request context - use the above to construct a keystoneauth adapter for Identity service and attempt to GET on projects/{project_id} - only if the Keystone v3 catalog endpoint is not found, or the request returns 404 NotFound, we raise an error and return it as 400 BadRequest to client when attempting to change quotas for project. This behavior is enabled by setting a new [service:api]quotas-verify-project-id config option to True (default is False for backward compatibility). Change-Id: Ib14ee5b5628509b6a93be8b7bd10e734ab19ffee Depends-On: https://review.openstack.org/580142 Closes-Bug: #1760822 - Merge "Fix systemctl command in Ubuntu installation guide" - Merge "Use listener pools in designate-sink" - Allow newer versions of Flask Since keystone bumped the version of Flask in openstack/requirements, the upper constraint is now equal to 1.0.2 that is not allowed by the requirements.txt of designate. If we change the designate requirements, we could use the same version of Flask for both Keystone and Designate, helping deployers. Change-Id: Ic54ceebc1af5a9d74e415f7369e1d5bb19c6e915 - Use listener pools in designate-sink configuring pools for notificaiton listeners is an alternative approach to using per-component notification topics, however not all oslo.messaging drivers support it (from currently available, zmq and amqp1 do not, rabbit and kafka do support listener pools). This patch adds a config option 'listener-pool-name' to [service:sink] config section (defaults to None) that can be used to configure a common pool for designate-sink notification listeners if the messaging driver does support them. Change-Id: I4fc1c7264671c3102c067beb7298879e62214d60 - Init config before service start registering options during oslo.service start can result in a race with oslo.service's own startup logging of options, producing error RuntimeError: dictionary changed size during iteration Groups found to be responsible are [ssl] (from oslo_service.sslutils) and [keystone_authtoken] (from keystonemiddleware.auth_token). This was cought when starting designate-api with `--log-config-append` option with extra logging config containing many handlers (some are heavier to init than others, like fluentd), thus introducing enough time lapse for race to surface. Change-Id: I2295d91077b5cdc905eafa6f24a7b73168ceb1aa - Fix systemctl command in Ubuntu installation guide The systemctl command service names no longer prepend "openstack-" Closes bug: #1775720 Change-Id: I89818e1a369b38365ebf0c6b6141207bb72a52ed - Imported Translations from Zanata For more information about this automatic import see: https://docs.openstack.org/i18n/latest/reviewing-translation-import.html Change-Id: I9301a9a66ccf936f7bc082621357dd121fe430d1 - Merge "Switch to oslo_messaging.ConfFixture.transport_url" - Merge "Add unique constraint to service_statuses" - Merge "[Docs] Fix the incorrect designate service name" - Document --record instead of --records Per the cli, --records is deprecated and --record should be used instead. Change-Id: I00f2562342480a1eb9bdbba519e28c69dffe6d0e - [Docs] Fix the incorrect designate service name Change-Id: Ic28fedae673b12d7659eb492e2497ab9238695f8 - Switch to oslo_messaging.ConfFixture.transport_url oslo_messaging's rpc_backend setting, which is set by ConfFixture.transport_driver has been deprecated since Newton. To allow oslo_messaging to remove it, switch to setting transport_url instead. Change-Id: I56ed0952f667dc51fb36aa1e85875e2d30097237 Partial-Bug: #1712399 - Merge "fix a typo in code" - Merge "Ensure the old files before build" - fix tox python3 overrides We want to default to running all tox environments under python 3, so set the basepython value in each environment. We do not want to specify a minor version number, because we do not want to have to update the file every time we upgrade python. We do not want to set the override once in testenv, because that breaks the more specific versions used in default environments like py35 and py36. Change-Id: If3aad2663d76fce58430d3b6ee6220ff550977a3 Signed-off-by: Doug Hellmann <doug@doughellmann.com> - fix a typo in code Remove the duplicated 'for'. Change-Id: I83a1a1f085b5d8272f920db7df2b40ed23802915 - Switch to using stestr According to Openstack summit session [1] stestr is maintained project to which all Openstack projects should migrate. Let's switch it then. [1] https://etherpad.openstack.org/p/YVR-python-pti Change-Id: I847368004d14c2f213d36c602398abfdbfa381cd Signed-off-by: Charles Short <zulcss@gmail.com> - Ensure the old files before build This patch is to ensure the old files are not left over when running these document builds. Change-Id: Ifb0db4bd2c6962f3d84418e9e924f8a783696dcb - Allow to check pep8 along with D000 This patch only setup package dependency which named Pygments for this test. Pygments also exist item in lower-contraints.txt which does not setup along with tox env. Change-Id: I1a75150b7fd813a4126716b898a55f35c64c5ec6 - Merge "Replace Chinese punctuation with English punctuation" - Add unique constraint to service_statuses In the current implementation, if for any reason a duplicate service entry gets created, the call to update that service will fail endlessly, and instead cause the service to create new entries everytime update_service_status gets called. Causing it to fill the database with duplicate entries. This patch adds a unique constraint to the service_statuses table based on the service_name and hostname, to ensure that this cannot happen. In addition we add a new test to the storage driver and further expanded the central service test coverage. Change-Id: I307a8f7dd8b8a83effa447a846db3288efa32dba Closes-Bug: #1768824 - Fix contents render for notification.rst old: .. literalinclude:: ../../../designate/tests/resources/sample_notifications/neutron/port.delete.start.json new: { "priority" : "INFO", "message_id" : "95ecdca3-967f-40aa-9469-d9fccc91d64b", "event_type" : "port.delete.start", "_context_roles" : [ "Member" ], "_context_tenant_id" : "c97027dd880d4c129ae7a4ba7edade05", "timestamp" : "2012-11-16 12:56:17.155860", "_context_is_admin" : false, "_context_user_id" : "4ce5c085e09a478ea4edcd667a92df78", "payload" : { "port_id" : "bfdcb007-f68d-46bd-8150-abcae9fb3af6" }, "_context_timestamp" : "2012-11-16 12:56:17.154672", "publisher_id" : "network.svc02.os.lan", "_context_read_deleted" : "no" } Change-Id: I659ffcb5fcb7032a54670602a6534218e1e153fa - Replace Chinese punctuation with English punctuation Curly quotes(Chinese punctuation) usually input from Chinese input method. When read from english context, it makes some confusion. Change-Id: I9b9c8015394578d52c3a55839b84b4f64fb0a5c4 - Merge "Start replacing designate legacy jobs" - Start replacing designate legacy jobs Add a designate-base job to replace the legacy designate-devstack-base. Add test job on bionic with py36. Change-Id: I7c92b5b4464b585b0c9f64408507d8a2143f99d8 - Make Neutron integration job voting Neutron has updated the neutron-tempest-plugin-designate-scenario job to be voting [0], let's follow that path. [0] https://review.openstack.org/568681 Change-Id: Ifdfbdb4d465bc70b02be1c3f049dbfac67de4c88 - Change copyright information for field.py Due to wrong copy&paste and this is commit from fujitsu since last year [1] [1] https://review.openstack.org/#/c/464971/ Change-Id: Ib403898521efcda9edfefcfbc027b831031783c3 - Add release notes link to README Add release notes url doc link to README.rst. Change-Id: I443ba4e6d6289c80dfbb8b60c9edf87b100dae37 - fix a typo: s/extention/extension Change-Id: Ife244edb3addf28416cf6b1a2bb891161ef35100 - Merge "Move pep8 checks to py3 by default" - Merge "uncap eventlet" - uncap eventlet We will manage the eventlet version using constraints now. See the thread starting at http://lists.openstack.org/pipermail/openstack-dev/2018-April/129096.html for more details. Amend lower constraints according to tools/fix-lower-constraints.py and remove setuptools from requirements.txt to fix requirements job. Change-Id: I4f336ce65904b5fde9b088a2624fb9196623e295 Signed-off-by: Doug Hellmann <doug@doughellmann.com> - Merge "Ensure we do not pass invalid data for A records" - Ensure we do not pass invalid data for A records DNSPython does not allow IPs to have leading zeros for A records [1] and eventlet agrees [2], so we should ensure we do not create a situation where a project can DOS itself. This patch uses the DNSPython method to ensure it is kept in sync 1 - https://github.com/rthalley/dnspython/blob/v1.15.0/dns/ipv4.py#L52-L54 2 - https://github.com/eventlet/eventlet/blob/v0.20.0/eventlet/support/dns/ipv4.py#L52-L54 Partial-Bug: 1760833 Change-Id: I975b18d390647de9fe11c105cd421b761f88be6c - Update auth_uri option to www_authenticate_uri Option auth_uri from group keystone_authtoken is deprecated[1]. Use option www_authenticate_uri from group keystone_authtoken. [1]https://review.openstack.org/#/c/508522/ Change-Id: I80b505feb611af8a95ac19f2808c73069e2a33e5 - Move pep8 checks to py3 by default Change-Id: I0964970c1590658754ea59b394835dc1472b7292 - Replace deprecated LOG.warn with LOG.warning LOG.warn is deprecated in Python 3 [1] . But it still used in a few places, non-deprecated LOG.warning should be used instead. Note: If we are using logger from oslo.log, warn is still valid [2], but I agree we can switch to LOG.warning. [1]https://docs.python.org/3/library/logging.html#logging.warning [2]https://github.com/openstack/oslo.log/blob/master/oslo_log/log.py#L85 Change-Id: Ibbcc287815cbc06162a13448c2dabcb0748e4e32 Closes-Bug: #1508442 - Updated from global requirements Change-Id: I9ffc7367b696a1f2eb63954d0d865a645869fa9a - Follow the new PTI for document build For compliance with the Project Testing Interface as described in: https://governance.openstack.org/tc/reference/project-testing-interface.html For more detials information, please refer to: http://lists.openstack.org/pipermail/openstack-dev/2017-December/125710.html Change-Id: Ic7dad29922af2efed2188f3215f364719f0e19ae - Updated from global requirements Change-Id: Ia668f35b1129471e617bbe4713add751a0c3b242 - add lower-constraints job Create a tox environment for running the unit tests against the lower bounds of the dependencies. Create a lower-constraints.txt to be used to enforce the lower bounds in those tests. Add openstack-tox-lower-constraints job to the zuul configuration. See http://lists.openstack.org/pipermail/openstack-dev/2018-March/128352.html for more details. Change-Id: Id52de99217d1187e3a1a638c41aba18258b6c824 Depends-On: https://review.openstack.org/555034 Signed-off-by: Doug Hellmann <doug@doughellmann.com> - Merge "Remove translation of log messages" - Updated from global requirements Change-Id: I10b05a83452b01c547d199fee56ee721a3163b27 - Merge "Fix policy name" - Fix policy name The `update_service_status` policy was missed named as `update_service_service_status` which seemed to cause issues for other rules. Closes-Bug: #1753503 Change-Id: Ic2952c36c03a4cb7a148f1518766ddefb9144dcd - Updated from global requirements Change-Id: Idd8a6b399708f0b5ee9a7b750390f3a92e29bc4d - Remove translation of log messages * Removed all log translation. * Always lazy-load logging. * Fixed broken log lines and updated tests. Logs should no longer be translated (starting with Pike)[1]. Also, according to OpenStack Guideline[2], logged string message should be interpolated by the logger. [1]: http://lists.openstack.org/pipermail/openstack-dev/2017-March/thread.html#113365 [2]: https://docs.openstack.org/oslo.i18n/latest/user/guidelines.html#adding-variables-to-log-messages Change-Id: I07825694f173a8bebd7d62ade089c38d3c666283 - Updated from global requirements Change-Id: I679b650302c9ac79ea95e1be3a724c91f90e20cc - Merge "Removing downgrade commands" - Updated from global requirements Change-Id: I79aa9ed0349b188d5c0bd2c51d41fb9cb3ca8765 - Do not filter pools by attributes when non are provided This change stops the AttributeFilter from filtering when no attributes were provided. This also removes the pool_id attribte from the request, as this is used in a different filter. Change-Id: If57d81e0343fa442828da7390bf20249f4791861 - Imported Translations from Zanata For more information about this automatic import see: https://docs.openstack.org/i18n/latest/reviewing-translation-import.html Change-Id: Idb8d1b65af69eb1a6c8f7671124b28f39add5ac4 - Updated from global requirements Change-Id: I3deb9840f2e67ee6f19caa5e0fb07457b9668144 - Merge "Zuul: Remove project name" - Merge "Fix typo" - Updated from global requirements Change-Id: I4bd96fe8c995e1c179716c5e13fdeeb197abc680 - Merge "Resolve get_dns_view error after selecting multi-tenant view" - Merge "Updated from global requirements" - Removing downgrade commands The downgrade commands have been unsupported for a very long time now. Change-Id: I584bd0164e8dc43be79eab7ab80bbff361a4a53a - Resolve get_dns_view error after selecting multi-tenant view Adds a second comparison check when deciding whether to display the single tenant view or multi-tenant view in Infoblox. The issue is that the DB field is set to '0', which is not interpreted as false. Change-Id: Id0fac71cc6d82123a7ee5d5983467acd1b8e5a9e Closes-Bug: 1752349 - Add os-testr in test-requirements.txt This is a dependency of pretty_tox.sh that is missing and causing the tests to fail. Change-Id: Ibc1fcb845ed8167a3bdd7e3f7345ad8c8efcd538 - Updated from global requirements Change-Id: I3ecb58b38d88a40e2c388ec8a17fa672ad850e6b - Merge "Keep NS records for subdomains during Zone import." - Updated from global requirements Change-Id: I92305501eafaea700bc603e022225673b6464533 - Imported Translations from Zanata For more information about this automatic import see: https://docs.openstack.org/i18n/latest/reviewing-translation-import.html Change-Id: Ia018fb2baecad3f46487f7ae3a2b6690fa8a4ba3 - Merge "Migrate object to OVO (7)" - Merge "Migrate object to OVO (6)" - Merge "Migrate object to OVO (5)" - Merge "Migrate object to OVO (4)" - Merge "Migrate object to OVO (3)" - Merge "Migrate object to OVO (2)" - Merge "Migrate object to OVO" - Merge "Remove install-guide tox env" - Migrate object to OVO (7) - Remove old base objects Co-authored-By: Nguyen Van Trung <trungnv@vn.fujitsu.com> Change-Id: Icb8817a699a8c12957126a0499d95d13b8eeda6d Implements: blueprint designate-rolling-upgrade - Migrate object to OVO (6) This commit will migrate: - ValidationError and ValidationErrorList Co-authored-By: Nguyen Van Trung <trungnv@vn.fujitsu.com> Change-Id: I00d72d83dafb28a2d94aeabd844559be92d131f2 Implements: blueprint designate-rolling-upgrade - Migrate object to OVO (5) This commit will migrate: - Blacklist object - Quota objects - Floating_IP objects Co-authored-By: Dai Dang Van <daidv@vn.fujitsu.com> Change-Id: I85455e7cbf24da4c7c6302060d5c3d203fdf2fc5 Implements: blueprint designate-rolling-upgrade - Migrate object to OVO (4) This commit will migrate: - Pool and PoolList - Related objects Co-authored-By: Dai Dang Van <daidv@vn.fujitsu.com> Change-Id: I59da0628a9dc23efe8d8665bbf3359e652eaa8c9 Implements: blueprint designate-rolling-upgrade - Migrate object to OVO (3) This commit will migrate: - Server and ServerList - ServiceStatus and ServiceStatusList - Tenant and TenantList - Tld and TldList - TsigKey and TsigKeyList Co-authored-By: Nguyen Van Trung <trungnv@vn.fujitsu.com> Change-Id: I2d6ec85e0c47b2e129bc55616ad92f53a2298940 Implements: blueprint designate-rolling-upgrade - Migrate object to OVO (2) This commit will migrate: - ZoneImport and ZoneImportList - ZoneExport and ZoneExportList - ZoneTransferAccept and ZoneTransferAcceptList - ZoneTransferRequest and ZoneTransferRequestList Co-authored-By: Nguyen Van Trung <trungnv@vn.fujitsu.com> Change-Id: I80173ce20b5ef45f0bbbc2c5552b67e1aaec0c06 Implements: blueprint designate-rolling-upgrade - Migrate object to OVO This commit will migrate Zone and ZoneMaster objects Co-authored-By: Hieu LE <hieulq@vn.fujitsu.com> Co-authored-By: Nguyen Van Trung <trungnv@vn.fujitsu.com> Change-Id: I8a0b0868d25dacd3dabeb7e0436cfcf93b1e4cc7 Implements: blueprint designate-rolling-upgrade - Merge "Remove empty files" - Merge "Remove Hacking check for log translation" - Remove empty files doc/source/_static/designate-docs.css is empty file. We probably should delete it. Change-Id: I9d3d3e4c42e841abc9599eba81a3b6d7d9cb1a2f - Remove install-guide tox env The install-guide tox env is not used any more after docs migration. Change-Id: I38d05065bb98c97bb08e878c94d44a18e7c1ac46 - Keep NS records for subdomains during Zone import. Change-Id: I07829822b8a50b0bff0b28370d9d6d3faacd445c Closes-Bug: 1747016 - Merge "Skip grenade job on irrelevant changes" - Skip grenade job on irrelevant changes We do not need to run grenade for doc-only or similiar changes, skip those like we skip the devstack jobs. Change-Id: I7588ecc60791815cc6908324d59b299633bf15ce - Fix unicode not define in doc with py3 Under Python 3.6 in Debian Sid, I couldn't build the sphinx doc, and this patch fixes it. It replaces unicode by six.text_type. Change-Id: I538f10ef297fb45cb82e47f5bcb86ed214a062b0 - Merge "Updated from global requirements" - Merge "os-loganayze fix" - Updated from global requirements Change-Id: Iba74f3d5dd256b78fd1d8a884de35d01e566ae01 - Merge "Add sample_default for pybasedir in __init__.py" - Remove Hacking check for log translation Change-Id: I9ab9215e58f6b94029649b8b5cec69ef13b0b6ac - Updated from global requirements Change-Id: I92d96a97638b02a49617e78939f6921f2de53a97 - Imported Translations from Zanata For more information about this automatic import see: https://docs.openstack.org/i18n/latest/reviewing-translation-import.html Change-Id: Ifeb82929506ba9e5d7ae4fc0faedc455ace3dc2f - Add sample_default for pybasedir in __init__.py Adding that parameter helps to make Debian package builds reproducible. Change-Id: I676f0bbcba4c6ddd2b1694c116169ac9a174698d - Update reno for stable/queens Change-Id: I718973d1ad3af0318cff885bca29250ae054ef41 - Merge "Use secure random to generate transfer key" - Fix typo Change-Id: I5fe025364b4fd7a3d2f6aa9b7d8dbc6d7a944dac - Merge "Remove use of unsupported TEMPEST_SERVICES variable" - Merge "Updated from global requirements" - Merge "Remove the deprecated "giturl" option" - Imported Translations from Zanata For more information about this automatic import see: https://docs.openstack.org/i18n/latest/reviewing-translation-import.html Change-Id: I2305fda874b0609b9671e68df81750e467a0e73b - Merge "Make requirements voting again, update .zuul.yaml" - os-loganayze fix This fixes log output in the gate Change-Id: I7c74e45128d6d1142452619324b3394660741e4c - Correct link address in docs Link address for "DNS Server Driver Support Matrix" is out of date, so correct it. Change-Id: I2584ca26b3ab24e3ac44db2e5a1d5ecb3599117e - Zuul: Remove project name Zuul no longer requires the project-name for in-repo configuration. Omitting it makes forking or renaming projects easier. Change-Id: I0dfdb10d037d004f40ed725b5dff3c3a27074df9 - Updated from global requirements Change-Id: I37d1d405c671a8037a65c7b389a007a0dc1a9c18 - Updated from global requirements Change-Id: I1156d06412a8602c9d11f1da088b8b9b315e45e8 - Remove use of unsupported TEMPEST_SERVICES variable TEMPEST_SERVICES global variable is not supported by devstack since long back. - I380dd20e5ed716a0bdf92aa02c3730359b8136e4 - I9c24705e494689f09a885eb0a640efd50db33fcf Service availability of tempest known services will be set by devstack with local check. - I02be777bf93143d946ccbb8e9eff637bfd1928d4 This commit removes the unused TEMPEST_SERVICES setting Related-Bug: #1743688 Change-Id: I596e45d0922686ce916fe4342d3d6357b57b91bb - Merge "Updated from global requirements" - Merge "Remove v1 API" - Use secure random to generate transfer key python random() is not suitable for generating random keys. We better use SystemRandom for these purposes. Change-Id: Icceaf56e67e60e3cd07af6415df5bae2fa76ba17 - Make requirements voting again, update .zuul.yaml Change Ibc77ea864503e63f73be0f1c41e07bfe8ea3dcae needed a non-voting requirements change for merging, since this is in, we can make requirements voting again. For this, just remove it. Remove voting from the neutron-tempest-plugin-designate job since non-voting jobs should not run in gate. Remove name from project-stanza, this is not needed anymore. Rename designate grenade job to follow https://docs.openstack.org/infra/manual/drivers.html#naming-with-zuul-v3 Change-Id: I794bd13bf74d2218e64b9f9922ea8abd6c9b33a0 - Updated from global requirements Change-Id: I3dc494146cdc3b98c75ee81efed6f4cf756df9a1 - Updated from global requirements Change-Id: I7c7cbd361f0b69ae3c6d6da3476f9a2b59784362 - Remove the deprecated "giturl" option From openstackdocstheme 1.18.0, valid Git URLs can be retrieved by openstackdocstheme[1], we do not need giturl option anymore. [1] https://review.openstack.org/532163 Change-Id: Ic7ad09aaebc5951fe8e3a254ba1cee2d61b486f8 - Remove v1 API This completes the long awaited removal of the V1 API. Change-Id: I30c8a5e8569b1b86286c5e3cb07856c06ebe5803
* Update nova from branch 'master' - Merge "libvirt: Add workaround to cleanup instance dir when using rbd" - Merge "Add functional regression recreate test for bug 1790204" - libvirt: Add workaround to cleanup instance dir when using rbd At present all virt drivers provide a cleanup method that takes a single destroy_disks boolean to indicate when the underlying storage of an instance should be destroyed. When cleaning up after an evacuation or revert resize the value of destroy_disks is determined by the compute layer calling down both into the check_instance_shared_storage_local method of the local virt driver and remote check_instance_shared_storage method of the virt driver on the host now running the instance. For the Libvirt driver the initial local call will return None when using the shared block RBD imagebackend as it is assumed all instance storage is shared resulting in destroy_disks always being False when cleaning up. This behaviour is wrong as the instance disks are stored separately to the instance directory that still needs to be cleaned up on the host. Additionally this directory could also be shared independently of the disks on a NFS share for example and would need to also be checked before removal. This change introduces a backportable workaround configurable for the Libvirt driver with which operators can ensure that the instance directory is always removed during cleanup when using the RBD imagebackend. When enabling this workaround operators will need to ensure that the instance directories are not shared between computes. Future work will allow for the removal of this workaround by separating the shared storage checks from the compute to virt layers between the actual instance disks and any additional storage required by the specific virt backend. Related-Bug: #1761062 Partial-Bug: #1414895 Change-Id: I8fd6b9f857a1c4919c3365951e2652d2d477df77 - Merge "Move bridge creation to privsep." - Merge "Fix up force live migration completion docs" - Merge "Remove useless test samples for v2.66" - Merge "Fix rfc3986.is_valid_uri deprecation warnings" - Remove useless test samples for v2.66 These samples were unused and incorrect. We don't actually need the sample, since v2.66 is about listing servers and filtering with 'changes-before', so responses to show a server are unnecessary. Simply remove the sample. Closes-Bug: #1800936 Change-Id: I12cf3ffd75098677cf5de1a5f40d783bb661fd74 - Fix rfc3986.is_valid_uri deprecation warnings The rfc3986.is_valid_uri has been deprecated in 1.1.0. It generates the following warnings. DeprecationWarning: Please use rfc3986.validators.Validator instead. This method will be eventually removed. So this patch replaces rfc3986.is_valid_uri with rfc3986.validators.Validator. Even after applying this patch, the warnings are still output because it is caused by oslo.config. The fix for oslo.config will be done in another patch. Change-Id: I70aebad6c6bd384dbd11ef732226356922bf1913 Closes-Bug: #1809755 - Merge "Fix jsonutils.to_primitive UserWarning" - Merge "Redirect user/placement to placement docs" - Merge "Use oslo_db.sqlalchemy.test_fixtures" - Merge "libvirt: generalize rbd volume fallback removal statement" - Merge "Ensure rbd auth fallback uses matching credentials" - Merge "Properly log request headers in metadata API" - Use oslo_db.sqlalchemy.test_fixtures Make use of the newer fixtures in oslo_db.sqlalchemy.test_fixtures which is what was intended to supersede fixtures in oslo_db.sqlalchemy.test_base. Change-Id: Icb88c13336fffb499083197ed864b8e4e45dc241 Closes-Bug: #1797102 - Merge "Final release note for versioned notification transformation" - Merge "Remove mox in libvirt/test_driver.py (8)" - Merge "Remove mox in libvirt/test_driver.py (7)" - Merge "Clean up header encoding handling in compute API" - Merge "Drop old service version check compat from _delete_while_booting" - Merge "Remove "API Service Version" upgrade check" - Merge "Remove "Resource Providers" upgrade check" - Merge "Remove NovaException logging from scatter_gather_cells" - Merge "Add descriptions about microversions" - Merge "Convert exception messages to strings" - Merge "Fix the link to the Placement API Version History" - Merge "Use renamed template 'integrated-gate-py3'" - Merge "Add links to summit videos in user/cells.rst" - libvirt: generalize rbd volume fallback removal statement The warning being modified here was added in Pike: I6fc7108817fcd9df4a342c9dabbf14ab7911d06a And then updated to say we would remove the fallback in Queens: I006f41383dcef68d63a646665a56cbd4c3f93c4b And here we're long past Queens and still have this old warning with no immediate plans to do data migrations to drop the fallback code, so this change simply makes the warning message more generic. Change-Id: Icdc02d0bbd023e916bd39945fe7afc52b7a3942c - Ensure rbd auth fallback uses matching credentials As of Ocata, cinder config is preferred for rbd auth values with a fallback to nova values [1]. The fallback path, for the case when rbd_user is configured in cinder.conf and rbd_secret_uuid is not configured in cinder.conf, results in the mismatched use of cinder rbd_user with nova rbd_secret_uuid. This fixes that fallback path to use nova rbd_user from nova.conf with rbd_secret_uuid from nova.conf. [1] See commit f2d27f6a8afb62815fb6a885bd4f8ae4ed287fd3 Thanks to David Ames for this fix. Change-Id: Ieba216275c07ab16414065ee47e66915e9e9477d Co-Authored-By: David Ames <david.ames@canonical.com> Closes-Bug: #1809454 - Merge "Fix best_match() deprecation warning" - Merge "Fix destination_type attribute in the bdm_v2 documentation" - Merge "nit: Add space to feature support docs" - Merge "Add irrelevant-files for grenade-py3 jobs" - Add links to summit videos in user/cells.rst This patch is a follow-up for I66a2adb3ff75da6e267536f25c2eda5925f2fa87. Add links to videos recorded at Rocky or Stein summit in doc/source/user/cells.rst. Change-Id: Idcc77cf2eee809f3ca99f952f0635213f3bb78eb - Merge "Fix a broken link" - Add functional regression recreate test for bug 1790204 Since Pike, the FilterScheduler "claims" resources in placement via allocations based on the flavor during scheduling. For a same-host resize, the old and new flavor are summed to get the overall allocation against the single compute node resource provider, which can cause NoValidHost failures during scheduling because the sum is over capacity for the resource provider even though the new flavor alone may be OK. This adds a functional regression test to recreate the bug. Change-Id: I036a5ceabe88dcc1fd85c09472481de7d02edf5f Related-Bug: #1790204 - Merge "Remove legacy RequestSpec compat from conductor rebuild_instance" - Merge "Remove legacy RequestSpec compat from conductor unshelve_instance" - Merge "doc: Rework 'resize' user doc" - Merge "conf: Convert 'live_migration_inbound_addr' to HostAddressOpt" - Merge "Document using service user tokens for long running operations" - nit: Add space to feature support docs Change-Id: I13c5f9c053f848facbcbd663fc677f4f991d7105 - Merge "Fix an inaccurate link in nova doc" - Merge "Exclude build request marker from server listing" - Fix a broken link Fix broken links in doc/source/user/cells.rst. In addition, fix a format of a console code block in doc/source/admin/pci-passthrough.rst. Change-Id: I66a2adb3ff75da6e267536f25c2eda5925f2fa87 Closes-Bug: #1808906 - Drop old service version check compat from _delete_while_booting Like change I11083aa3c78bd8b6201558561457f3d65007a177 the API should not need to have compatibility code for mitaka-era services, so this drops the service version check from the _delete_while_booting method. Change-Id: I26d58e8156b209c26d01da0baf7137d33eda4307 - Remove "API Service Version" upgrade check With change I11083aa3c78bd8b6201558561457f3d65007a177 the code for the API Service Version upgrade check no longer exists and therefore the upgrade check itself is meaningless now. Change-Id: I68b13002bc745c2c9ca7209b806f08c30272550e - Remove "Resource Providers" upgrade check With placement being extracted from nova, the "Resource Providers" nova-status upgrade check no longer works as intended since the placement data will no longer be in the nova_api database. As a result the check can fail on otherwise properly deployed setups with placement extracted. This check was originally intended to ease the upgrade to Ocata when placement was required for nova to work, as can be seen from the newton/ocata/pike references in the code. Note that one could argue the check itself as a concept is still useful for fresh installs to make sure everything is deployed correctly and nova-compute is properly reporting into placement, but for it to be maintained we would have to change it to no longer rely on the nova_api database and instead use the placement REST API, which while possible, might not be worth the effort or maintenance cost. For simplicity and expediency, the check is simply removed in this change. Related mailing list discussion can be found here [1]. [1] http://lists.openstack.org/pipermail/openstack-discuss/2018-December/000454.html Change-Id: I630a518d449a64160c81410245a22ed3d985fb01 Closes-Bug: #1808956 - Fix an inaccurate link in nova doc Fix an inaccurate link in nova doc for pci-passthrough Change-Id: Ia003dea1bb0ec5c6cd6928ace5a632747efba852 Closes-Bug: 1805902 - Merge "Update port device_owner when unshelving" - Merge "Handle unbound vif plug errors on compute restart" - Merge "Move a generic bridge helper to a linux_net privsep file." - Exclude build request marker from server listing When listing "real" (already in cell) instances e.g. from nova_cell1.instances table, a marker option means "start after the instance with marker". For VMs: | uuid | name | | 1 | vm1 | | 2 | vm2 | "openstack server list --marker 1" returns vm2 only. But for VMs from nova_api.build_requests table it's different. For VMs: | uuid | name | | 1 | vm1 | | 2 | vm2 | "openstack server list --marker 1" returns both vm1 and vm2. This patch excludes instance with marker from listing for instances from build_requests table. Closes-Bug: #1808286 Change-Id: I5165b69f956fbf1904112a742698b2739f747e72 - Document using service user tokens for long running operations A recent thread in the mailing list [1] reminded me that we don't have any documentation for the service user token feature added back in ocata under blueprint use-service-tokens. This change adds a troubleshooting entry for when using service user tokens would be useful, and links to it from two known trouble spots: live migration timeouts and creating images. [1] http://lists.openstack.org/pipermail/openstack-discuss/2018-December/001130.html Change-Id: I1dda889038ffe67d53ceb35049aa1f2a9da39ae8 Closes-Bug: #1809165 - Merge "Remove legacy RequestSpec compat code from live migrate task" - Redirect user/placement to placement docs The placement api-ref had a link to user/placement.html in nova. That is being fixed in Ibfe016f25a29b6810ea09c5d03a01dbf3c53371f but the link is now loose in the internets, using the 'latest' prefix, so we want to make sure that what is currently showing as a 404 goes somewhere useful, in this case the top of the placement docs. Change-Id: Ib75547ac655e614441dec5e1bcc7784c2b6a070c - Merge "Fix a broken-link in nova doc" - Merge "Address nits on I1f1fa1d0f79bec5a4101e03bc2d43ba581dd35a0" - Merge "Address nits on I08991796aaced2abc824f608108c0c786181eb65" - Handle unbound vif plug errors on compute restart As with change Ia963a093a1b26d90b4de2e8fc623031cf175aece, we can sometimes cache failed port binding information which we'll see on startup. Long term, the fix for both issues is to figure out how this is being cached and stop that happening but for now we simply need to allow the service to start up. To this end, we copy the approach in the aforementioned change and implement a translation function in os_vif_util for unbound which will make the plug_vifs code raise VirtualInterfacePlugException which is what the _init_instance code in ComputeManager is already handling. This has the same caveats as that change, namely that there may be smarter ways to do this that we should explore. However, that change also included a note which goes someway to explaining this. Change-Id: Iaec1f6fd12dba8b11991b7a7595593d5c8b1db50 Signed-off-by: Stephen Finucane <sfinucan@redhat.com> Related-bug: #1784579 Closes-bug: #1809136 - Fix a broken-link in nova doc Fix a broken-link in nova doc for pci-passthrough Change-Id: I350ee26710125f87d2e71df604ec87a38d6e997b Related-Bug: 1805901 - Merge "Fix a broken-link in nova doc" - Merge "Remove legacy request spec compat code from API" - Fix a broken-link in nova doc Fix a broken-link in nova doc for pci-passthrough Change-Id: I27648eb2594874036a8850fce63ff2c4f7f8abc2 Closes-Bug: 1805901 - Use renamed template 'integrated-gate-py3' 'integrated-gate-py35' template is going to be renamed to 'integrated-gate-py3' in https://review.openstack.org/#/c/626078/ Integrated jobs are running on Bionic now where python 3.6 is available. Which means gate jobs in 'integrated-gate-py35' template are running on python 3.6 not on 3.5 which makes this template name confusing. depends on commit rename the 'integrated-gate-py35' to 'integrated-gate-py3' so that it can convey that template will use available python 3 version in used distro. For example: 3.5 in xenial and 3.6 in bionic and so on. This commit starts using the new template name so that old template name can be removed. Depends-On: https://review.openstack.org/#/c/626078/ Change-Id: I7f2bc476d0be7994feef781cb254c8b0c53b8b5b - Merge "Make [cinder]/catalog_info no longer require a service_name" - Merge "Drop request spec migration code" - Merge "allow tcp-based consoles in get_console_output" - Remove legacy RequestSpec compat from conductor rebuild_instance Change I34ffaf285718059b55f90e812b57f1e11d566c6f made the RequestSpec lookup required in the API, so we should not get to conductor's rebuild_instance() method without a request spec so this change removes the compat code from that method. Related to blueprint request-spec-use-by-compute Change-Id: I0a8c18df7ef060647e822e81064d4c663166db8f - Remove legacy RequestSpec compat from conductor unshelve_instance Change I34ffaf285718059b55f90e812b57f1e11d566c6f made the RequestSpec lookup required in the API, so we should not get to conductor's unshelve_instance() method without a request spec so this change removes the compat code from that method. Related to blueprint request-spec-use-by-compute Change-Id: Ib2b9fb728b92ba3dbefe0a2eb7a9f04035758735 - Remove legacy RequestSpec compat code from live migrate task Change I34ffaf285718059b55f90e812b57f1e11d566c6f made the RequestSpec lookup required in the API, so we should not get to conductor during a live migration without a request spec. This change removes the old compat code from the conductor live migration task. Related to blueprint request-spec-use-by-compute Change-Id: I88e175ed4e6d509029aef256d69686d1876374bb - Remove legacy request spec compat code from API For operations which require a request spec, we now require that the request spec exists when we look it up in the API or we fail. All instances created since Newton should have a request spec, and instances created before Newton should have been migrated to have a request spec as part of an online data migration. Failing to find a request spec will now result in a 500 internal server error. As a result, the RequestSpec.get_by_instance_uuid query is moved to before updating the instance.task_state in the various API methods since we want to do all we can before updating the instance in case we fail. Related to blueprint request-spec-use-by-compute Change-Id: I34ffaf285718059b55f90e812b57f1e11d566c6f - Merge "Migrate "reboot an instance" user guide docs" - Address nits on I1f1fa1d0f79bec5a4101e03bc2d43ba581dd35a0 Change-Id: I3e88a1449aca4feedb3d40b238cbeeca3dbcfd69 Signed-off-by: Stephen Finucane <sfinucan@redhat.com> - Address nits on I08991796aaced2abc824f608108c0c786181eb65 - Move deprecated services to the end of the document - Update incorrect information regarding nova-consoleauth - Move configuration options that were specified for the wrong service - Don't give the impression that the serial console is libvirt-only Change-Id: Ie0fd987a1e5c130b8e31c84910814d5d051f2b31 - doc: Rework 'resize' user doc Remove a lot of noise and make things more generic through use of variables rather than hardcoded values. Change-Id: Ief498f902f24e5991cf463323db78729ae6f8d89 Signed-off-by: Stephen Finucane <sfinucan@redhat.com> - Migrate "reboot an instance" user guide docs This imports the cli-reboot-an-instance end user guide docs from the openstack-manuals repo [1]. As part of the docs migration in Pike, these were forgotten. The copied contents come from the stable/ocata branch of openstack-manuals [2]. There are two minor content changes from the original: 1. The "shutdown_timeout" config option is linked to the docs. 2. The "nova rescue" command usage is replaced with "openstack server rescue". [1] https://docs.openstack.org/ocata/user-guide/cli-reboot-an-instance.html [2] https://github.com/openstack/openstack-manuals/blob/stable/ocata/doc/user-guide/source/cli-reboot-an-instance.rst Change-Id: I6701e43fd80fb17df5cc703df766390ab838289a Partial-Bug: #1714017 - Fix jsonutils.to_primitive UserWarning The CheatingSerializer fixture used in nova tests keeps the RequestContext.db_connection set on the context object which otherwise wouldn't normally happen. The context object can show up in error notification payloads because of how nova.exception_wrapper.wrap_exception works. That payload is eventually serialized for notifications and since the cheated RequestContext.db_connection is set and cannot be serialized, it results in a UserWarning from the jsonutils.to_primitive method (called via JsonPayloadSerializer). This will eventually result in failures when that UserWarning is made into an error. To fix this, we can pass a fallback method to to_primitive() which will serialize a RequestContext object the same way that RequestContextSerializer serializes a context - by simply converting it to dict form. Since this only affects test runs, because of using the CheatingSerializer fixture, it should have no impact on runtime serializations. Error logging is added to the FakeNotifier since it's hard to know what is wrong in the payload unless it is logged. Also, the WarningsFixture is updated to make sure we don't introduce new UserWarnings for the serialization issue. The jsonutils.to_primitive() fallback method was added to oslo.serialization via commit cdb2f60d26e3b65b6370f87b2e9864045651c117 in 2.21.1 so we have to bump our minimum required version of that library as well. Change-Id: Id9f960a0c7c8897dbb9edf53b4723154341412d6 Closes-Bug: #1799249 - Move bridge creation to privsep. Change-Id: I4b34e8ff2f43f2d94762202c20501209862bc1d5 - Move a generic bridge helper to a linux_net privsep file. This is more generic than libvirt, and in fact libvirt isn't calling it any more. Move it to a better location and have linux_net call it as well. Change-Id: I74f9922f789c974b052b5ee0ebb002200b0a7061 - Merge "Fail to live migration if instance has a NUMA topology" - Merge "Migrate upgrade checks to oslo.upgradecheck" - Properly log request headers in metadata API Currently we log the request headers in the metadata API in a useless form: DEBUG nova.api.metadata.handler [None \ req-4b5eab00-e132-4551-b7f8-c80a238727a2 None None] \ Metadata request headers: <webob.headers.EnvironHeaders object \ at 0x7f2d6fdb5e90> {{(pid=9311) __call__ \ /opt/stack/nova/nova/api/metadata/handler.py:99}} This change builds a dict from the headers and then also masks any sensitive information before logging it, but only does this if debug logging is enabled. Closes-Bug: #1808879 Change-Id: I609d96293f7e77f59df3f33240f5fc4bb72470d0 - Merge "Remove utils.execute() from virt.disk.api." - Merge "Remove utils.execute() from the hyperv driver." - Drop request spec migration code This removes the request spec online data migration routine added via change I61b9b50436d8bdb8ff06259cc2f876502d688b91 in Newton. A nova-status upgrade check was added for this in Rocky with change I1fb63765f0b0e8f35d6a66dccf9d12cc20e9c661 so operators should be able to tell, either from the results of the nova-status upgrade check command or "nova-manage db online_data_migrations" command, whether or not they have completed the migration and can upgrade to Stein. This also allows us to start removing the various compat checks in the API and conductor services for old instances that predated having a request spec since those should have a request spec now via the online data migration. Related to blueprint request-spec-use-by-compute Change-Id: Ib0de49b3c0d6b3d807c4eb321976848773c1a9e8 - Merge "Add py36/py37 functional jobs to the experimental queue" - Merge "Restore nova-consoleauth to install docs" - Merge "Mention size limit on user data in docs" - Merge "api-ref: sort parameters for limits, quotas and quota classes" - Merge "Add python 3.7 unit and functional tox jobs" - Merge "Replace ThreadPoolExecutor with GreenThreadPoolExecutor" - Fix best_match() deprecation warning wsgi call to best_match() generates the following warning: DeprecationWarning: The behavior of .best_match for the Accept classes is currently being maintained for backward compatibility, but the method will be deprecated in the future, as its behavior is not specified in (and currently does not conform to) RFC 7231. See the following URL for more information about deprecation. https://docs.pylonsproject.org/projects/webob/en/stable/api/webob.html#webob.acceptparse.AcceptValidHeader.best_match Simlar changes in the wsgi best language code as well, except new call is to lookup(). Change-Id: Ib93ffffd3f28aa6d53a0a4eed5aeee94900cb073 Closes-Bug: #1798224 - Remove mox in libvirt/test_driver.py (8) Replace mox with mock or stub_out in the following methods of the LibvirtVolumeSnapshotTestCase class in nova/tests/unit/virt/libvirt/test_driver.py. * test_volume_snapshot_delete_relative_2 * test_volume_snapshot_delete_outer_success * test_volume_snapshot_delete_outer_failure * test_volume_snapshot_delete_invalid_type * test_volume_snapshot_delete_netdisk_1 * test_volume_snapshot_delete_netdisk_relative_1 * test_volume_snapshot_delete_netdisk_relative_2 This patch completes replacing mox in the file. Change-Id: Id9184c4ef301ef48534e4c104b073a2d3731133b Implements: blueprint mox-removal-stein - Remove mox in libvirt/test_driver.py (7) Replace mox with mock or stub_out in the following methods of the following classes in nova/tests/unit/virt/libvirt/test_driver.py. * LibvirtVolumeUsageTestCase - test_get_all_volume_usage - test_get_all_volume_usage_device_not_found * LibvirtNonblockingTestCase - test_tpool_execute_calls_libvirt * LibvirtVolumeSnapshotTestCase - _test_volume_snapshot_create - test_volume_snapshot_create_libgfapi - test_volume_snapshot_create_outer_failure - test_volume_snapshot_delete_1 - test_volume_snapshot_delete_relative_1 Subsequent patches will replace mox in other test cases. Change-Id: I8f0deb4fcd1ef063752e8250c6b13bf9275e5204 Implements: blueprint mox-removal-stein - Fix the link to the Placement API Version History The Placement REST API Version History page has been created by splitting the Placement doc top page (index.html) since I66e0c7d18b253b0a5a8fdac65e30b5b3cef37db2. So the link to the Placement REST API Version History is updated in the nova doc. Change-Id: I60701b09ade203b35d4d1281eb32b177543c064a - Merge "Remove the final user of utils.execute() from virt.images" - Add descriptions about microversions This patch is a follow-up patch for I3e1ca88cac3a52a8b44e26f051a51a6db77a3231. Add descriptions about microversions in the parameter section in the API reference guideline. Change-Id: I266d44cf96945445115b843aacbc29083e21bd8e - Merge "libvirt: remove live_migration_progress_timeout config" - Merge "libvirt: add live migration timeout action" - Merge "Add API ref guideline for body text" - Merge "Remove final users of utils.execute() in libvirt." - Merge "Imagebackend should call processutils.execute directly." - Merge "Remove GROUP BY clause from CellMapping.get_by_project_id" - Migrate upgrade checks to oslo.upgradecheck The common upgrade check code has been moved to oslo.upgradecheck. This change switches the Nova upgrade checks to use the common code and removes the tests for functionality that is now the responsibility of the library. Change-Id: I0dc2044286dbe78314c650a92c4654f7f50642d2 - Merge "Remove lock on SchedulerReportClient._create_client" - Fix up force live migration completion docs This change does a few things: * Links live_migration_completion_timeout to the config option guide. * Links the force complete API reference to the feature support matrix to see which drivers support the operation. * Fixes the server status mentioned in the troubleshooting for the force complete API reference (a live migrating server status is MIGRATING, not ACTIVE). The same text is copied to the abort live migration API reference troubleshooting for consistency (and since using the server status is more natural than the task_state). * Links to the admin guide for troubleshooting live migration timeouts. Change-Id: I496d3f4b99e3d7e978c7ecb13ab3b67023fcb919 Closes-Bug: #1808579 - libvirt: remove live_migration_progress_timeout config Config option ``libvirt.live_migration_progress_timeout`` was deprecated in Ocata, and can now be removed. This patch remove live_migration_progress_timeout and also remove the migration progress timeout related logic. Change-Id: Ife89a705892ad96de6d5f8e68b6e4b99063a7512 blueprint: live-migration-force-after-timeout - libvirt: add live migration timeout action This patch remove the auto trigger post-copy, and add a new libvirt configuration 'live_migration_completion_action'. This option determines what actions will be taken against a VM after ``live_migration_completion_timeout`` expires. This option is set to 'abort' action by default, that means the live migrate operation will be aborted after completion timeout expires. If option is set to 'force_complete', that means will either pause the VM or trigger post_copy depending on if post copy is enabled and available. Note that the progress based post-copy triggering from the libvirt driver will be removed in next patch [1]. [1] Ife89a705892ad96de6d5f8e68b6e4b99063a7512 Change-Id: I0d286d12e588b431df3d94cf2e65d636bcdea2f8 blueprint: live-migration-force-after-timeout - Fail to live migration if instance has a NUMA topology Live migration is currently totally broken if a NUMA topology is present. This affects everything that's been regrettably stuffed in with NUMA topology including CPU pinning, hugepage support and emulator thread support. Side effects can range from simple unexpected performance hits (due to instances running on the same cores) to complete failures (due to instance cores or huge pages being mapped to CPUs/NUMA nodes that don't exist on the destination host). Until such a time as we resolve these issues, we should alert users to the fact that such issues exist. A workaround option is provided for operators that _really_ need the broken behavior, but it's defaulted to False to highlight the brokenness of this feature to unsuspecting operators. Change-Id: I217fba9138132b107e9d62895d699d238392e761 Signed-off-by: Stephen Finucane <sfinucan@redhat.com> Related-bug: #1289064 - Add DownCellFixture This adds a new testing fixture which allows controlling when nova.context.scatter_gather_cells returns exception results for down cells. This will be useful in functional tests for the down-cell support API microversion to show the API returning minimal construct results for resources in down cells like instances and services. Part of blueprint handling-down-cell Change-Id: Iabc1e55550e8d9d82e20facfaf84316892c5564a - Merge "DRY up SchedulerReportClient init" - Merge "Only construct SchedulerReportClient on first access from API" - Merge "Use external placement in functional tests" - Remove GROUP BY clause from CellMapping.get_by_project_id Under postgresql, the GROUP BY clause in this query fails with: DBError: (psycopg2.ProgrammingError) column "instance_mappings.created_at" must appear in the GROUP BY clause or be used in an aggregate function And we're getting lucky with using this under mysql because we don't have the ONLY_FULL_GROUP_BY mode set (but we probably should). This change removes the GROUP BY clause and re-writes the query to avoid the joinedload() from the instance_mappings table and simply do a subquery to get the cell_ids and then do a simple IN query with the cell_mappings table. This fixes the GROUP BY issue and should also make the query more efficient since we won't have to load InstanceMappings ORM objects. Change-Id: Idc9b5ad019205f447c82a702dd3391fa5dd20228 Closes-Bug: #1804271 - Add py36/py37 functional jobs to the experimental queue Change-Id: I2afc65ea0f19a416a878139e238d54287b4b51c4 - Add python 3.7 unit and functional tox jobs Without these, if you try to run tox -epy37,functional-py37 you'll get a successful tox run, but no actual tests are run, which is rather misleading. Given the generaly availability of python 3.7 this is a bad thing. Running the tests under python 3.7 identified a few minor tests failures, also fixed here. Each is a result of a change in behavior in python 3.7: * printable unicode changes with a new Unicode 11-based unicodedata package * intentionally raising StopIteration in a generator is now considered a RuntimeError, 'return' should be used instead * an exception message is different beween python 3 and python 2, and the guard for it was mapping python 3.5 and 3.6 but not 3.7. zuul configuration is adjusted to add an experimental job for python 3.7 unit. A functional test job is not added, because we don't have 3.6 yet, and we probably want to get through that first. Closes-Bug: #1807976 Closes-Bug: #1807970 Change-Id: I37779a12d3b36eb3dc7e2733d07fe0ed23ab3da6 - Replace ThreadPoolExecutor with GreenThreadPoolExecutor Based on eventlet issue [1] ThreadPoolExecutor doesn't play nice with eventlet in python 3.7. We saw deadlocks in the functional-py37 execution in live migration tests due to live migration using ThreadPoolExecutor. The [1] suggests to replaces ThreadPoolExecutor with futurist.GreenThreadPoolExecutor to avoid deadlocks. So this patch does the replacement and adjusts the unit tests accordingly. As the ThreadPoolExecutor was the last used class from the futures module we remove that from the requirements and add the futurist module instead. [1] https://github.com/eventlet/eventlet/issues/508 Change-Id: Ia56ab43be739e677760bbad5c40caad924425fa5 - Fix destination_type attribute in the bdm_v2 documentation All the clients using block device mapping are using the attribute destination_type and the documentation points to dest_type instead. Change-Id: Iba6e698e826d1a1898fde5cc999592f5821e3ebc Co-Authored-By: David Moreno Garcia <david.mogar@gmail.com> Closes-Bug: #1808358 - Add irrelevant-files for grenade-py3 jobs grenade-py3 job is part of integrated-gate-py35 template now[1] Adding corresponding irrelevant-files for grenade-py3 also same as for other integrated jobs to avoid running it on test etc only changes Example- https://review.openstack.org/#/c/576712/ [1] http://git.openstack.org/cgit/openstack-infra/openstack-zuul-jobs/tree/zuul.d/project-templates.yaml#n1397 Change-Id: I80580449198698edb9a90f2e3df42f225d7deb51 - allow tcp-based consoles in get_console_output Tcp based consoles already offer a logfile but the information resides in a different path in the hosts XML. This change adds an additional xpath for tcp-based consoles. Closes-Bug: #1776481 Change-Id: I9bfd14c72b1e891cb67562f6a07ceea916c3ed65 - Merge "refactor get_console_output() for console logfiles" - Merge "Remove allocations before setting vm_status to SHELVED_OFFLOADED" - Merge "Make compute rpcapi version calculation check all cells" - Use external placement in functional tests Adjust the fixtures used by the functional tests so they use placement database and web fixtures defined by placement code. To avoid making redundant changes, the solely placement- related unit and functional tests are removed, but the placement code itself is not (yet). openstack-placement is required by the functional tests. It is not added to test-requirements as we do not want unit tests to depend on placement in any way, and we enforce this by not having placement in the test env. The concept of tox-siblings is used to ensure that the placement requirement will be satisfied correctly if there is a depends-on. To make this happen, the functional jobs defined in .zuul.yaml are updated to require openstack/placement. tox.ini has to be updated to use a envdir that is the same name as job. Otherwise the tox siblings role in ansible cannot work. The handling of the placement fixtures is moved out of nova/test.py into the functional tests that actually use it because we do not want unit tests (which get the base test class out of test.py) to have anything to do with placement. This requires adjusting some test files to use absolute import. Similarly, a test of the comparison function for the api samples tests is moved into functional, because it depends on placement functionality, TestUpgradeCheckResourceProviders in unit.cmd.test_status is moved into a new test file: nova/tests/functional/test_nova_status.py. This is done because it requires the PlacementFixture, which is only available to functional tests. A MonkeyPatch is required in the test to make sure that the right context managers are used at the right time in the command itself (otherwise some tables do no exist). In the test itself, to avoid speaking directly to the placement database, which would require manipulating the RequestContext objects, resource providers are now created over the API. Co-Authored-By: Balazs Gibizer <balazs.gibizer@ericsson.com> Change-Id: Idaed39629095f86d24a54334c699a26c218c6593 - Remove lock on SchedulerReportClient._create_client This is a follow up to change Idf6e548d725db0181629a451f46b6a3a5850d186 where the compute API started lazy-loading the SchedulerReportClient because of slow startup times, presumably because of the locking when creating SchedulerReportClient. The lock on SchedulerReportClient._create_client is removed since there is no clear indication that it is necessary. It was added in change I02ac615dc26a4a0d1fd28a638f622777e41d14e4 as a precaution: "I've made the _client method synchronized so that in the unlikely event that the resource tracker is trying to do its update job while some other thing is happening, we won't waste the client. This may not be necessary, but probably doesn't harm anything." Long-term we could consider making SchedulerReportClient a global singleton so a TODO is left for that since it would require inspecting cache-sensitive methods to see if a lock is necessary. Change-Id: I127e8b78c0dfd5c42a1e1f509dc4fca1af3d5f89 Related-Bug: #1807219 Related-Bug: #1806912 - DRY up SchedulerReportClient init The _provider_tree and _association_refresh_time variables were being initialized and then overwritten in _create_client, so rather than do that, this change just makes _create_client call clear_provider_cache to do the same thing. A flag is passed to clear_provider_cache to avoid logging something useful on construction of the class instance. Change-Id: Ib342fa48351cd86b34434e07e81e1f3818ec109d - Only construct SchedulerReportClient on first access from API With commit 5d1a50018510b2b281ad33895ae2d9555f5d5b05 each API/AggregateAPI class instance constructs a SchedulerReportClient which holds an in-memory lock during its initialization. With at least 34 API extensions constructing at least one of those two API classes, the accumulated affect of the SchedulerReportClient construction can slow down nova-api startup times, especially when running with multiple API workers, like in our tempest-full CI job (there are 2 workers, so 68 inits). This change simply defers constructing the SchedulerReportClient until it is used, which is only in a few spots in the API code, which should help with nova-api start times. The AggregateAPI also has to construct the SchedulerQueryClient separately because SchedulerClient creates both the query and report clients. Long-term we could consider making it a singleton in nova.compute.api if that is safe (the aggregate code might be relying on some caching aspects in the SchedulerReportClient). Change-Id: Idf6e548d725db0181629a451f46b6a3a5850d186 Closes-Bug: #1807219 - Merge "Drop pre-cellsv2 compat in compute API.get()" - Merge "Handle tags in _bury_in_cell0" - Merge "Only warn about not having computes nodes once in rpcapi" - Merge "Fix typo" - Remove utils.execute() from virt.disk.api. Change-Id: I359a412fcabe9e59c99167b35bb3be6553e5f41b - Remove utils.execute() from the hyperv driver. Change-Id: I2e47b214baec4dbe6657976d1807c0d0710f8f62 - Remove the final user of utils.execute() from virt.images Change-Id: Ic2ff70c73c4528d9d92b5b0aa225558e451cb819 - Remove final users of utils.execute() in libvirt. Let us never speak of these things again. Change-Id: I9bcc66b0dc203e08222276bced77d4409c3adcea - Imagebackend should call processutils.execute directly. What it says on the tin. Change-Id: I43de49851d435e2eb62f6806507f0e68cd690d2c - Handle tags in _bury_in_cell0 We allowed add instance tags when booting in Iac54b9627cb4398e45f1f15a2f4e7d6f86242093, conductor will create tags for us in the selected cell, but we forgot to consider the case that no valid host was found. So we will be unable to filter those instances in cell0 with tags. Change-Id: Idfe37d356b349024dfe963c934728111e1a1d314 closes-bug: #1806515 - Make compute rpcapi version calculation check all cells For top-level services, the compute rpcapi module needs to check for the minimum version of nova-compute in all cells in order to function properly during an upgrade. This moves that module to use the all-cells variant of this routine in the case where [api_database]/connection is set. Change-Id: Icddbe4760eaff30e4e13c1e8d3d5d3f489dac3c4 Closes-Bug: #1807044 - Only warn about not having computes nodes once in rpcapi When we instantiate the compute rpcapi, with upgrade_levels=auto, we determine the minimum service version of nova-compute. If we find no computes, we log a message. This may be known, if we are starting at zero day and no computes have started, but may also indicate a more serious problem. In either case, logging this once per process (especially in the case of multi-worker, multi-module services) is more than enough. Change-Id: I3350026c872a548839b857c53529c1dbbb88091c Related-Bug: #1807044 - Fix typo Change-Id: Ie698db56dfab5cdc03826c8ca0e8c60ad5f2cdc9 Signed-off-by: Stephen Finucane <sfinucan@redhat.com> - Merge "Move nova.libvirt.utils away from using nova.utils.execute()." - Merge "Remove utils.execute() from quobyte libvirt storage driver." - Merge "Move nova-cells-v1 to experimental queue" - Move nova.libvirt.utils away from using nova.utils.execute(). We require it not. Change-Id: I1509fd4225d7ac7e5da35f6f643222df5b73835c - Remove utils.execute() from quobyte libvirt storage driver. Choppy choppy. Change-Id: I21b7b14be8064211bfe9699ec9a9ad2bedd73519 - refactor get_console_output() for console logfiles Refactor/simplify libvirt get_console_output() to allow integration of other console types from the hosts XML description completely restructure get_console_output(): - make common code flow visible, including output and exceptions - simplify selection of console sources with one extensible struct - common checks for each error type (console not found/file not found) - extract pty-specific code functional changes: - none side effects: - Existence of pty-type consoles is now explicitly checked by the code and returns the same 'console logfile for instance does not exist' message as the filebased console. Before, this case most likely triggered some obscure logmessage from readpty(). API-functionality is unchanged by this, both old and new code return an empty string. Closes-Bug: #1776481 Change-Id: I3eac592f938a8d4ba813df535070e99b3130e863 - Merge "Add docs for (initial) allocation ratio configuration" - Merge "Note the aggregate allocation ratio restriction in scheduler docs" - Merge "Add compute_node ratio online data migration script" - Merge "Add ratio online data migration when load compute node" - Final release note for versioned notification transformation As the last versioned notification transformation patch I019e88fabd1d386c0d6395a7b1969315873485fd has been merged this patch adds a release note that the versioned interface is complete. Change-Id: I22586e470356cca5238b94faf257d8886742618f Implements: bp versioned-notification-transformation-stein - Merge "Transform scheduler.select_destinations notification" - Add API ref guideline for body text Add guideline for body text in the API reference. Change-Id: Ib03b562ffe189f24293eb77dd0c0ed5ec679172a Partial-Bug: #1793034 - Merge "Transform compute_task notifications" - Merge "Remove Placement API reference" - Merge "Ignore MoxStubout deprecation warnings" - Merge "Create BDMs/tags in cell with instance when over-quota" - Merge "Drop cruft code for all_tenants behaviour" - Merge "Use new ``initial_xxx_allocation_ratio`` CONF" - Merge "Remove utils.execute() from libvirt remotefs calls." - Merge "Use links to placement docs in nova docs" - Merge "Fixed concurrent access to direct io test file" - Merge "Remove placement perf check" - Merge "Add secret=true to fixed_key configuration parameter" - Merge "Add functional regression test for bug 1806064" - Remove allocations before setting vm_status to SHELVED_OFFLOADED Tempest is intermittently failing a test which does the following: 1. Create a server. 2. Shelve offload it. 3. Unshelve it. Tempest waits for the server status to be SHELVED_OFFLOADED before unshelving the server, which goes through the scheduler to pick a compute node and claim resources on it. When shelve offloading a server, the resource allocations for the instance and compute node it was on are cleared, which will also delete the internal consumer record in the placement service. The race is that the allocations are removed during shelve offload *after* the server status changes to SHELVED_OFFLOADED. This leaves a window where unshelve is going through the scheduler and gets the existing allocations for the instance, which are non-empty and have a consumer generation. The claim_resources method in the scheduler then uses that consumer generation when PUTing the allocations. That PUT fails because in between the GET and PUT of the allocations, placement has deleted the internal consumer record. When PUTing the new allocations with a non-null consumer generation, placement returns a 409 conflict error because for a new consumer it expects the "consumer_generation" parameter to be None. This change handles the race by simply making sure the allocations are deleted (along with the related consumer record in placement) *before* the instance.vm_status is changed. Change-Id: I2a6ccaff904c1f0759d55feeeef0ec1da32c65df Closes-Bug: #1798688 - Drop pre-cellsv2 compat in compute API.get() This removes the nova-osapi_compute service version compatibility check for cells v2 which was added in Newton. A "nova-status upgrade check" was added for that in Rocky: Ie2bc4616439352850cf29a9de7d33a06c8f7c2b8 And it is also causing issues with functional tests where instances are buried in cell0 and because we don't use the instance mapping, we fail to find the instance. As a result of this, compute API tests that rely on retrieving a real instance out of the database will also need to make sure an associated instance mapping record exists. Change-Id: I11083aa3c78bd8b6201558561457f3d65007a177 Closes-Bug: #1800472 - Move nova-cells-v1 to experimental queue Cells v1 has been deprecated since Pike. CERN has been running with cells v2 since Queens. The cells v1 job used to be the only thing that ran with nova-network, but we switched the job to use neutron in Rocky: I9de6b710baffdffcd1d7ab19897d5776ef27ae7e The cells v1 job also suffers from intermittent test failures, like with snapshot tests. Given the deprecated nature of cells v1 we should just move it to the experimental queue so that it can be run on-demand if desired but does not gate on all nova changes, thus further moving along its eventual removal. This change also updates the cells v1 status doc and adds some documentation about the different job queues that nova uses for integration testing. Change-Id: I74985f1946fffd0ae4d38604696d0d4656b6bf4e Closes-Bug: #1807407 - Merge "Update compute API.get() stubs in test_access_ips" - Merge "Update compute API.get() stubs for test_disk_config" - Merge "Update compute API.get() stubs for test_*security_groups" - Merge "Use tempest [compute]/build_timeout in evacuate tests" - Ignore MoxStubout deprecation warnings Like how we ignore mox3 usage warnings, we can ignore MoxStubout deprecation warnings as well. In a py35 unit test run, these warnings show up over 1000 times (probably closer to 17K+ based on the number of unit tests we run) and bloat the console logs. Change-Id: I598999303c8e91f448e48dea1049a24332ba2f53 Closes-Bug: #1778784 - Merge "libvirt: Refactor handling of PCIe root ports" - Fixed concurrent access to direct io test file When instances are deployed concurrently on multiple compute nodes, nova-compute may fail on checking direct io capabilities when instance_path is shared across nodes. This fails on shared storage, that doesn't support concurrent write access to the same file, i.e. Virtuozzo Storage. To fix that we add random string at the end of test file name. Closes-Bug: #1727369 Change-Id: I085ade355fba0e9727a38d2dcbc9cffa735a62d1 Signed-off-by: Pavel Glushchak <pglushchak@virtuozzo.com> - Merge "Change the default values of XXX_allocation_ratio" - Merge "Remove ironic/pike note from *_allocation_ratio help" - Merge "Delete NeutronLinuxBridgeInterfaceDriver" - Merge "Clean up cpu_shared_set config docs" - Merge "modify the avaliable link" - Merge "Update mailinglist from dev to discuss" - Merge "Add a bug tag for nova doc" - Add docs for (initial) allocation ratio configuration This adds a new section to the admin scheduler configuration docs devoted to allocation ratios to call out the differences between the override config options and the initial ratio options, and how they interplay with the resource provider inventory allocation ratio override that can be performed via the placement REST API directly. This moves the note about bug 1804125 into the new section and also links to the docs from the initial allocation ratio config option help text. Part of blueprint initial-allocation-ratios Related-Bug: #1804125 Change-Id: I7d8e822cd40dccaf5244e2cd95fa1af43fa9ed87 - Note the aggregate allocation ratio restriction in scheduler docs This borrows from the release note in change I01f20f275bbd5451ace5c1e6f41ab38d488dae4e to document the regression, introduced in Ocata, where allocation ratio settings in the aggregate core/ram/disk filters are not honored because of placement being used by the FilterScheduler. While there is related work going on around this in blueprint initial-allocation-ratios and blueprint placement-aggregate-allocation-ratios, it is still a limitation in the current code base and needs to be called out in the docs. Change-Id: Ifaf596a8572637f843f47daf5adce394b0365676 Related-Bug: #1804125 - Add compute_node ratio online data migration script This patch adds an online data migration script to process the ratio with 0.0 or None value. If it's an existing record with 0.0 values, we'd want to do what the compute does, which is use the configure ``xxx_allocation_ratio`` config if it's not None, and fallback to using the ``initial_xxx_allocation_ratio`` otherwise. Change-Id: I3a6d4d3012b3fffe94f15a724dd78707966bb522 blueprint: initial-allocation-ratios - Add ratio online data migration when load compute node This patch adds an online data migrations for any compute_nodes with existing ``0.0`` and ``None`` allocation ratio. If it's an existing record with 0.0 values, we will replace it with the configure ``xxx_allocation_ratio`` config if it's not None, and fallback to using the ``initial_xxx_allocation_ratio`` otherwise. Change-Id: Ic137d837c7b1d29f56a45a01b3b104d6d2c698df blueprint: initial-allocation-ratios - Use tempest [compute]/build_timeout in evacuate tests Waiting 30 seconds for an evacuate to complete is not enough time on some slower CI test nodes. This change uses the same build timeout configuration from tempest to determine the overall evacuate timeout in our evacuate tests. Change-Id: Ie5935ae54d2cbf1a4272e93815ee5f67d3ffe2eb Closes-Bug: #1806925 - Merge "Deprecate the nova-xvpvncproxy service" - Merge "Deprecate the nova-console service" - Merge "Always read-deleted=yes on lazy-load" - Merge "Remove utils.execute() calls from xenapi." - Update mailinglist from dev to discuss openstack-dev was decomissioned this night in https://review.openstack.org/621258 Update openstack-dev to openstack-discuss Change-Id: If51f5d5eb710e06216f6d6981a70d70b6b5783cc - Clean up header encoding handling in compute API PEP 3333[1] says request and response headers (within the application) should be treated as native `str` (whatever the Python version). It's the job of the WSGI server to translate from `str` to reasonable output on the outgoing socket connection. This was already mostly correct but two issues were discovered while trying to create integration tests that use the value of the location response header when POSTing to create a server. In python2 it was working. In Python3 the header had a value of location: http://192.168.1.76/compute/v2.1/b'http:/192.168.1.76/compute/v2.1/servers/fad04042-850b-443a-9e48-773111cbc981' (note the b'...' bounding the full url on the end). This was happening for two reasons: * nova/api/openstack/compute/servers.py independently encodes the location header to utf-8, instead of using the centralized handling in nova/api/openstack/wsgi.py This meant that the value of the location header would arrive, in Python 3, at the centralized handling as a bytestring. * The centralized handling in nova/api/openstack/wsgi.py was incorrectly using the six.text_type() method. That is simply an alias to unicode in python 2 and str in python3. In python3 when given a bytestring as the only argument object.__str()__ is called on the argument. Which yields b'whatever'. At that stage, the handling in the web server which processes a location header to check for the presence of a host and prefix already at the start of the provided location will find b'...' and do a concatenation without any replace. So, because of all that, this patch includes three changes: * The server creation location header code does no encoding and relies on the centralized handling. * The centralized handling removes the use of text_type() as a function because that is redundant with the safe_encode and safe_decode changes in the same loop. * Doc strings and comments in the ResponseObject are clarified with regard to this encoding topic. Also, comments in Resource._process_stack are updated to correspond with the changes above. The code is not changed, as they are already doing the right thing: The comment was misrepresenting what was going on. There is some duplication of code between these two areas, but the code is too inscrutable for me to be willing to change a part that isn't presenting an explicit bug. Tests for the internal production of the location header are adjusted to reflect these changes. [1] https://www.python.org/dev/peps/pep-3333/#a-note-on-string-types Change-Id: I163c417375678b428ac77aac87ccafaf1f6186ab Closes-Bug: #1795425 - Merge "Refactor TestEvacuateDeleteServerRestartOriginalCompute" - Remove utils.execute() from libvirt remotefs calls. Someone should consider if paramiko is a better route for these long term. Change-Id: I0ad6ffa20f7658b917f5235217493c69c688b1e0 - Remove utils.execute() calls from xenapi. They do not please me. Change-Id: Ibe2f478288db42f8168b52dfc14d85ab92ace74b - Merge "Fix InstanceNotFound during _destroy_evacuated_instances" - Merge "SIGHUP n-cpu to clear provider tree cache" - Create BDMs/tags in cell with instance when over-quota If the server create build request fails the quota check after the instance record has been created in a cell, we also need to create the BDMs and tags in that cell so that users can still see the tags on the server and so the API can properly cleanup volume attachments when the server is deleted. This change updates _cleanup_build_artifacts to create BDMs and tags in the same cell as the instance prior to deleting the build request and request spec and adjusts the assertions in the related functional test to show the bug is fixed. As for instances that get buried in cell0 due to scheduling failures, the tags are not created there so comments are left in those code paths to fix that issue as well, but that can be done separately from this patch. Change-Id: I1a9bdb596f74605ab4613c9cb2574e976aebbd8c Closes-Bug: #1806064 - Add secret=true to fixed_key configuration parameter Add secret=true to fixed_key configuration parameter as that value shouldn't be logged. Change-Id: Ie6da21e8680b2deb6b1da3add31cd725ba855c1c Closes-Bug: #1806471 - Add functional regression test for bug 1806064 Change I9269ffa2b80e48db96c622d0dc0817738854f602 in Pike introduced a race condition where creating multiple servers concurrently can fail the second instances quota check which happens in conductor after the instance record is created in the cell database but its related BDMs and tags are not stored in the cell DB. When deleting the server from the API, since the BDMs are not in the cell database with the instance, they are not "seen" and thus the volume attachments are not deleted and the volume is orphaned. As for tags, you should be able to see the tags on the server in ERROR status from the API before deleting it. This change adds a functional regression test to show both the volume attachment and tag issue when we fail the quota check in conductor. Change-Id: I21c2189cc1de6b8e4857de77acd9f1ef8b6ea9f6 Related-Bug: #1806064 - Fix sloppy initialization of the new disk ops semaphore. Some tests weren't calling init_host, so the semaphore was None. This caused the smoke to come out of nova's tests in ways that would be less confusing if they'd failed during the testing of the implementing patch. Instead, set the semaphore to being unbounded, and then override that later if the user has in fact specified a limit. This relies on init_host being called very early, but that should be true already. Change-Id: If144be253f78b14cef60200a46aefc02c0e19ced Closes-Bug: #1806123 - Merge "Revert "Add regression test for bug 1550919"" - Merge "Fix misuse of assertTrue" - Revert "Add regression test for bug 1550919" This reverts commit bbe88786fc90c2106f9fae0156ee7b09ece9a83b. The new tests are racy and causing a modest amount of failures in the gate since the change merged, so it is probably best to just revert the tests so they can be robustified. Change-Id: I18bd68ba6e59aba4c450eb85e6f4450d7044b1e9 Related-Bug: #1806126 - Use new ``initial_xxx_allocation_ratio`` CONF This patch adds new ``initial_xxx_allocation_ratio`` CONF options and modifies the resource tracker's initial compute node creation to use these values. During the update_available_resource periodic task, the allocation ratios reported to inventory for VCPU, MEMORY_MB and DISK_GB will be based on: * If CONF.*_allocation_ratio is set, use it. This overrides everything including externally set allocation ratios via the placement API. * If reporting inventory for the first time, the CONF.initial_*_allocation_ratio value is used. * For everything else, the inventory reported remains unchanged which allows operators to set the allocation ratios on the inventory records in placement directly without worrying about nova-compute overwriting those changes. As a result, several TODOs are removed from the virt drivers that implement the update_provider_tree interface and a TODO in the resource tracker about unset-ing allocation ratios to get back to initial values. Change-Id: I14a310b20bd9892e7b34464e6baad49bf5928ece blueprint: initial-allocation-ratios - Remove placement perf check gate/post_test_perf_check.sh did some simplistic performance testing of placement. With the extraction of placement we want it to happen during openstack/placement CI changes so we remove it here. The depends-on is to the placement change that turns it on there, using an independent (and very small) job. Depends-On: I93875e3ce1f77fdb237e339b7b3e38abe3dad8f7 Change-Id: I30a7bc9a0148fd3ed15ddd997d8dab11e4fb1fe1 - Mention size limit on user data in docs The API reference for the "user_data" parameter to server create and rebuild mentions the size restriction but the user docs did not, so this adds that note. While doing this, several other user-facing docs that mention user data link back to the overall user-data doc so that we can centralize any further documentation about that topic in a single location. Change-Id: Id4a61d58150337e0dec223d4d2741336ed6d5387 Closes-Bug: #1804653 - Transform scheduler.select_destinations notification Transform the scheduler.select_destinations.start and scheduler.select_destinations.end notifications to the versioned notification framework. Change-Id: I019e88fabd1d386c0d6395a7b1969315873485fd Implements: bp versioned-notification-transformation-stein - Merge "Add I/O Semaphore to limit concurrent disk ops" - SIGHUP n-cpu to clear provider tree cache An earlier change [1] allowed [compute]resource_provider_association_refresh to be set to zero to disable the resource tracker's periodic refresh of its local copy of provider traits and aggregates. To allow for out-of-band changes to placement (e.g. via the CLI) to be picked up by the resource tracker in this configuration (or a configuration where the timer is set to a high value) this change clears the provider tree cache when SIGHUP is sent to the compute service. The next periodic will repopulate it afresh from placement. [1] Iec33e656491848b26686fbf6fb5db4a4c94b9ea8 Change-Id: I65a7ee565ca5b3ec6c33a2fd9e39d461f7d90ed2 - libvirt: Refactor handling of PCIe root ports Add a separate method, _guest_needs_pcie(), to check for the prerequisites for adding PCIe root port entries. And simplify the monster 'if' conditional into multiple readable ones. While at it, add a TODO note about an assumption (which can become invalid in the future) we're making about QEMU machine types. Change-Id: I05c9168569c4c3eeeb83695a053b2fd94240157c Suggested-by: Andrea Bolog…
I found this issue because I saw that eventlet does not patch SimpleQueue at all, which seems to be the cause of this. Why does it (not) do that? |
Python 3.7 and later implement queue.SimpleQueue in C, causing a deadlock when using ThreadPoolExecutor with eventlet. To avoid this deadlock we now replace the C implementation with the Python implementation on monkey_patch for Python versions 3.7 and higher.
Trying to use the gRPC library in a Python program that uses the Eventlet library doesn't work as expected, and we end up with deadlocks and blocked threads. This patch adds a custom eventlet IO manager to provide compatibility between the Eventlet and gRPC libraries. The code includes 2 workarounds for existing eventlet bugs, but this code is compatible with the proposed PRs to solve them, so there should be no problem if/when implements a fix for them: - eventlet/eventlet#508 - eventlet/eventlet#599 An extra import and call is necessary for applications to use gRPC with eventlets. This call must be done after eventlet has monkey patched the Python libraries. The code would look something like this: import eventlet eventlet.monkey_patch() # noqa import grpc from grpc.experimental import eventlet as grpc_eventlet if __name__ == '__main__': grpc_eventlet.init_eventlet() Resolve grpc#15923
Trying to use the gRPC library in a Python program that uses the Eventlet library doesn't work as expected, and we end up with deadlocks and blocked threads. This patch adds a custom eventlet IO manager to provide compatibility between the Eventlet and gRPC libraries. The code includes 2 workarounds for existing eventlet bugs, but this code is compatible with the proposed PRs to solve them, so there should be no problem if/when implements a fix for them: - eventlet/eventlet#508 - eventlet/eventlet#599 An extra import and call is necessary for applications to use gRPC with eventlets. This call must be done after eventlet has monkey patched the Python libraries. The code would look something like this: import eventlet eventlet.monkey_patch() # noqa import grpc from grpc.experimental import eventlet as grpc_eventlet if __name__ == '__main__': grpc_eventlet.init_eventlet() Resolve grpc#15923
Trying to use the gRPC library in a Python program that uses the Eventlet library doesn't work as expected, and we end up with deadlocks and blocked threads. This patch adds a custom eventlet IO manager to provide compatibility between the Eventlet and gRPC libraries. The code includes 2 workarounds for existing eventlet bugs, but this code is compatible with the proposed PRs to solve them, so there should be no problem if/when implements a fix for them: - eventlet/eventlet#508 - eventlet/eventlet#599 An extra import and call is necessary for applications to use gRPC with eventlets. This call must be done after eventlet has monkey patched the Python libraries. The code would look something like this: import eventlet eventlet.monkey_patch() # noqa import grpc from grpc.experimental import eventlet as grpc_eventlet if __name__ == '__main__': grpc_eventlet.init_eventlet() Resolve grpc#15923
py3.7 deadlock with monkey patch of stdlib thread modules + use of ThreadPoolExecutor 3.7, ThreadPoolExecuter was changed to use queue.SimpleQueue; on 3.6 it uses queue.Queue. No issue in 3.6 The python37 default SimpleQueue was implemented with C code, which will cause hang the main thread. Commit 2a71b8e introduce eventlet for unittest, but I did not find why we need it. Check other project they also use ThreadPoolExecutor, but not all of them introduce eventlet. Maybe GreenThreadPoolExecutor is another solution. Ref: ThreadPoolExecutor https://docs.python.org/3.7/library/concurrent.futures.html#threadpoolexecutor Same isses about ThreadPoolExecutor and eventlet https://bugs.launchpad.net/designate/+bug/1782647 eventlet/eventlet#508 gevent/gevent#1253 ClericPy/torequests#10 https://bugs.python.org/issue34173 gevent/gevent#1248 gevent/gevent#1251 http://lists.openstack.org/pipermail/openstack-dev/2018-July/132473.html https://www.gitmemory.com/issue/eventlet/eventlet/508/511101004 Change-Id: I263f7222119d8d0c89cfc2a4758fe376ce1afd60
* Update cyborg from branch 'master' - Merge "change default SimpleQueue to _PySimpleQueue for queue" - change default SimpleQueue to _PySimpleQueue for queue py3.7 deadlock with monkey patch of stdlib thread modules + use of ThreadPoolExecutor 3.7, ThreadPoolExecuter was changed to use queue.SimpleQueue; on 3.6 it uses queue.Queue. No issue in 3.6 The python37 default SimpleQueue was implemented with C code, which will cause hang the main thread. Commit 2a71b8e introduce eventlet for unittest, but I did not find why we need it. Check other project they also use ThreadPoolExecutor, but not all of them introduce eventlet. Maybe GreenThreadPoolExecutor is another solution. Ref: ThreadPoolExecutor https://docs.python.org/3.7/library/concurrent.futures.html#threadpoolexecutor Same isses about ThreadPoolExecutor and eventlet https://bugs.launchpad.net/designate/+bug/1782647 eventlet/eventlet#508 gevent/gevent#1253 ClericPy/torequests#10 https://bugs.python.org/issue34173 gevent/gevent#1248 gevent/gevent#1251 http://lists.openstack.org/pipermail/openstack-dev/2018-July/132473.html https://www.gitmemory.com/issue/eventlet/eventlet/508/511101004 Change-Id: I263f7222119d8d0c89cfc2a4758fe376ce1afd60
Trying to use the gRPC library in a Python program that uses the Eventlet library doesn't work as expected, and we end up with deadlocks and blocked threads. This patch adds a custom eventlet IO manager to provide compatibility between the Eventlet and gRPC libraries. The code includes 2 workarounds for existing eventlet bugs, but this code is compatible with the proposed PRs to solve them, so there should be no problem if/when implements a fix for them: - eventlet/eventlet#508 - eventlet/eventlet#599 An extra import and call is necessary for applications to use gRPC with eventlets. This call must be done after eventlet has monkey patched the Python libraries. The code would look something like this: import eventlet eventlet.monkey_patch() # noqa import grpc from grpc.experimental import eventlet as grpc_eventlet if __name__ == '__main__': grpc_eventlet.init_eventlet() Resolve grpc#15923
Python 3.7 and later implement queue.SimpleQueue in C, causing a deadlock when using ThreadPoolExecutor with eventlet. To avoid this deadlock we now replace the C implementation with the Python implementation on monkey_patch for Python versions 3.7 and higher.
There's a py3.7 deadlock when eventlet.patcher.monkey_patch(thread=True) is used with concurrent.futures.ThreadPoolExecutor().
Here's some sample code that deadlocks: https://bugs.python.org/file47709/bpo34173-recreate.py
Notice that it does not deadlock if the monkey_patch is removed.
I'm not sure if this is a bug in eventlet or concurrent.futures of the py3.7 standard library. I also have a py3.7 issue opened here: https://bugs.python.org/issue34173
If I switch /usr/lib/python3.7/concurrent/futures/thread.py back to use queue.Queue() (which was the case for py3.6) the deadlock goes away. This was changed in py3.7 from Queue to SimpleQueue:
The text was updated successfully, but these errors were encountered: