)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"19bdeb0a45305d5d660707f3dd670413f6f236f4","unresolved":true,"context_lines":[{"line_number":9,"context_line":"When there are a large number of ACLs that need to be synchronized from"},{"line_number":10,"context_line":"Neutron to the OVN database, if a transaction is committed, it will"},{"line_number":11,"context_line":"assume that there is no time to process the echo message of ovn nb,"},{"line_number":12,"context_line":"causing ovn nb to proactively disconnect,. This patch involves"},{"line_number":13,"context_line":"submitting multiple transactions in batches to avoid issue."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Closes-Bug: #2023130"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"ea567fc1_7769de52","line":12,"range":{"start_line":12,"start_character":40,"end_line":12,"end_character":42},"updated":"2024-06-24 18:06:33.000000000","message":"Nit: in case you spin another patch","commit_id":"d0b3120f75e78b6716141fba30a8db800cd94e72"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":30380,"name":"ZhouHeng","email":"zhouhenglc@inspur.com","username":"zhouhenglc"},"change_message_id":"9595d93812c466841f75b61d86795acff2460459","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"cff7620a_f958780d","updated":"2023-06-07 11:01:19.000000000","message":"Some issues need to be verified","commit_id":"b4c9326866d920653bc6e98a71f16b1400fb668c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b40fff29949c5b772511a1d3054b025fe4c214c2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"a9dd4c6a_23ce7a6b","updated":"2023-06-26 15:21:27.000000000","message":"Please, add functional tests to check this implementation is working. Something like creating multiple ports. In order to make this test not too time consuming, you should enforce the step number to a lower number (something like 5); so you can create 30 ports (6 batches) and check these ports are already present in the OVN NB database.","commit_id":"695f6e0b4ad7a1a27cdccc1601e3aa51843abcc9"},{"author":{"_account_id":30380,"name":"ZhouHeng","email":"zhouhenglc@inspur.com","username":"zhouhenglc"},"change_message_id":"6c2345a18b899a64e2d8d6c93fd7eddd523f7506","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"08f87bf2_c91f970d","updated":"2023-06-29 00:14:38.000000000","message":"recheck fullstack timeout","commit_id":"35d13623ef5a58966b826abfc942f03f6149d2c1"},{"author":{"_account_id":30380,"name":"ZhouHeng","email":"zhouhenglc@inspur.com","username":"zhouhenglc"},"change_message_id":"7776a50adec8ef17fcbb47e51d339c90d3d427da","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"412436ed_e9426565","updated":"2023-06-28 10:29:42.000000000","message":"recheck fullstack timeout","commit_id":"35d13623ef5a58966b826abfc942f03f6149d2c1"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"c79a27c657b4e5255dbab936a8ff8368f97049ef","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"b9032b1f_05616916","updated":"2024-03-27 21:46:51.000000000","message":"Can you rebase this to master branch? Thanks","commit_id":"6abb1e8db2e51626d8aa2973703525270eec6e3c"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"ff376a6362716b3f7e3d2c7eb63b256dc2624627","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"adae1ce2_ff304e5a","updated":"2024-09-05 16:40:11.000000000","message":"Looks like this needs another rebase.\n\nI think I\u0027m fine without unit tests as the functional test verifies it works.","commit_id":"d0b3120f75e78b6716141fba30a8db800cd94e72"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"19bdeb0a45305d5d660707f3dd670413f6f236f4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"f1dc02c5_4e4a2f2d","updated":"2024-06-24 18:06:33.000000000","message":"No unit tests?","commit_id":"d0b3120f75e78b6716141fba30a8db800cd94e72"},{"author":{"_account_id":30380,"name":"ZhouHeng","email":"zhouhenglc@inspur.com","username":"zhouhenglc"},"change_message_id":"74daa48678fc1e8ab3436eaae844858ecd6c082c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"d2786f87_889c416e","updated":"2024-09-13 09:25:00.000000000","message":"recheck some functional tests timeout","commit_id":"c5f4ebfde71c3ea510ad182a1a214b7139173071"}],"neutron/common/ovn/constants.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"c79a27c657b4e5255dbab936a8ff8368f97049ef","unresolved":true,"context_lines":[{"line_number":439,"context_line":"                            portbindings.VNIC_VIRTIO_FORWARDER,"},{"line_number":440,"context_line":"                            ]"},{"line_number":441,"context_line":""},{"line_number":442,"context_line":"OVN_MULTIPLE_TXN_STEP \u003d 1000"}],"source_content_type":"text/x-python","patch_set":8,"id":"42283fc6_452ba6d7","line":442,"updated":"2024-03-27 21:46:51.000000000","message":"Can I ask how 1000 was chosen?","commit_id":"6abb1e8db2e51626d8aa2973703525270eec6e3c"},{"author":{"_account_id":30380,"name":"ZhouHeng","email":"zhouhenglc@inspur.com","username":"zhouhenglc"},"change_message_id":"acb5ef1186219e71f59503469b3701ec70f877a7","unresolved":false,"context_lines":[{"line_number":439,"context_line":"                            portbindings.VNIC_VIRTIO_FORWARDER,"},{"line_number":440,"context_line":"                            ]"},{"line_number":441,"context_line":""},{"line_number":442,"context_line":"OVN_MULTIPLE_TXN_STEP \u003d 1000"}],"source_content_type":"text/x-python","patch_set":8,"id":"8759c72f_fd14cecf","line":442,"in_reply_to":"42283fc6_452ba6d7","updated":"2024-06-14 05:52:40.000000000","message":"The current selection of 1000 is just an empirical value, and it is not easy to fail on a large scale during actual testing.","commit_id":"6abb1e8db2e51626d8aa2973703525270eec6e3c"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/impl_idl_ovn.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b40fff29949c5b772511a1d3054b025fe4c214c2","unresolved":true,"context_lines":[{"line_number":300,"context_line":"                raise e"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"    @contextlib.contextmanager"},{"line_number":303,"context_line":"    def multiple_transaction(self, step\u003d1000, *args, **kwargs):"},{"line_number":304,"context_line":"        with MultipleTransactions(self, step, *args, **kwargs) as t:"},{"line_number":305,"context_line":"            yield t"},{"line_number":306,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9009985f_4f64e996","line":303,"range":{"start_line":303,"start_character":40,"end_line":303,"end_character":44},"updated":"2023-06-26 15:21:27.000000000","message":"This should be a positional argument or you should define the constant here (something like OVN_MULTIPLE_TXN \u003d 1000).","commit_id":"695f6e0b4ad7a1a27cdccc1601e3aa51843abcc9"},{"author":{"_account_id":30380,"name":"ZhouHeng","email":"zhouhenglc@inspur.com","username":"zhouhenglc"},"change_message_id":"7776a50adec8ef17fcbb47e51d339c90d3d427da","unresolved":false,"context_lines":[{"line_number":300,"context_line":"                raise e"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"    @contextlib.contextmanager"},{"line_number":303,"context_line":"    def multiple_transaction(self, step\u003d1000, *args, **kwargs):"},{"line_number":304,"context_line":"        with MultipleTransactions(self, step, *args, **kwargs) as t:"},{"line_number":305,"context_line":"            yield t"},{"line_number":306,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"8e7d169a_6bc50320","line":303,"range":{"start_line":303,"start_character":40,"end_line":303,"end_character":44},"in_reply_to":"9009985f_4f64e996","updated":"2023-06-28 10:29:42.000000000","message":"Done","commit_id":"695f6e0b4ad7a1a27cdccc1601e3aa51843abcc9"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b40fff29949c5b772511a1d3054b025fe4c214c2","unresolved":true,"context_lines":[{"line_number":300,"context_line":"                raise e"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"    @contextlib.contextmanager"},{"line_number":303,"context_line":"    def multiple_transaction(self, step\u003d1000, *args, **kwargs):"},{"line_number":304,"context_line":"        with MultipleTransactions(self, step, *args, **kwargs) as t:"},{"line_number":305,"context_line":"            yield t"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"    def create_lswitch_port(self, lport_name, lswitch_name, may_exist\u003dTrue,"},{"line_number":308,"context_line":"                            **columns):"}],"source_content_type":"text/x-python","patch_set":4,"id":"323b7b4e_4340dd62","line":305,"range":{"start_line":303,"start_character":4,"end_line":305,"end_character":19},"updated":"2023-06-26 15:21:27.000000000","message":"This must be tested with functional tests.","commit_id":"695f6e0b4ad7a1a27cdccc1601e3aa51843abcc9"},{"author":{"_account_id":30380,"name":"ZhouHeng","email":"zhouhenglc@inspur.com","username":"zhouhenglc"},"change_message_id":"7776a50adec8ef17fcbb47e51d339c90d3d427da","unresolved":false,"context_lines":[{"line_number":300,"context_line":"                raise e"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"    @contextlib.contextmanager"},{"line_number":303,"context_line":"    def multiple_transaction(self, step\u003d1000, *args, **kwargs):"},{"line_number":304,"context_line":"        with MultipleTransactions(self, step, *args, **kwargs) as t:"},{"line_number":305,"context_line":"            yield t"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"    def create_lswitch_port(self, lport_name, lswitch_name, may_exist\u003dTrue,"},{"line_number":308,"context_line":"                            **columns):"}],"source_content_type":"text/x-python","patch_set":4,"id":"20fb5bcb_bd0855c4","line":305,"range":{"start_line":303,"start_character":4,"end_line":305,"end_character":19},"in_reply_to":"323b7b4e_4340dd62","updated":"2023-06-28 10:29:42.000000000","message":"Done","commit_id":"695f6e0b4ad7a1a27cdccc1601e3aa51843abcc9"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"ff376a6362716b3f7e3d2c7eb63b256dc2624627","unresolved":true,"context_lines":[{"line_number":233,"context_line":"    return tuple(get_ovn_idl_retry(c) for c in (OvsdbNbOvnIdl, OvsdbSbOvnIdl))"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"class MultipleTransactions(object):"},{"line_number":237,"context_line":"    def __init__(self, ovn_api, step, *args, **kwargs):"},{"line_number":238,"context_line":"        self._api \u003d ovn_api"},{"line_number":239,"context_line":"        self.step \u003d step"}],"source_content_type":"text/x-python","patch_set":10,"id":"c8cbdac5_bc984be3","line":236,"range":{"start_line":236,"start_character":27,"end_line":236,"end_character":33},"updated":"2024-09-05 16:40:11.000000000","message":"nit: don\u0027t need object keyword here with py3","commit_id":"d0b3120f75e78b6716141fba30a8db800cd94e72"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_db_sync.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b40fff29949c5b772511a1d3054b025fe4c214c2","unresolved":true,"context_lines":[{"line_number":299,"context_line":"                         \u0027remove\u0027: num_acls_to_remove})"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"        if self.mode \u003d\u003d SYNC_MODE_REPAIR:"},{"line_number":302,"context_line":"            step \u003d 1000"},{"line_number":303,"context_line":"            with self.ovn_api.multiple_transaction("},{"line_number":304,"context_line":"                    step, check_error\u003dTrue) as txn:"},{"line_number":305,"context_line":"                for acla in neutron_acls:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3b416712_bf1a817b","line":302,"range":{"start_line":302,"start_character":12,"end_line":302,"end_character":23},"updated":"2023-06-26 15:21:27.000000000","message":"If we are going to have this value hardcoded, let\u0027s create a constant for it.\n\nBut if you are defining a default value in the \"multiple_transaction\" method, I wouldn\u0027t use it here.","commit_id":"695f6e0b4ad7a1a27cdccc1601e3aa51843abcc9"},{"author":{"_account_id":30380,"name":"ZhouHeng","email":"zhouhenglc@inspur.com","username":"zhouhenglc"},"change_message_id":"1f9e219b8ff0534f610c0c945e1998e3edc46ddb","unresolved":false,"context_lines":[{"line_number":299,"context_line":"                         \u0027remove\u0027: num_acls_to_remove})"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"        if self.mode \u003d\u003d SYNC_MODE_REPAIR:"},{"line_number":302,"context_line":"            step \u003d 1000"},{"line_number":303,"context_line":"            with self.ovn_api.multiple_transaction("},{"line_number":304,"context_line":"                    step, check_error\u003dTrue) as txn:"},{"line_number":305,"context_line":"                for acla in neutron_acls:"}],"source_content_type":"text/x-python","patch_set":4,"id":"a04fa208_5cb5c75d","line":302,"range":{"start_line":302,"start_character":12,"end_line":302,"end_character":23},"in_reply_to":"3b416712_bf1a817b","updated":"2023-06-28 10:30:01.000000000","message":"Done","commit_id":"695f6e0b4ad7a1a27cdccc1601e3aa51843abcc9"}],"neutron/tests/functional/plugins/ml2/drivers/ovn/mech_driver/ovsdb/test_impl_idl.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"41b33147becbf1617b93075cc6c117d23c70224b","unresolved":true,"context_lines":[{"line_number":317,"context_line":"                lsps.append(lsp_name)"},{"line_number":318,"context_line":"                txn.add(self.nbapi.create_lswitch_port(lsp_name, ls_name))"},{"line_number":319,"context_line":"        for lsp_name in lsps:"},{"line_number":320,"context_line":"            lsp \u003d self.nbapi.lookup(\u0027Logical_Switch_Port\u0027, lsp_name)"},{"line_number":321,"context_line":"            self.assertIsNotNone(lsp)"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"aaffa046_51320351","line":320,"range":{"start_line":320,"start_character":12,"end_line":320,"end_character":68},"updated":"2023-06-28 08:01:33.000000000","message":"This is failing because:\n1) You are not creating the logical switch, thus the ports cannot be created on it.\n2) You should be able to pass the \"check_error\" kwarg to the transaction in \"MultipleTransactions.add\"","commit_id":"0d21e9408186d3d02769b2ab2f0e5666736e9dc9"},{"author":{"_account_id":30380,"name":"ZhouHeng","email":"zhouhenglc@inspur.com","username":"zhouhenglc"},"change_message_id":"7776a50adec8ef17fcbb47e51d339c90d3d427da","unresolved":false,"context_lines":[{"line_number":317,"context_line":"                lsps.append(lsp_name)"},{"line_number":318,"context_line":"                txn.add(self.nbapi.create_lswitch_port(lsp_name, ls_name))"},{"line_number":319,"context_line":"        for lsp_name in lsps:"},{"line_number":320,"context_line":"            lsp \u003d self.nbapi.lookup(\u0027Logical_Switch_Port\u0027, lsp_name)"},{"line_number":321,"context_line":"            self.assertIsNotNone(lsp)"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5e241c2b_2445f665","line":320,"range":{"start_line":320,"start_character":12,"end_line":320,"end_character":68},"in_reply_to":"aaffa046_51320351","updated":"2023-06-28 10:29:42.000000000","message":"thanks, done","commit_id":"0d21e9408186d3d02769b2ab2f0e5666736e9dc9"}]}
