)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"cda025ea9a173b31d40fc29da7145af38ef76a64","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"7185e2df_1a3d4837","updated":"2026-06-19 11:23:00.000000000","message":"can you please rebase this and fix merge conflicts - most of the fails we in tempest are from backup tests.","commit_id":"dbcaac281185b535cbb28ee7dad718d5baaec79f"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"693b7115ab5d9e74ea401ddb9a631bf84f5bc11f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"a10a5ecd_0453e1a3","updated":"2026-06-11 06:07:03.000000000","message":"fyi, we are getting this error in c-backup statup in tempest job\ncan we fix this in this patch \n\n```ERROR cinder ValueError: \u0027workers\u0027 must be an int \u003e\u003d 1, not: None (NoneType)\n```\n\nFull logs\n\n```\n2026-06-11 05:42:41.168562 | controller | + functions-common:service_check:1708      :   for service in ${ENABLED_SERVICES//,/ }\n2026-06-11 05:42:41.170707 | controller | + functions-common:service_check:1710      :   sudo systemctl is-enabled devstack@c-bak.service\n2026-06-11 05:42:41.180534 | controller | enabled\n2026-06-11 05:42:41.183614 | controller | + functions-common:service_check:1714      :   sudo systemctl status devstack@c-bak.service --no-pager\n2026-06-11 05:42:41.196217 | controller | Ã— devstack@c-bak.service - Devstack devstack@c-bak.service\n2026-06-11 05:42:41.196230 | controller |      Loaded: loaded (/etc/systemd/system/devstack@c-bak.service; enabled; preset: enabled)\n2026-06-11 05:42:41.196234 | controller |      Active: failed (Result: exit-code) since Thu 2026-06-11 05:42:14 UTC; 26s ago\n2026-06-11 05:42:41.196236 | controller |    Duration: 1.287s\n2026-06-11 05:42:41.196239 | controller |    Main PID: 90065 (code\u003dexited, status\u003d1/FAILURE)\n2026-06-11 05:42:41.196250 | controller |         CPU: 1.209s\n2026-06-11 05:42:41.196253 | controller |\n2026-06-11 05:42:41.196256 | controller | Jun 11 05:42:14 npe9fb4337ffce4 cinder-backup[90065]: ERROR cinder     self._manager.add(ServiceWrapper, workers, args\u003d(service,))\n2026-06-11 05:42:41.196259 | controller | Jun 11 05:42:14 npe9fb4337ffce4 cinder-backup[90065]: ERROR cinder   File \"/opt/stack/data/venv/lib/python3.12/site-packages/cotyledon/_service_manager.py\", line 302, in add\n2026-06-11 05:42:41.196262 | controller | Jun 11 05:42:14 npe9fb4337ffce4 cinder-backup[90065]: ERROR cinder     _utils.check_workers(workers, 1)\n2026-06-11 05:42:41.196265 | controller | Jun 11 05:42:14 npe9fb4337ffce4 cinder-backup[90065]: ERROR cinder   File \"/opt/stack/data/venv/lib/python3.12/site-packages/cotyledon/_utils.py\", line 67, in check_workers\n2026-06-11 05:42:41.196267 | controller | Jun 11 05:42:14 npe9fb4337ffce4 cinder-backup[90065]: ERROR cinder     raise ValueError(msg)\n2026-06-11 05:42:41.196270 | controller | Jun 11 05:42:14 npe9fb4337ffce4 cinder-backup[90065]: ERROR cinder ValueError: \u0027workers\u0027 must be an int \u003e\u003d 1, not: None (NoneType)\n2026-06-11 05:42:41.196273 | controller | Jun 11 05:42:14 npe9fb4337ffce4 cinder-backup[90065]: ERROR cinder\n2026-06-11 05:42:41.196275 | controller | Jun 11 05:42:14 npe9fb4337ffce4 systemd[1]: devstack@c-bak.service: Main process exited, code\u003dexited, status\u003d1/FAILURE\n2026-06-11 05:42:41.196278 | controller | Jun 11 05:42:14 npe9fb4337ffce4 systemd[1]: devstack@c-bak.service: Failed with result \u0027exit-code\u0027.\n2026-06-11 05:42:41.196281 | controller | Jun 11 05:42:14 npe9fb4337ffce4 systemd[1]: devstack@c-bak.service: Consumed 1.209s CPU time, 81.6M memory peak, 0B memory swap peak.\n2026-06-11 05:42:41.199115 | controller | + functions-common:service_check:1         :   exit_trap\n```","commit_id":"dbcaac281185b535cbb28ee7dad718d5baaec79f"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"ce400e253e56d545a56fcb3dadac6af9db59b009","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":16,"id":"5f4cfbbf_2f5e3c89","in_reply_to":"62a3c131_7b7be4bc","updated":"2026-06-11 12:53:51.000000000","message":"this being \"somewhat\" fixed here https://review.opendev.org/c/openstack/cinder/+/992876","commit_id":"dbcaac281185b535cbb28ee7dad718d5baaec79f"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"e1d139c7f9a002ae0e1a8c3f111eb606b508aae7","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":16,"id":"62a3c131_7b7be4bc","in_reply_to":"a10a5ecd_0453e1a3","updated":"2026-06-11 06:07:48.000000000","message":"https://4307127f9f165a0e73f6-6ad2866cb2f2d9b07fba7722c401096a.ssl.cf1.rackcdn.com/openstack/47740badd4d0454f84e593279ace6d26/job-output.txt","commit_id":"dbcaac281185b535cbb28ee7dad718d5baaec79f"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"dbebdd955681f2c9181966b4eb283b2ecee51408","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"c88438c9_480f207a","updated":"2026-06-24 03:48:56.000000000","message":"backup tests are resolved with this patch in tempest so +1\nbut there are other tests  failing.","commit_id":"34c049bccdaf1aeed49d53207730b96e6ed5ff11"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"58064603f42ca3d7697d7a2a6f158fe87f5679bd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"2d0c606b_713246eb","updated":"2026-06-24 01:02:10.000000000","message":"recheck\nto see native threading tempest job tests status","commit_id":"34c049bccdaf1aeed49d53207730b96e6ed5ff11"}],"cinder/backup/api.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"1087216626b790430db86c82c8a4dabb09ec006e","unresolved":true,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"\"\"\"Handles all requests relating to the volume backups service.\"\"\""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from __future__ import annotations"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from datetime import datetime"},{"line_number":23,"context_line":"import random"}],"source_content_type":"text/x-python","patch_set":16,"id":"dff420d9_46c7b823","line":20,"updated":"2026-06-10 15:31:33.000000000","message":"Not needed?","commit_id":"dbcaac281185b535cbb28ee7dad718d5baaec79f"}],"cinder/backup/chunkeddriver.py":[{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"94a2af0cb05df8742cd8556219ea3e96941d5976","unresolved":true,"context_lines":[{"line_number":407,"context_line":"        object_meta[\u0027list\u0027] \u003d object_list"},{"line_number":408,"context_line":"        object_meta[\u0027id\u0027] \u003d object_id"},{"line_number":409,"context_line":""},{"line_number":410,"context_line":"        time.sleep(0)"},{"line_number":411,"context_line":""},{"line_number":412,"context_line":"    def _prepare_output_data(self, data):"},{"line_number":413,"context_line":"        if self.compressor is None:"}],"source_content_type":"text/x-python","patch_set":10,"id":"9e8671f5_a16aa3e9","line":410,"updated":"2026-04-06 12:43:44.000000000","message":"eventlet.sleep(0)\n and time.sleep(0) are different as far as i understand?","commit_id":"eec9131d47ffd3f8243cc7dcff3abf72d6b26c6b"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"9682379366e19cfce399208d81b3d9c6b6423fec","unresolved":false,"context_lines":[{"line_number":407,"context_line":"        object_meta[\u0027list\u0027] \u003d object_list"},{"line_number":408,"context_line":"        object_meta[\u0027id\u0027] \u003d object_id"},{"line_number":409,"context_line":""},{"line_number":410,"context_line":"        time.sleep(0)"},{"line_number":411,"context_line":""},{"line_number":412,"context_line":"    def _prepare_output_data(self, data):"},{"line_number":413,"context_line":"        if self.compressor is None:"}],"source_content_type":"text/x-python","patch_set":10,"id":"beadfd9e_9c19f591","line":410,"in_reply_to":"9e8671f5_a16aa3e9","updated":"2026-06-04 14:58:31.000000000","message":"When running in eventlet mode, they are the same thing.","commit_id":"eec9131d47ffd3f8243cc7dcff3abf72d6b26c6b"}],"cinder/cmd/backup.py":[{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"32c9acb62d15e38c90851b4834022fbf00693919","unresolved":true,"context_lines":[{"line_number":129,"context_line":"                                        service_name\u003d\u0027backup\u0027,"},{"line_number":130,"context_line":"                                        process_number\u003d1,"},{"line_number":131,"context_line":"                                        semaphore\u003dsemaphore)"},{"line_number":132,"context_line":"        service.serve(server)"},{"line_number":133,"context_line":"        service.wait()"}],"source_content_type":"text/x-python","patch_set":16,"id":"1c355d2e_8d69deab","line":132,"updated":"2026-06-11 07:03:11.000000000","message":"so this seems to be issue, `serve` also except workers and default is None, which run a `single process mode` as logged above.\n\n```\n\ndef serve(server, workers\u003dNone):\n    global _launcher\n    if _launcher:\n        raise RuntimeError(_(\u0027serve() can only be called once\u0027))\n\n    _launcher \u003d service.launch(CONF, server, workers\u003dworkers,\n                               restart_method\u003d\u0027mutate\u0027)\n\n```\n\nand this is same for scheduler as well but not for api and volume service.\n\nthey are using\n\n```\n\ndef _launch_services() -\u003e None:\n    launcher \u003d service.process_launcher()\n```\nto\n\n```\ndef process_launcher() -\u003e service.ProcessLauncher:\n    return service.ProcessLauncher(CONF, restart_method\u003d\u0027mutate\u0027)\n\n```","commit_id":"dbcaac281185b535cbb28ee7dad718d5baaec79f"}],"cinder/tests/unit/backup/test_backup.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"e93687c096408a19d47f74fc58ad06cb10a1091b","unresolved":false,"context_lines":[{"line_number":39,"context_line":"from cinder.objects import fields"},{"line_number":40,"context_line":"from cinder import quota"},{"line_number":41,"context_line":"from cinder import utils as cinder_utils"},{"line_number":42,"context_line":"from cinder.tests import fake_driver"},{"line_number":43,"context_line":"from cinder.tests.unit.api.v3 import fakes as v3_fakes"},{"line_number":44,"context_line":"from cinder.tests.unit import fake_constants as fake"},{"line_number":45,"context_line":"from cinder.tests.unit import known_issues as issues"}],"source_content_type":"text/x-python","patch_set":16,"id":"34cf6871_2790c0aa","line":42,"updated":"2026-06-10 18:44:11.000000000","message":"pep8: H306: imports not in alphabetical order (cinder.utils, cinder.tests.fake_driver)","commit_id":"dbcaac281185b535cbb28ee7dad718d5baaec79f"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"673db85dcd4a949106e96965c11658392455fd1c","unresolved":false,"context_lines":[{"line_number":39,"context_line":"from cinder.objects import fields"},{"line_number":40,"context_line":"from cinder import quota"},{"line_number":41,"context_line":"from cinder import utils as cinder_utils"},{"line_number":42,"context_line":"from cinder.tests import fake_driver"},{"line_number":43,"context_line":"from cinder.tests.unit.api.v3 import fakes as v3_fakes"},{"line_number":44,"context_line":"from cinder.tests.unit import fake_constants as fake"},{"line_number":45,"context_line":"from cinder.tests.unit import known_issues as issues"}],"source_content_type":"text/x-python","patch_set":17,"id":"b45d0f41_6a13c927","line":42,"updated":"2026-06-22 14:46:31.000000000","message":"pep8: H306: imports not in alphabetical order (cinder.utils, cinder.tests.fake_driver)","commit_id":"f8702043344eb662c5b021f56ff9ec64b5936407"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"941954a437658bcc66bb7926cc0f90ccb47c20f0","unresolved":true,"context_lines":[{"line_number":1992,"context_line":""},{"line_number":1993,"context_line":"    @test.testtools.skipIf(issues.TPOOL_KILLALL_ISSUE, \u0027tpool.killall bug\u0027)"},{"line_number":1994,"context_line":"    @test.testtools.skipIf(cinder_utils.is_native_threading(),"},{"line_number":1995,"context_line":"                           \u0027not supported for native threading\u0027)"},{"line_number":1996,"context_line":"    def test_default_tpool_size(self):"},{"line_number":1997,"context_line":"        \"\"\"Test we can set custom tpool size.\"\"\""},{"line_number":1998,"context_line":"        tpool._nthreads \u003d 20"}],"source_content_type":"text/x-python","patch_set":17,"id":"540ad068_5ca827db","line":1995,"updated":"2026-06-23 05:44:25.000000000","message":"AttributeError: module \u0027cinder.utils\u0027 has no attribute \u0027is_native_threading\u0027","commit_id":"f8702043344eb662c5b021f56ff9ec64b5936407"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"ab7caf187a13fd45d2d2a3952fff311b882f3215","unresolved":false,"context_lines":[{"line_number":1992,"context_line":""},{"line_number":1993,"context_line":"    @test.testtools.skipIf(issues.TPOOL_KILLALL_ISSUE, \u0027tpool.killall bug\u0027)"},{"line_number":1994,"context_line":"    @test.testtools.skipIf(cinder_utils.is_native_threading(),"},{"line_number":1995,"context_line":"                           \u0027not supported for native threading\u0027)"},{"line_number":1996,"context_line":"    def test_default_tpool_size(self):"},{"line_number":1997,"context_line":"        \"\"\"Test we can set custom tpool size.\"\"\""},{"line_number":1998,"context_line":"        tpool._nthreads \u003d 20"}],"source_content_type":"text/x-python","patch_set":17,"id":"00c20e15_3394d37f","line":1995,"in_reply_to":"540ad068_5ca827db","updated":"2026-07-09 14:57:23.000000000","message":"Done","commit_id":"f8702043344eb662c5b021f56ff9ec64b5936407"}],"cinder/utils.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"e763f8fd576d39b1afece85ccfe7468c5901f443","unresolved":true,"context_lines":[{"line_number":99,"context_line":"    return tpool.Proxy(obj)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"def thread_sleep(seconds: float) -\u003e None:"},{"line_number":103,"context_line":"    \"\"\"Sleep while yielding control appropriately for the current mode."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    Uses ``eventlet.sleep`` under eventlet so other greenthreads can run,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1d6ede60_cd9f9add","line":102,"updated":"2026-02-24 20:39:50.000000000","message":"This method is unnecessary, you can just use time.sleep() and eventlet monkey_patching will handle it when in eventlet mode.","commit_id":"50e1083f496bac168ebc6fb1e5e16d6d9573f8db"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"fd74d3add261026f6efd901884d81d3d38944021","unresolved":true,"context_lines":[{"line_number":85,"context_line":"    return val in (\u00271\u0027, \u0027true\u0027, \u0027yes\u0027)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"def tpool_wrap(obj: object) -\u003e object:"},{"line_number":89,"context_line":"    \"\"\"Wrap obj so blocking I/O does not stall the event loop."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    Under eventlet, wraps *obj* with ``tpool.Proxy`` so every method call"}],"source_content_type":"text/x-python","patch_set":10,"id":"b9a95e04_6e7f7d77","line":88,"range":{"start_line":88,"start_character":4,"end_line":88,"end_character":14},"updated":"2026-04-02 14:44:45.000000000","message":"Please split this into another patch so it can be used by I0b0e32282 for the RBD driver.","commit_id":"eec9131d47ffd3f8243cc7dcff3abf72d6b26c6b"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"94a2af0cb05df8742cd8556219ea3e96941d5976","unresolved":true,"context_lines":[{"line_number":1049,"context_line":"        # Eventlet does not work with multiprocessing\u0027s Semaphore, so we have"},{"line_number":1050,"context_line":"        # to execute it in a native thread to avoid getting blocked when trying"},{"line_number":1051,"context_line":"        # to acquire the semaphore."},{"line_number":1052,"context_line":"        return tpool.execute(self.semaphore.__enter__)"},{"line_number":1053,"context_line":""},{"line_number":1054,"context_line":"    def __exit__(self, *args):"},{"line_number":1055,"context_line":"        # Don\u0027t use native thread for exit, as it will only add overhead"}],"source_content_type":"text/x-python","patch_set":10,"id":"5d078bf2_48caee1b","line":1052,"updated":"2026-04-06 12:43:44.000000000","message":"unconditionally calls `tpool.execute(self.semaphore.__enter__)`, which relies on eventlet\u0027s tpool","commit_id":"eec9131d47ffd3f8243cc7dcff3abf72d6b26c6b"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"94a2af0cb05df8742cd8556219ea3e96941d5976","unresolved":true,"context_lines":[{"line_number":1050,"context_line":"        # to execute it in a native thread to avoid getting blocked when trying"},{"line_number":1051,"context_line":"        # to acquire the semaphore."},{"line_number":1052,"context_line":"        return tpool.execute(self.semaphore.__enter__)"},{"line_number":1053,"context_line":""},{"line_number":1054,"context_line":"    def __exit__(self, *args):"},{"line_number":1055,"context_line":"        # Don\u0027t use native thread for exit, as it will only add overhead"},{"line_number":1056,"context_line":"        return self.semaphore.__exit__(*args)"}],"source_content_type":"text/x-python","patch_set":10,"id":"af198a9a_cd97f261","line":1053,"updated":"2026-04-06 12:43:44.000000000","message":"__enter__ may need to condition on is_native_threading()","commit_id":"eec9131d47ffd3f8243cc7dcff3abf72d6b26c6b"}]}
