)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"273a9139a5b92951b812defe261b6b2acc9a4af3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"03b71c5a_9e5b59ed","updated":"2026-06-03 14:14:46.000000000","message":"Looking through git history this has been this way since the migration :(","commit_id":"1552cc06725a25efcf3b5c8a4af5a0bbcd32a8fa"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"fdb48675e8f4199a3cb13ab39e6a9cac6f438758","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"77722d98_9b5a89cd","updated":"2026-06-03 19:36:13.000000000","message":"functional failing again too","commit_id":"1552cc06725a25efcf3b5c8a4af5a0bbcd32a8fa"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"a2a8467fad1902c008231d3e120b2429a4c5504a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"eaaf6062_f838c5f7","updated":"2026-06-03 18:49:33.000000000","message":"recheck metadata failure","commit_id":"1552cc06725a25efcf3b5c8a4af5a0bbcd32a8fa"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"414005c51c9ded53fac31795e21df54dbfbd8587","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"8c9f986b_d31289f5","in_reply_to":"eaaf6062_f838c5f7","updated":"2026-06-03 19:07:40.000000000","message":"The functional tests got stuck\n```\n2026-06-03 14:11:54.648553 | controller | {0} neutron.tests.functional.tests.common.test_net_helpers.NetcatTesterTestCase.test_stop_process_no_process [2.576996s] ... ok\n2026-06-03 15:58:32.969676 | RUN END RESULT_TIMED_OUT: [untrusted : opendev.org/openstack/neutron/playbooks/run_functional_job.yaml@master]\n```\n\nThat may have happened because of a deadlock while waiting for the lock","commit_id":"1552cc06725a25efcf3b5c8a4af5a0bbcd32a8fa"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/maintenance.py":[{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"6f98e0cb8c20695b7f867aff6f45e5e950a1f3ca","unresolved":false,"context_lines":[{"line_number":229,"context_line":"        self._nb_idl \u003d self._ovn_client._nb_idl"},{"line_number":230,"context_line":"        self._sb_idl \u003d self._ovn_client._sb_idl"},{"line_number":231,"context_line":"        self._idl \u003d self._nb_idl.idl"},{"line_number":232,"context_line":"        self._idl.set_lock(MAINTENANCE_NB_IDL_LOCK_NAME)"},{"line_number":233,"context_line":"        super().__init__(ovn_client)"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"        self._resources_func_map \u003d {"}],"source_content_type":"text/x-python","patch_set":3,"id":"6a7d5ee2_85294eff","line":232,"updated":"2026-06-09 22:39:18.000000000","message":"This isn\u0027t part of this patch, but it\u0027s almost always better to call set_lock() prior to starting thing connection. I added a follow up patch here: https://review.opendev.org/c/openstack/neutron/+/992569","commit_id":"c695003d1012b911aa7c3f604d6d169d2567521c"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovsdb_monitor.py":[{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"1cc34026dfa95bdd0cba007eab68878edb962aae","unresolved":true,"context_lines":[{"line_number":963,"context_line":"    def notify(self, event, row, updates\u003dNone):"},{"line_number":964,"context_line":"        # Do not handle the notification if the event lock is requested,"},{"line_number":965,"context_line":"        # but not granted by the ovsdb-server."},{"line_number":966,"context_line":"        if self.is_lock_contended:"},{"line_number":967,"context_line":"            return"},{"line_number":968,"context_line":"        self.notify_handler.notify(event, row, updates)"},{"line_number":969,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"276e33dd_76bdb95e","side":"PARENT","line":966,"range":{"start_line":966,"start_character":0,"end_line":966,"end_character":34},"updated":"2026-06-03 19:43:17.000000000","message":"is_lock_contended handles the case where no one is requesting a lock as well. Replacing it in the base class means that anything that *doesn\u0027t* request a lock will fail. So you would need to check if anything that uses this class does not configure a lock. I don\u0027t think the OvnAgent which uses this sets a lock. And I think the only things that do set a lock are BGP and the maintenance worker. MaintenanceWorker uses BaseOvnIdl. So basically, BGP and MetadataAgent probably shouldn\u0027t both use this class.","commit_id":"ceb9b0f1cad403457f8ce80b5a03b33223b55b6e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"a51aba6225d0905071b2567324ad31ec448aed15","unresolved":false,"context_lines":[{"line_number":963,"context_line":"    def notify(self, event, row, updates\u003dNone):"},{"line_number":964,"context_line":"        # Do not handle the notification if the event lock is requested,"},{"line_number":965,"context_line":"        # but not granted by the ovsdb-server."},{"line_number":966,"context_line":"        if self.is_lock_contended:"},{"line_number":967,"context_line":"            return"},{"line_number":968,"context_line":"        self.notify_handler.notify(event, row, updates)"},{"line_number":969,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7b364ac9_59c65da2","side":"PARENT","line":966,"range":{"start_line":966,"start_character":0,"end_line":966,"end_character":34},"in_reply_to":"276e33dd_76bdb95e","updated":"2026-06-04 10:47:43.000000000","message":"Right, this is not affecting the `MaintenanceWorker` but any other (API, OVN agent, etc) according to `from_worker` method in `OvsdbSbOvnIdl` and `OvsdbNbOvnIdl`.\n\nI\u0027ll propose a new PS","commit_id":"ceb9b0f1cad403457f8ce80b5a03b33223b55b6e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"4be20de90a96d5d0f71b9f3f57014ba06945bd1a","unresolved":false,"context_lines":[{"line_number":963,"context_line":"    def notify(self, event, row, updates\u003dNone):"},{"line_number":964,"context_line":"        # Do not handle the notification if the event lock is requested,"},{"line_number":965,"context_line":"        # but not granted by the ovsdb-server."},{"line_number":966,"context_line":"        if self.is_lock_contended:"},{"line_number":967,"context_line":"            return"},{"line_number":968,"context_line":"        self.notify_handler.notify(event, row, updates)"},{"line_number":969,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"c2136d22_88d10e85","side":"PARENT","line":966,"range":{"start_line":966,"start_character":0,"end_line":966,"end_character":34},"in_reply_to":"7b364ac9_59c65da2","updated":"2026-06-04 11:15:00.000000000","message":"Actually, rechecking the code, these are the IDLs for each worker:\n* Maintenance: `BaseOvnIdl`\n* BGP: its own IDL implementation `neutron.services.bgp.ovn.OvnIdl`, inheriting from `ovsdbapp.backend.ovs_idl.connection.OvsdbIdl`. This is not affected by this change.\n* API: will use its own IDLs, inheriting from `OvnIdlDistributedLock`-\u003e`BaseOvnIdl`-\u003e`Ml2OvnIdlBase`.\n\nThe only services using this class are `MonitorAgentOvnSbIdl`/`MonitorAgentOvnNbIdl` (the OVN agent) and `MetadataAgentOvnSbIdl` (the OVN agent extension).\n\nIt makes sense, in any case, to revert the current code.","commit_id":"ceb9b0f1cad403457f8ce80b5a03b33223b55b6e"}]}
