)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"b8d5b85354486d480b06171cfecd494f9b51a4bf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"16a01343_aad93f0a","updated":"2025-01-13 17:14:32.000000000","message":"Failures seem related.","commit_id":"79554e7ef1bda254ec88f306a76202a592049766"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"9bc19d103e73457c176b1cd20d15e931550e16c3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"9f92301f_d96e1a10","updated":"2025-01-17 07:53:26.000000000","message":"Any chance that you mock sleep? this will avoid that extra 1s for each ci run","commit_id":"a5aae5dec72a93c614ca0a54c4688408f0509553"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"39ed58c959800f87e0ed7f7363601071c9630f59","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"e12dbe9a_feafc32b","updated":"2025-01-20 07:54:54.000000000","message":"You could have specified in commit message why you want to keep the extra 1s delay to avoid in future someone cleaning it.","commit_id":"a5aae5dec72a93c614ca0a54c4688408f0509553"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"8ccf5f885f8109537dbbb33136d6a185c1ceba7b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"15a9ad9e_1ec06f12","updated":"2025-01-17 16:41:45.000000000","message":"recheck\nThe functional failure seems not related with ovsdb timeouts mostly, but let\u0027s see if the same will fail","commit_id":"a5aae5dec72a93c614ca0a54c4688408f0509553"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"91304ca19bb3aede50e6040a72ab750c3b1fcc80","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"b2624cce_6be777a6","updated":"2025-01-17 11:18:12.000000000","message":"recheck neutron-functional","commit_id":"a5aae5dec72a93c614ca0a54c4688408f0509553"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8bb328366d5928a32fe62dc21a2f6e2a004a0429","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"40ed0280_6fdbefce","updated":"2025-01-23 14:08:52.000000000","message":"recheck neutron-ovs-rally-task","commit_id":"a5aae5dec72a93c614ca0a54c4688408f0509553"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"de66133a3d7f69bfa7f9d87df8d56317546d856e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"2622bb84_f5fb54ba","updated":"2025-01-21 08:59:01.000000000","message":"recheck neutron-ovs-tempest-multinode-full","commit_id":"a5aae5dec72a93c614ca0a54c4688408f0509553"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"01bc9b39a3cadb066b779d1278fd3efcbc5a447b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"36e9a81c_dd2fc38a","updated":"2025-01-23 15:34:30.000000000","message":"lgtm, will just wait to +2 until after we see if the multinode-full failure is related","commit_id":"725d222ddd0c195d2c3655bf73dc79d723ee9460"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"6189be65dd1052b5f1a5e2876a79f9edf7fbbdf6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"5c8191e8_baf45833","updated":"2025-01-24 08:29:20.000000000","message":"recheck neutron-tempest-plugin-openvswitch","commit_id":"725d222ddd0c195d2c3655bf73dc79d723ee9460"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"7e7bc97b8810388fc827bd1f2b6628012d9fd653","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"9662289c_c6ab6c6a","updated":"2025-01-24 11:18:08.000000000","message":"recheck neutron-tempest-plugin-ovn","commit_id":"725d222ddd0c195d2c3655bf73dc79d723ee9460"}],"neutron/common/utils.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"81b372d5be0a42a3fbc713c386345e98b572c43f","unresolved":true,"context_lines":[{"line_number":933,"context_line":"        return func(*args, **kwargs)"},{"line_number":934,"context_line":""},{"line_number":935,"context_line":"    # NOTE(ralonsoh): the thread started and returned here is not tracked;"},{"line_number":936,"context_line":"    # the consumer should join() the thread in order to check that it finishes."},{"line_number":937,"context_line":"    _thread \u003d threading.Thread(target\u003dwrapper, args\u003dargs, kwargs\u003dkwargs)"},{"line_number":938,"context_line":"    _thread.start()"},{"line_number":939,"context_line":"    return _thread"}],"source_content_type":"text/x-python","patch_set":1,"id":"10169897_690d4cfd","line":936,"updated":"2025-01-13 16:16:21.000000000","message":"So the batch notifier code is a caller of this but didn\u0027t change in this patch? I don\u0027t see any other callers","commit_id":"79554e7ef1bda254ec88f306a76202a592049766"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9507530445561f9e1430dbb7a18b430d262b30d2","unresolved":false,"context_lines":[{"line_number":933,"context_line":"        return func(*args, **kwargs)"},{"line_number":934,"context_line":""},{"line_number":935,"context_line":"    # NOTE(ralonsoh): the thread started and returned here is not tracked;"},{"line_number":936,"context_line":"    # the consumer should join() the thread in order to check that it finishes."},{"line_number":937,"context_line":"    _thread \u003d threading.Thread(target\u003dwrapper, args\u003dargs, kwargs\u003dkwargs)"},{"line_number":938,"context_line":"    _thread.start()"},{"line_number":939,"context_line":"    return _thread"}],"source_content_type":"text/x-python","patch_set":1,"id":"9c20b80e_92be010b","line":936,"in_reply_to":"10169897_690d4cfd","updated":"2025-01-13 16:48:45.000000000","message":"Right but the change of the ``BatchNotifier``, handling the threads results, should be another patch. The ``BatchNotifier`` threads are very quick, just to retrieve the pending events and notify them. It was never expected to deal with these threads.","commit_id":"79554e7ef1bda254ec88f306a76202a592049766"}],"neutron/tests/unit/extensions/test_segment.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"9bc19d103e73457c176b1cd20d15e931550e16c3","unresolved":true,"context_lines":[{"line_number":2691,"context_line":"        self.mock_n_client.aggregates.get_details.return_value \u003d aggregate"},{"line_number":2692,"context_line":"        network, segment \u003d self._test_create_network_and_segment(\u0027physnet\u0027)"},{"line_number":2693,"context_line":"        self._delete(\u0027networks\u0027, network[\u0027id\u0027])"},{"line_number":2694,"context_line":"        time.sleep(self.send_events_interval)"},{"line_number":2695,"context_line":"        self.mock_n_client.aggregates.remove_host.assert_has_calls("},{"line_number":2696,"context_line":"            [mock.call(aggregate.id, \u0027fakehost1\u0027)])"},{"line_number":2697,"context_line":"        self.mock_n_client.aggregates.delete.assert_has_calls("}],"source_content_type":"text/x-python","patch_set":3,"id":"ea9757ff_997a4b3f","line":2694,"updated":"2025-01-17 07:53:26.000000000","message":"It would have been probably better to mock sleep rather than passing it to 1s, no?","commit_id":"a5aae5dec72a93c614ca0a54c4688408f0509553"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"1c5ab41020d93bcd5dd0ba732ab590d89f101354","unresolved":false,"context_lines":[{"line_number":2691,"context_line":"        self.mock_n_client.aggregates.get_details.return_value \u003d aggregate"},{"line_number":2692,"context_line":"        network, segment \u003d self._test_create_network_and_segment(\u0027physnet\u0027)"},{"line_number":2693,"context_line":"        self._delete(\u0027networks\u0027, network[\u0027id\u0027])"},{"line_number":2694,"context_line":"        time.sleep(self.send_events_interval)"},{"line_number":2695,"context_line":"        self.mock_n_client.aggregates.remove_host.assert_has_calls("},{"line_number":2696,"context_line":"            [mock.call(aggregate.id, \u0027fakehost1\u0027)])"},{"line_number":2697,"context_line":"        self.mock_n_client.aggregates.delete.assert_has_calls("}],"source_content_type":"text/x-python","patch_set":3,"id":"7533a666_e91cc531","line":2694,"in_reply_to":"3b2c1f18_b36bf07d","updated":"2025-01-18 21:26:53.000000000","message":"Because we are deprecating eventlet and sleep() is a critical method with this library. This method yields the GIL to other thread, thus is important not to mock this library in the test, if possible. So no, it is not the same mocking this method, actually the less you mock, the better coverage you\u0027ll have.","commit_id":"a5aae5dec72a93c614ca0a54c4688408f0509553"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"39ed58c959800f87e0ed7f7363601071c9630f59","unresolved":false,"context_lines":[{"line_number":2691,"context_line":"        self.mock_n_client.aggregates.get_details.return_value \u003d aggregate"},{"line_number":2692,"context_line":"        network, segment \u003d self._test_create_network_and_segment(\u0027physnet\u0027)"},{"line_number":2693,"context_line":"        self._delete(\u0027networks\u0027, network[\u0027id\u0027])"},{"line_number":2694,"context_line":"        time.sleep(self.send_events_interval)"},{"line_number":2695,"context_line":"        self.mock_n_client.aggregates.remove_host.assert_has_calls("},{"line_number":2696,"context_line":"            [mock.call(aggregate.id, \u0027fakehost1\u0027)])"},{"line_number":2697,"context_line":"        self.mock_n_client.aggregates.delete.assert_has_calls("}],"source_content_type":"text/x-python","patch_set":3,"id":"eccf46c9_fbd4415a","line":2694,"in_reply_to":"7533a666_e91cc531","updated":"2025-01-20 07:54:54.000000000","message":"Thank you Rodolfo for you time and explanation even if I\u0027m not really agree with you on some points, but anyway we can always have differents point of view :-)\nIf you feel confident to keep this extra 1s delay let\u0027s moving forward.","commit_id":"a5aae5dec72a93c614ca0a54c4688408f0509553"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"6b8b99b0d33beb367d83de5dff7808f4c930b742","unresolved":true,"context_lines":[{"line_number":2691,"context_line":"        self.mock_n_client.aggregates.get_details.return_value \u003d aggregate"},{"line_number":2692,"context_line":"        network, segment \u003d self._test_create_network_and_segment(\u0027physnet\u0027)"},{"line_number":2693,"context_line":"        self._delete(\u0027networks\u0027, network[\u0027id\u0027])"},{"line_number":2694,"context_line":"        time.sleep(self.send_events_interval)"},{"line_number":2695,"context_line":"        self.mock_n_client.aggregates.remove_host.assert_has_calls("},{"line_number":2696,"context_line":"            [mock.call(aggregate.id, \u0027fakehost1\u0027)])"},{"line_number":2697,"context_line":"        self.mock_n_client.aggregates.delete.assert_has_calls("}],"source_content_type":"text/x-python","patch_set":3,"id":"3b2c1f18_b36bf07d","line":2694,"in_reply_to":"9faabc82_05afe43a","updated":"2025-01-17 16:59:56.000000000","message":"May I ask you why? You can certainly ensure that time is executed by mocking and asserting, no?","commit_id":"a5aae5dec72a93c614ca0a54c4688408f0509553"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"a257f5d7dbc77cc6af2fce7b2bde6337e928ba76","unresolved":false,"context_lines":[{"line_number":2691,"context_line":"        self.mock_n_client.aggregates.get_details.return_value \u003d aggregate"},{"line_number":2692,"context_line":"        network, segment \u003d self._test_create_network_and_segment(\u0027physnet\u0027)"},{"line_number":2693,"context_line":"        self._delete(\u0027networks\u0027, network[\u0027id\u0027])"},{"line_number":2694,"context_line":"        time.sleep(self.send_events_interval)"},{"line_number":2695,"context_line":"        self.mock_n_client.aggregates.remove_host.assert_has_calls("},{"line_number":2696,"context_line":"            [mock.call(aggregate.id, \u0027fakehost1\u0027)])"},{"line_number":2697,"context_line":"        self.mock_n_client.aggregates.delete.assert_has_calls("}],"source_content_type":"text/x-python","patch_set":3,"id":"9faabc82_05afe43a","line":2694,"in_reply_to":"ea9757ff_997a4b3f","updated":"2025-01-17 08:11:07.000000000","message":"No, in this case I explicitly want the sleep to be executed. I\u0027ve passed the minimum time, that is 1 second. But because I\u0027m changing only this method in the code, I want it to be executed.","commit_id":"a5aae5dec72a93c614ca0a54c4688408f0509553"}]}
