)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"6c9fa0d679a7e65a2179a3343a3bebac6cd19043","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"1e181747_fc9939f3","updated":"2025-12-18 17:31:20.000000000","message":"thanks for adding this hacking rule, ++ but it seems it is mocked in multiple other places (checked pep8 failure in zuul running job )\n\n nova/tests/functional/libvirt/test_pci_sriov_servers.py:2555:1: N375: Mocking threading.Event.wait leads to unexpected behavior in our base libs like olso.service.LoopingCall and our test fixturesand causes leaked calls across test cases. Target your mocking to thespecific Event instance instead.\nnova/tests/functional/libvirt/test_pci_sriov_servers.py:2914:1: N375: Mocking threading.Event.wait leads to unexpected behavior in our base libs like olso.service.LoopingCall and our test fixturesand causes leaked calls across test cases. Target your mocking to thespecific Event instance instead.\nnova/tests/functional/libvirt/test_pci_sriov_servers.py:3125:1: N375: Mocking threading.Event.wait leads to unexpected behavior in our base libs like olso.service.LoopingCall and our test fixturesand causes leaked calls across test cases. Target your mocking to thespecific Event instance instead.\nnova/tests/functional/libvirt/test_pci_sriov_servers.py:3702:1: N375: Mocking threading.Event.wait leads to unexpected behavior in our base libs like olso.service.LoopingCall and our test fixturesand causes leaked calls across test cases. Target your mocking to thespecific Event instance instead.\nnova/tests/unit/test_hacking.py:1113:1: N375: Mocking threading.Event.wait leads to unexpected behavior in our base libs like olso.service.LoopingCall and our test fixturesand causes leaked calls across test cases. Target your mocking to thespecific Event instance instead.\nnova/tests/unit/test_hacking.py:1116:1: N375: Mocking threading.Event.wait leads to unexpected behavior in our base libs like olso.service.LoopingCall and our test fixturesand causes leaked calls across test cases. Target your mocking to thespecific Event instance instead.\nnova/tests/unit/test_hacking.py:1119:1: N375: Mocking threading.Event.wait leads to unexpected behavior in our base libs like olso.service.LoopingCall and our test fixturesand causes leaked calls across test cases. Target your mocking to thespecific Event instance instead.\nnova/tests/unit/test_hacking.py:1122:1: N375: Mocking threading.Event.wait leads to unexpected behavior in our base libs like olso.service.LoopingCall and our test fixturesand causes leaked calls across test cases. Target your mocking to thespecific Event instance instead.\nnova/tests/unit/test_hacking.py:1126:1: N375: Mocking threading.Event.wait leads to unexpected behavior in our base libs like olso.service.LoopingCall and our test fixturesand causes leaked calls across test cases. Target your mocking to thespecific Event instance instead.\nnova/tests/unit/test_hacking.py:1130:1: N375: Mocking threading.Event.wait leads to unexpected behavior in our base libs like olso.service.LoopingCall and our test fixturesand causes leaked calls across test cases. Target your mocking to thespecific Event instance instead.\nnova/tests/unit/virt/libvirt/test_driver.py:26087:1: N375: Mocking threading.Event.wait leads to unexpected behavior in our base libs like olso.service.LoopingCall and our test fixturesand causes leaked calls across test cases. Target your mocking to thespecific Event instance instead.\nnova/tests/unit/virt/libvirt/test_driver.py:26240:1: N375: Mocking threading.Event.wait leads to unexpected behavior in our base libs like olso.service.LoopingCall and our test fixturesand causes leaked calls across test cases. Target your mocking to thespecific Event instance instead.\nnova/tests/unit/virt/libvirt/test_driver.py:26672:1: N375: Mocking threading.Event.wait leads to unexpected behavior in our base libs like olso.service.LoopingCall and our test fixturesand causes leaked calls across test cases. Target your mocking to thespecific Event instance instead.\nnova/tests/unit/virt/libvirt/test_driver.py:26728:1: N375: Mocking threading.Event.wait leads to unexpected behavior in our base libs like olso.service.LoopingCall and our test fixturesand causes leaked calls across test cases. Target your mocking to thespecific Event instance instead.\nnova/tests/unit/virt/libvirt/test_driver.py:26807:1: N375: Mocking threading.Event.wait leads to unexpected behavior in our base libs like olso.service.LoopingCall and our test fixturesand causes leaked calls across test cases. Target your mocking to thespecific Event instance instead.","commit_id":"c085400e9bc55c8c67226b584a1e407703496e28"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f92adcab67ec7a8b4e062689f3881f0b79a56fff","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"6abe88e9_c15d6905","updated":"2025-12-19 10:24:33.000000000","message":"@smooney@redhat.com\n\nFeedback for teim-ci:\nCan we make it less noisy? It comments directly to the files inline but it adds a bunch of questionable reviews. If this would be a testing CI job I would say we should make it non-voting and easily ignorable until it is becomes stable. Maybe only allow the bot to comment inline on HIGH severity issues it found and keep the WARNINGs just an externally available list for those who are interested. \n\nFor me the best would be if the comments generated by LLM first filtered by a human to decide which one is a real actionable review comment and only posting those. But I guess that is not easily implementable.","commit_id":"6e7cf95b89e467c7937d8802cd49f96def109c65"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a727eb91ab39a3b466d2e10ad8aa763564e51ee0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"0a44397b_3ab7c7fd","updated":"2025-12-18 17:59:15.000000000","message":"sound resonable\n\ni assume this is fixing the root cause of the leaked thread form teh looping call.","commit_id":"6e7cf95b89e467c7937d8802cd49f96def109c65"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"655535d80db76319cbbf3b48c090a25cf24c6310","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"dbf734a6_65ca85b6","updated":"2025-12-18 17:47:35.000000000","message":"teim-ci: manual","commit_id":"6e7cf95b89e467c7937d8802cd49f96def109c65"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1c4ddeda83123d91253495a71bc6cc074d7d96d2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"c724262b_8eb51b4c","in_reply_to":"0a44397b_3ab7c7fd","updated":"2025-12-19 09:40:06.000000000","message":"the parent fixed the immediate problem, this is a follow up to i) prevent new occurrences ii) clean up existing potentially similar issues.","commit_id":"6e7cf95b89e467c7937d8802cd49f96def109c65"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4afc17a937ade85b48ed45d8e2d9166c8968f007","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"6781cd2c_22e0504d","updated":"2026-01-14 11:50:50.000000000","message":"recheck guest kernel panic in tempest-integrated-compute\n\n```\ninfo: initramfs: up at 7.31\n[    8.624470] virtio_blk virtio2: [vda] 2097152 512-byte logical blocks (1.07 GB/1.00 GiB)\n[    8.659403] GPT:Primary header thinks Alt. header is not at the end of the disk.\n[    8.659977] GPT:229375 !\u003d 2097151\n[    8.660228] GPT:Alternate GPT header not at the end of the disk.\n[    8.660579] GPT:229375 !\u003d 2097151\n[    8.660812] GPT: Use GNU Parted to correct GPT errors.\n[    9.244995] virtio_gpu virtio0: [drm] drm_plane_enable_fb_damage_clips() not called\n[    9.351159] random: crng init done\ncurrently loaded modules: 8021q 8139cp 8390 9pnet 9pnet_virtio ahci cec dca drm drm_kms_helper e1000 e1000e failover fb_sys_fops garp hid hid_generic i2c_algo_bit igb igbvf ip6_udp_tunnel ip_tables isofs libahci libcrc32c llc mii mrp ne2k_pci net_failover nls_ascii nls_iso8859_1 nls_utf8 pcnet32 qemu_fw_cfg rc_core sctp stp syscopyarea sysfillrect sysimgblt udp_tunnel usbhid virtio_blk virtio_dma_buf virtio_gpu virtio_input virtio_net virtio_rng virtio_scsi virtiofs x_tables \ninfo: initramfs loading root from /dev/vda1\n/sbin/init: can\u0027t load library \u0027libtirpc.so.3\u0027\n[   11.338858] Kernel panic - not syncing: Attempted to kill init! exitcode\u003d0x00001000\n[   11.339992] CPU: 0 PID: 1 Comm: init Not tainted 5.15.0-117-generic #127-Ubuntu\n[   11.340548] Hardware name: OpenStack Foundation OpenStack Nova, BIOS 1.16.3-debian-1.16.3-2 04/01/2014\n[   11.341397] Call Trace:\n[   11.342384]  \u003cTASK\u003e\n[   11.342780]  show_stack+0x52/0x5c\n[   11.343553]  dump_stack_lvl+0x4a/0x63\n[   11.343841]  dump_stack+0x10/0x16\n[   11.344086]  panic+0x15c/0x33b\n[   11.344366]  do_exit.cold+0x15/0xa0\n[   11.344644]  __x64_sys_exit+0x1b/0x20\n[   11.344944]  x64_sys_call+0x1f30/0x1fa0\n[   11.345244]  do_syscall_64+0x56/0xb0\n[   11.345548]  entry_SYSCALL_64_after_hwframe+0x6c/0xd6\n[   11.346065] RIP: 0033:0x7f2642ed855e\n[   11.346992] Code: 05 d7 2a 00 00 4c 89 f9 bf 02 00 00 00 48 8d 35 fb 0d 00 00 48 8b 10 31 c0 e8 50 d2 ff ff bf 10 00 00 00 b8 3c 00 00 00 0f 05 \u003c48\u003e 8d 15 f3 2a 00 00 f7 d8 89 02 48 83 ec 20 49 8b 8c 24 b8 00 00\n[   11.348246] RSP: 002b:00007fff9ac17490 EFLAGS: 00000207 ORIG_RAX: 000000000000003c\n[   11.348827] RAX: ffffffffffffffda RBX: 00007fff9ac18740 RCX: 00007f2642ed855e\n[   11.349300] RDX: 0000000000000002 RSI: 0000000000001000 RDI: 0000000000000010\n[   11.350566] RBP: 00007fff9ac18720 R08: 00007f2642ed1000 R09: 00007f2642ed101a\n[   11.351048] R10: 0000000000000001 R11: 0000000000000207 R12: 00007f2642ed2040\n[   11.351587] R13: 00000000004bae50 R14: 0000000000000000 R15: 0000000000403d66\n[   11.352110]  \u003c/TASK\u003e\n[   11.359590] Kernel Offset: 0x17600000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff)\n[   11.364840] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode\u003d0x00001000 ]---\n```","commit_id":"f6dd28637bc71807588221287c4e4b91e1cb5a17"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"30ce1094bdd7b3110f074ac9a8a29d5fb6e245b8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"50bc8dac_73632210","updated":"2026-01-26 14:27:40.000000000","message":"recheck volume build error\n```\ntempest.exceptions.VolumeResourceBuildErrorException: volume dd98d13d-971d-419d-98b8-af6ead11498e failed to build and is in ERROR status\n```","commit_id":"f6dd28637bc71807588221287c4e4b91e1cb5a17"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"413d141dfdf0f433d6499bf9f46e0c3ebeb83f93","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"ba4a954e_ec550a86","updated":"2026-01-27 14:01:55.000000000","message":"recheck ceph deployment failure\n```\nDeleting cluster with fsid: dd099007-854a-47fd-b1c9-d228051e6a75\nTraceback (most recent call last):\n  File \"\u003cfrozen runpy\u003e\", line 198, in _run_module_as_main\n  File \"\u003cfrozen runpy\u003e\", line 88, in _run_code\n  File \"/usr/bin/cephadm/__main__.py\", line 5288, in \u003cmodule\u003e\n  File \"/usr/bin/cephadm/__main__.py\", line 5276, in main\n  File \"/usr/bin/cephadm/__main__.py\", line 2524, in _rollback\n  File \"/usr/bin/cephadm/__main__.py\", line 434, in _default_image\n  File \"/usr/bin/cephadm/__main__.py\", line 2773, in command_bootstrap\n  File \"/usr/bin/cephadm/__main__.py\", line 2277, in enable_cephadm_mgr_module\n  File \"/usr/bin/cephadm/__main__.py\", line 2709, in cli\n  File \"/usr/bin/cephadm/cephadmlib/container_types.py\", line 435, in run\n  File \"/usr/bin/cephadm/cephadmlib/call_wrappers.py\", line 307, in call_throws\nRuntimeError: Failed command: /usr/bin/podman run --rm --ipc\u003dhost --stop-signal\u003dSIGTERM --net\u003dhost --entrypoint /usr/bin/ceph --init -e CONTAINER_IMAGE\u003dquay.io/ceph/ceph:v20 -e NODE_NAME\u003dnp4a8ff17f17374 -v /var/log/ceph/dd099007-854a-47fd-b1c9-d228051e6a75:/var/log/ceph:z -v /tmp/ceph-tmpj640_ae0:/etc/ceph/ceph.client.admin.keyring:z -v /tmp/ceph-tmp66a2ipc1:/etc/ceph/ceph.conf:z quay.io/ceph/ceph:v20 orch set backend cephadm: Error ENOTSUP: Warning: due to ceph-mgr restart, some PG states may not be up to date\nModule \u0027orchestrator\u0027 is not enabled/loaded (required by command \u0027orch set backend\u0027): use `ceph mgr module enable orchestrator` to enable it\n```","commit_id":"19203d684d2c9836c02608185fa30eafa494f069"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6d768e7f71b80d33dea0ef9f18f9a87a1846cd50","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"8ae10e7c_88d0433e","updated":"2026-01-26 19:46:35.000000000","message":"this looks","commit_id":"19203d684d2c9836c02608185fa30eafa494f069"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f5e58d87b7c9202faf443acd2de80a3ce7bb7a68","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"a8361369_31594faf","in_reply_to":"8ae10e7c_88d0433e","updated":"2026-01-26 19:46:53.000000000","message":"ok to me","commit_id":"19203d684d2c9836c02608185fa30eafa494f069"}],"nova/hacking/checks.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6d768e7f71b80d33dea0ef9f18f9a87a1846cd50","unresolved":false,"context_lines":[{"line_number":149,"context_line":"eventlet_primitives_re \u003d re.compile("},{"line_number":150,"context_line":"    r\".*(eventlet)\\.(semaphore|timeout|event).*\""},{"line_number":151,"context_line":"    r\"|from\\s+eventlet\\s+import\\s+(semaphore|timeout|event)\")"},{"line_number":152,"context_line":"threading_event_mock_re \u003d re.compile("},{"line_number":153,"context_line":"    r\"mock.patch\\(.threading.Event.wait|\""},{"line_number":154,"context_line":"    r\"mock.patch.object\\(threading, .Event.wait\""},{"line_number":155,"context_line":")"}],"source_content_type":"text/x-python","patch_set":2,"id":"e649fca8_112e7f96","line":152,"in_reply_to":"23cc415d_b5684deb","updated":"2026-01-26 19:46:35.000000000","message":"\u003e **Recommendation**:\n\u003e Consider expanding regex to handle additional mock patterns and quote variations\n\n```\n   r\"mock\\.patch\\(threading.Event\\.wait\"\n   r\"mock\\.patch\\.object\\(threading,\\s*Event\\.wait\"\n```\ni guess ^ is slightly more correct\n\nbut the current parten is fine  since we will lint for error like extra spaces","commit_id":"6e7cf95b89e467c7937d8802cd49f96def109c65"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ac80d0f364b443796b50713c71caf91bce1d0257","unresolved":false,"context_lines":[{"line_number":149,"context_line":"eventlet_primitives_re \u003d re.compile("},{"line_number":150,"context_line":"    r\".*(eventlet)\\.(semaphore|timeout|event).*\""},{"line_number":151,"context_line":"    r\"|from\\s+eventlet\\s+import\\s+(semaphore|timeout|event)\")"},{"line_number":152,"context_line":"threading_event_mock_re \u003d re.compile("},{"line_number":153,"context_line":"    r\"mock.patch\\(.threading.Event.wait|\""},{"line_number":154,"context_line":"    r\"mock.patch.object\\(threading, .Event.wait\""},{"line_number":155,"context_line":")"}],"source_content_type":"text/x-python","patch_set":2,"id":"af7a4e1a_6cdd74eb","line":152,"in_reply_to":"23cc415d_b5684deb","updated":"2025-12-19 09:29:16.000000000","message":"This is noise. What additional patterns? What variations?","commit_id":"6e7cf95b89e467c7937d8802cd49f96def109c65"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a727eb91ab39a3b466d2e10ad8aa763564e51ee0","unresolved":false,"context_lines":[{"line_number":152,"context_line":"threading_event_mock_re \u003d re.compile("},{"line_number":153,"context_line":"    r\"mock.patch\\(.threading.Event.wait|\""},{"line_number":154,"context_line":"    r\"mock.patch.object\\(threading, .Event.wait\""},{"line_number":155,"context_line":")"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"class BaseASTChecker(ast.NodeVisitor):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9440fbb4_ee6d9780","line":155,"updated":"2025-12-18 17:59:15.000000000","message":"oh right the object and non object form.\nya this makes sense.","commit_id":"6e7cf95b89e467c7937d8802cd49f96def109c65"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"abf436d65e3fc303bb7f062a07decfc9587bc17f","unresolved":false,"context_lines":[{"line_number":1157,"context_line":"    \"\"\""},{"line_number":1158,"context_line":"    msg \u003d ("},{"line_number":1159,"context_line":"        \"N375: Mocking threading.Event.wait leads to unexpected behavior \""},{"line_number":1160,"context_line":"        \"in our base libs like olso.service.LoopingCall and our test fixtures\""},{"line_number":1161,"context_line":"        \"and causes leaked calls across test cases. Target your mocking to the\""},{"line_number":1162,"context_line":"        \"specific Event instance instead.\")"},{"line_number":1163,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"b106cab8_c3c74af4","line":1160,"in_reply_to":"7661a98c_61b52a6e","updated":"2025-12-19 13:53:40.000000000","message":"Done","commit_id":"6e7cf95b89e467c7937d8802cd49f96def109c65"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ac80d0f364b443796b50713c71caf91bce1d0257","unresolved":true,"context_lines":[{"line_number":1157,"context_line":"    \"\"\""},{"line_number":1158,"context_line":"    msg \u003d ("},{"line_number":1159,"context_line":"        \"N375: Mocking threading.Event.wait leads to unexpected behavior \""},{"line_number":1160,"context_line":"        \"in our base libs like olso.service.LoopingCall and our test fixtures\""},{"line_number":1161,"context_line":"        \"and causes leaked calls across test cases. Target your mocking to the\""},{"line_number":1162,"context_line":"        \"specific Event instance instead.\")"},{"line_number":1163,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7661a98c_61b52a6e","line":1160,"in_reply_to":"f331396c_7805a587","updated":"2025-12-19 09:29:16.000000000","message":"yepp. I will fix","commit_id":"6e7cf95b89e467c7937d8802cd49f96def109c65"}],"nova/tests/functional/libvirt/test_pci_sriov_servers.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a727eb91ab39a3b466d2e10ad8aa763564e51ee0","unresolved":true,"context_lines":[{"line_number":3674,"context_line":"        # now live migrate that server"},{"line_number":3675,"context_line":"        # XXX this is never completes without the mocked Event.wait. That is"},{"line_number":3676,"context_line":"        # probably a test case bug / missing step."},{"line_number":3677,"context_line":"        self._live_migrate(server, \"completed\")"},{"line_number":3678,"context_line":""},{"line_number":3679,"context_line":"        # we should now have transitioned our usage to the destination, freeing"},{"line_number":3680,"context_line":"        # up the source in the process"}],"source_content_type":"text/x-python","patch_set":2,"id":"72e4a6d3_d38133eb","line":3677,"updated":"2025-12-18 17:59:15.000000000","message":"ok so we neeed to fix this before this can merge but we are expecting the other test failure to be resovled right.\n\nthis si live migatiging with an sriov device so we likely need to mock \n\nnova.virt.libvirt.driver.AsyncDeviceEventsHandler.Waiter.wait\u0027 or similar as it probly emultating the hotplug?\n\ni have not looked in detail but tha tmight be worth a try","commit_id":"6e7cf95b89e467c7937d8802cd49f96def109c65"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6d768e7f71b80d33dea0ef9f18f9a87a1846cd50","unresolved":false,"context_lines":[{"line_number":3674,"context_line":"        # now live migrate that server"},{"line_number":3675,"context_line":"        # XXX this is never completes without the mocked Event.wait. That is"},{"line_number":3676,"context_line":"        # probably a test case bug / missing step."},{"line_number":3677,"context_line":"        self._live_migrate(server, \"completed\")"},{"line_number":3678,"context_line":""},{"line_number":3679,"context_line":"        # we should now have transitioned our usage to the destination, freeing"},{"line_number":3680,"context_line":"        # up the source in the process"}],"source_content_type":"text/x-python","patch_set":2,"id":"6c582d70_ed399c48","line":3677,"in_reply_to":"03d0604d_e763f114","updated":"2026-01-26 19:46:35.000000000","message":"ah you added \nself.flags(device_detach_timeout\u003d\"1\", group\u003d\"libvirt\")","commit_id":"6e7cf95b89e467c7937d8802cd49f96def109c65"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ac80d0f364b443796b50713c71caf91bce1d0257","unresolved":true,"context_lines":[{"line_number":3674,"context_line":"        # now live migrate that server"},{"line_number":3675,"context_line":"        # XXX this is never completes without the mocked Event.wait. That is"},{"line_number":3676,"context_line":"        # probably a test case bug / missing step."},{"line_number":3677,"context_line":"        self._live_migrate(server, \"completed\")"},{"line_number":3678,"context_line":""},{"line_number":3679,"context_line":"        # we should now have transitioned our usage to the destination, freeing"},{"line_number":3680,"context_line":"        # up the source in the process"}],"source_content_type":"text/x-python","patch_set":2,"id":"f0345047_801162a1","line":3677,"in_reply_to":"72e4a6d3_d38133eb","updated":"2025-12-19 09:29:16.000000000","message":"yepp. I stopped here yesterday and pushed it to avoid the situation that I loose all context during my PTO. I will fix this test","commit_id":"6e7cf95b89e467c7937d8802cd49f96def109c65"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"abf436d65e3fc303bb7f062a07decfc9587bc17f","unresolved":false,"context_lines":[{"line_number":3674,"context_line":"        # now live migrate that server"},{"line_number":3675,"context_line":"        # XXX this is never completes without the mocked Event.wait. That is"},{"line_number":3676,"context_line":"        # probably a test case bug / missing step."},{"line_number":3677,"context_line":"        self._live_migrate(server, \"completed\")"},{"line_number":3678,"context_line":""},{"line_number":3679,"context_line":"        # we should now have transitioned our usage to the destination, freeing"},{"line_number":3680,"context_line":"        # up the source in the process"}],"source_content_type":"text/x-python","patch_set":2,"id":"03d0604d_e763f114","line":3677,"in_reply_to":"f0345047_801162a1","updated":"2025-12-19 13:53:40.000000000","message":"Done","commit_id":"6e7cf95b89e467c7937d8802cd49f96def109c65"}],"nova/tests/unit/test_hacking.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6d768e7f71b80d33dea0ef9f18f9a87a1846cd50","unresolved":false,"context_lines":[{"line_number":1105,"context_line":"                    time.sleep(1)"},{"line_number":1106,"context_line":"               \"\"\""},{"line_number":1107,"context_line":"        self._assert_has_no_errors(code, checks.check_eventlet_yield)"},{"line_number":1108,"context_line":""},{"line_number":1109,"context_line":"    def test_check_threading_event_mock(self):"},{"line_number":1110,"context_line":"        code \u003d \"\"\""},{"line_number":1111,"context_line":"                import threading"}],"source_content_type":"text/x-python","patch_set":2,"id":"c8862ac4_aaa7881e","line":1108,"in_reply_to":"422e9e49_1d5d399f","updated":"2026-01-26 19:46:35.000000000","message":"i think its gettign confused by the use of multi line string to embed the python test source\n\nwe can ignore this safely.","commit_id":"6e7cf95b89e467c7937d8802cd49f96def109c65"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ac80d0f364b443796b50713c71caf91bce1d0257","unresolved":false,"context_lines":[{"line_number":1105,"context_line":"                    time.sleep(1)"},{"line_number":1106,"context_line":"               \"\"\""},{"line_number":1107,"context_line":"        self._assert_has_no_errors(code, checks.check_eventlet_yield)"},{"line_number":1108,"context_line":""},{"line_number":1109,"context_line":"    def test_check_threading_event_mock(self):"},{"line_number":1110,"context_line":"        code \u003d \"\"\""},{"line_number":1111,"context_line":"                import threading"}],"source_content_type":"text/x-python","patch_set":2,"id":"422e9e49_1d5d399f","line":1108,"in_reply_to":"f16b6cde_a9994aa6","updated":"2025-12-19 09:29:16.000000000","message":"What nested quote can happen in these examples that are effecting the check?\n\nI only track mock.patch and mock.patch.object here, I don\u0027t know about other direct variations of this method. I cannot catch aliasing in static code check so `f\u003dmock.patch ; with f` is obviously missed but that is a limitation of the static code analysis. \n\nThe import can be dropped from the example here as the check does not match for it. I only included it to ease the reading of the last example where the imported name is used in mock.patch.object, not a string. As above aliasing is not really trackable in static analysis so I did not try to go after `import threading as my_threading; mock.patch.object(my_threading...`","commit_id":"6e7cf95b89e467c7937d8802cd49f96def109c65"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6d768e7f71b80d33dea0ef9f18f9a87a1846cd50","unresolved":false,"context_lines":[{"line_number":1146,"context_line":"                   pass"},{"line_number":1147,"context_line":"               \"\"\""},{"line_number":1148,"context_line":"        errors \u003d [(x + 1, 0, \u0027N375\u0027)"},{"line_number":1149,"context_line":"                  for x in [2, 5, 8, 11, 14, 17, 21, 25, 29, 33]]"},{"line_number":1150,"context_line":"        self._assert_has_errors("},{"line_number":1151,"context_line":"            code, checks.check_threading_event_mock, expected_errors\u003derrors)"},{"line_number":1152,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"b041b52e_68ae801b","line":1149,"range":{"start_line":1149,"start_character":28,"end_line":1149,"end_character":63},"updated":"2026-01-26 19:46:35.000000000","message":"i guess these are line  numbers ofsett into the multi line string.","commit_id":"19203d684d2c9836c02608185fa30eafa494f069"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ac80d0f364b443796b50713c71caf91bce1d0257","unresolved":false,"context_lines":[{"line_number":291,"context_line":"                self.device_name \u003d\u003d event.dev and"},{"line_number":292,"context_line":"                isinstance(event, tuple(self.event_types)))"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"        def wait(self, timeout: float) -\u003e bool:"},{"line_number":295,"context_line":"            return self.threading_event.wait(timeout)"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"        def __repr__(self) -\u003e str:"}],"source_content_type":"text/x-python","patch_set":2,"id":"f86a703f_d27a35a6","line":294,"in_reply_to":"964692e4_6fd905cf","updated":"2025-12-19 09:29:16.000000000","message":"This is not just noise but actively detrimental if followed blindly. This method is clearly a pass-through to an existing (library) method. That method can do the validation as needed. Duplicating that logic here is unnecessary complexity.","commit_id":"6e7cf95b89e467c7937d8802cd49f96def109c65"}]}
