)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"0389334118e04353543a34d5c227432d24215434","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"If a service runs in threading mode nova.utils.cooperative_yield is noop"},{"line_number":10,"context_line":"as yielding is only necessary for eventlet."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I72a52262f5c501f77d23ed56cbcd1a9c2be72fa7"},{"line_number":13,"context_line":"Signed-off-by: Balazs Gibizer \u003cgibi@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"1c720081_c69c0352","line":11,"updated":"2025-07-29 09:07:02.000000000","message":"the tests will check whether it\u0027s used, but could you please explain that in the commit msg ?","commit_id":"9a48f06cd7a82551139dc5108388636633353e61"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"37b1d3cc3028a95e855c0d84acf9b4ba8a3c204a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"9e61690e_7d740110","updated":"2025-05-27 16:54:41.000000000","message":"test failure is relevant. Most probably need to adjust some mocks...","commit_id":"2af9af4849a353de0b18510294dbdfcf7d144693"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"62df837ff81a65275b496f51f002200cc3ebdce4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"5dfd131d_93dc5c3d","in_reply_to":"2096add6_b06fa9f8","updated":"2025-06-03 13:06:17.000000000","message":"Done","commit_id":"2af9af4849a353de0b18510294dbdfcf7d144693"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e225e9eb670c28fcc0d5821c33d46a2069ead404","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"2096add6_b06fa9f8","in_reply_to":"9e61690e_7d740110","updated":"2025-05-30 11:01:57.000000000","message":"It is strange. This change does not change the code being executed in those tests cases that started to fail. At least not locally. But the failing testcases are heavily relying on the yield there. So it must be somehow related to the change. :/","commit_id":"2af9af4849a353de0b18510294dbdfcf7d144693"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f43c49517fbe11efe4fa8d236e23aae590e5df85","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"7fa5f717_f39c0b93","updated":"2025-06-06 14:04:38.000000000","message":"i think sleep(0) would not be supper harmful but not yeildign to the kernel schduler when we dont have to shoudl help with performance.","commit_id":"db763ab2fb37aca2feb1d1280a82164d53536e66"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"37f96a2a1c58257f9cfb93858f04dc393d06b714","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"4bdb03bf_a253265f","updated":"2025-06-05 12:26:29.000000000","message":"recheck grenade timeout","commit_id":"db763ab2fb37aca2feb1d1280a82164d53536e66"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5a2c0d8b95ea160983ad817c94b7de81d73d34d7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"17766e1c_c091c37a","updated":"2025-07-28 12:38:37.000000000","message":"recheck bug 2116336","commit_id":"9a48f06cd7a82551139dc5108388636633353e61"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a81e36c32798df0bde0b8355c6b5c3365e866ea4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"942cb56e_90196609","updated":"2025-07-25 18:12:56.000000000","message":"recheck ceph download error","commit_id":"9a48f06cd7a82551139dc5108388636633353e61"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f2587b560da10e98b1e7895e8137669e7445f22b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"5b516998_35e30698","updated":"2025-09-01 10:13:29.000000000","message":"by the way this is where i would like to stop this series for this cycle.\n\nwe could go futher but this is a nice natual stoppign point","commit_id":"ea50365cce1c5c29a8336afcc6366022b7c6d520"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"cfacaba033412045d8d3083939164748f0572fa2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"a3f51bfa_a6877b61","updated":"2025-09-03 11:50:17.000000000","message":"recheck parent landed and it was approved before FF","commit_id":"ea50365cce1c5c29a8336afcc6366022b7c6d520"}],"nova/utils.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4e12104ce086b11b3aae750166ef940794b74701","unresolved":true,"context_lines":[{"line_number":86,"context_line":"def cooperative_yield():"},{"line_number":87,"context_line":"    # TODO(ksambor) Remove all cooperative_yield calls after dropping Eventlet"},{"line_number":88,"context_line":"    #  support."},{"line_number":89,"context_line":"    if not concurrency_mode_threading():"},{"line_number":90,"context_line":"        time.sleep(0)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"501582a8_154396b8","line":89,"updated":"2025-05-30 11:43:12.000000000","message":"The DNM patch on top of this shows that when the unit test fails then concurrency_mode_threading is true. That can only happen if \n* a) the given test executor process never executed monkey patch. OR\n* b) some previous testcase left the status of eventlet monkey patching inconsistent or left a mock somewhere in this code path leading to a different result here.","commit_id":"2af9af4849a353de0b18510294dbdfcf7d144693"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"50bd4930c338b918f2cd0f8771196ef844cdd42e","unresolved":true,"context_lines":[{"line_number":86,"context_line":"def cooperative_yield():"},{"line_number":87,"context_line":"    # TODO(ksambor) Remove all cooperative_yield calls after dropping Eventlet"},{"line_number":88,"context_line":"    #  support."},{"line_number":89,"context_line":"    if not concurrency_mode_threading():"},{"line_number":90,"context_line":"        time.sleep(0)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"a4b6a861_5bc30780","line":89,"in_reply_to":"501582a8_154396b8","updated":"2025-05-30 13:01:34.000000000","message":"bisecting the test list I ended up with this two test cases interfering:\n\nnova.tests.unit.test_utils.OsloServiceBackendSelectionTestCase.test_threading_selected_monkey_patching_poisoned\nnova.tests.unit.virt.libvirt.test_driver.CacheConcurrencyTestCase.test_different_fname_concurrency","commit_id":"2af9af4849a353de0b18510294dbdfcf7d144693"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"30abd5ada455eb1d3e52768a2b9d5cbd07f30686","unresolved":false,"context_lines":[{"line_number":86,"context_line":"def cooperative_yield():"},{"line_number":87,"context_line":"    # TODO(ksambor) Remove all cooperative_yield calls after dropping Eventlet"},{"line_number":88,"context_line":"    #  support."},{"line_number":89,"context_line":"    if not concurrency_mode_threading():"},{"line_number":90,"context_line":"        time.sleep(0)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"8d3237ff_e1e2dd0b","line":89,"in_reply_to":"a4b6a861_5bc30780","updated":"2025-06-03 13:00:27.000000000","message":"fixed in https://review.opendev.org/c/openstack/nova/+/948311/26?usp\u003drelated-change","commit_id":"2af9af4849a353de0b18510294dbdfcf7d144693"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"48540f905c9a8e53c802d902f49295f2abaab050","unresolved":true,"context_lines":[{"line_number":87,"context_line":"    # TODO(ksambor) Remove all cooperative_yield calls after dropping Eventlet"},{"line_number":88,"context_line":"    #  support."},{"line_number":89,"context_line":"    if not concurrency_mode_threading():"},{"line_number":90,"context_line":"        time.sleep(0)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"def destroy_default_executor():"}],"source_content_type":"text/x-python","patch_set":2,"id":"47ca4bb5_02041cc5","line":90,"range":{"start_line":90,"start_character":8,"end_line":90,"end_character":21},"updated":"2025-06-11 13:36:15.000000000","message":"In this case I think it should be eventlet.sleep(0)\nBecause we need to instruct eventlet.\nSo maybe this part should have not replaced eventlet by time.","commit_id":"db763ab2fb37aca2feb1d1280a82164d53536e66"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"87b77946339a139b9897127c8b3651077823d747","unresolved":false,"context_lines":[{"line_number":87,"context_line":"    # TODO(ksambor) Remove all cooperative_yield calls after dropping Eventlet"},{"line_number":88,"context_line":"    #  support."},{"line_number":89,"context_line":"    if not concurrency_mode_threading():"},{"line_number":90,"context_line":"        time.sleep(0)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"def destroy_default_executor():"}],"source_content_type":"text/x-python","patch_set":2,"id":"8492717d_3cbd5e2f","line":90,"range":{"start_line":90,"start_character":8,"end_line":90,"end_character":21},"in_reply_to":"47ca4bb5_02041cc5","updated":"2025-06-11 13:49:11.000000000","message":"Forget about above comment.\nI have just realized that eventlet monkey_patch() is patching time.\nSo in this case, time.sleep(0) is equivalent to eventlet.sleep(0).","commit_id":"db763ab2fb37aca2feb1d1280a82164d53536e66"}]}
