)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"be47dd66e5fb9dfaef1224384107f8d1a92048f5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"529f1630_d5899062","updated":"2022-02-09 17:56:11.000000000","message":"Please rebase it","commit_id":"77db3ad38f3ccd79a9e0ffd854b3854266561999"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"78a29ea53fc2ef414a3bc8fd074aaaeee86a8f1a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"3b2db26d_ec5a1d5a","updated":"2021-10-26 13:25:46.000000000","message":"recheck","commit_id":"77db3ad38f3ccd79a9e0ffd854b3854266561999"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"e143bb2a6aaacf260455d261a48ccb29d0a1c0c2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"a394753e_92d4903d","updated":"2021-11-03 15:11:41.000000000","message":"recheck","commit_id":"77db3ad38f3ccd79a9e0ffd854b3854266561999"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"77bc6dc947c8838928fc19dffdf1c468d0401019","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"d4d6eb60_e9b36d67","updated":"2021-10-20 04:00:16.000000000","message":"recheck","commit_id":"77db3ad38f3ccd79a9e0ffd854b3854266561999"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"2d5e5d8458882a2c2629b99c2284fa3e560f037c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"d5a2c99a_ce236e24","updated":"2021-10-15 04:25:35.000000000","message":"recheck","commit_id":"77db3ad38f3ccd79a9e0ffd854b3854266561999"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"675c4f2f5aebd4011aaef4a250c9cd28a9d99338","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"e85e03d0_d966804e","updated":"2021-10-15 01:16:01.000000000","message":"recheck","commit_id":"77db3ad38f3ccd79a9e0ffd854b3854266561999"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"0b3909ac271b992de545924b35d6fdcebcada636","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"16914a27_5fe633cb","updated":"2022-05-13 06:25:09.000000000","message":"Please rebase on master","commit_id":"14b1497a51317d348c239673b4ed750798ae2dce"}],"neutron/agent/common/ovs_lib.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"0922084bc9b6c168eaf284831fda5ca248c32c7b","unresolved":true,"context_lines":[{"line_number":452,"context_line":"        else:"},{"line_number":453,"context_line":"            flow_strs \u003d [_build_flow_expr_str(kw, action, strict)"},{"line_number":454,"context_line":"                         for kw in kwargs_list]"},{"line_number":455,"context_line":"            LOG.info(\"Processing %d OpenFlow rules.\", len(flow_strs))"},{"line_number":456,"context_line":"            if use_bundle:"},{"line_number":457,"context_line":"                extra_param.append(\u0027--bundle\u0027)"},{"line_number":458,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"cbe7c8dd_84ad6dd7","line":455,"updated":"2021-01-04 12:07:03.000000000","message":"this change seems like unrelated to that patch","commit_id":"133050de3b12fd5235e2b548a25650912382bfcd"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"ab9acb17275a9abb7cff11b90617f6045ea8e39f","unresolved":false,"context_lines":[{"line_number":452,"context_line":"        else:"},{"line_number":453,"context_line":"            flow_strs \u003d [_build_flow_expr_str(kw, action, strict)"},{"line_number":454,"context_line":"                         for kw in kwargs_list]"},{"line_number":455,"context_line":"            LOG.info(\"Processing %d OpenFlow rules.\", len(flow_strs))"},{"line_number":456,"context_line":"            if use_bundle:"},{"line_number":457,"context_line":"                extra_param.append(\u0027--bundle\u0027)"},{"line_number":458,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"58a300e7_fce86523","line":455,"in_reply_to":"9d7b5fa0_3e40bc1d","updated":"2022-05-07 04:19:57.000000000","message":"Ack","commit_id":"133050de3b12fd5235e2b548a25650912382bfcd"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"12206b70462365031cefac4f7be317312b2382e8","unresolved":true,"context_lines":[{"line_number":452,"context_line":"        else:"},{"line_number":453,"context_line":"            flow_strs \u003d [_build_flow_expr_str(kw, action, strict)"},{"line_number":454,"context_line":"                         for kw in kwargs_list]"},{"line_number":455,"context_line":"            LOG.info(\"Processing %d OpenFlow rules.\", len(flow_strs))"},{"line_number":456,"context_line":"            if use_bundle:"},{"line_number":457,"context_line":"                extra_param.append(\u0027--bundle\u0027)"},{"line_number":458,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"f63e3dff_27f3c6b1","line":455,"in_reply_to":"cbe7c8dd_84ad6dd7","updated":"2021-01-05 07:44:48.000000000","message":"This is useful when ovs-agent is processing large sets of flows.","commit_id":"133050de3b12fd5235e2b548a25650912382bfcd"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"be47dd66e5fb9dfaef1224384107f8d1a92048f5","unresolved":true,"context_lines":[{"line_number":452,"context_line":"        else:"},{"line_number":453,"context_line":"            flow_strs \u003d [_build_flow_expr_str(kw, action, strict)"},{"line_number":454,"context_line":"                         for kw in kwargs_list]"},{"line_number":455,"context_line":"            LOG.info(\"Processing %d OpenFlow rules.\", len(flow_strs))"},{"line_number":456,"context_line":"            if use_bundle:"},{"line_number":457,"context_line":"                extra_param.append(\u0027--bundle\u0027)"},{"line_number":458,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9d7b5fa0_3e40bc1d","line":455,"in_reply_to":"f63e3dff_27f3c6b1","updated":"2022-02-09 17:56:11.000000000","message":"I agree here with slaweq, this is more a debug information.","commit_id":"133050de3b12fd5235e2b548a25650912382bfcd"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"985e8a28c51cea26d297d257691722fe6cae15a4","unresolved":true,"context_lines":[{"line_number":484,"context_line":"                with excutils.save_and_reraise_exception() as ctx:"},{"line_number":485,"context_line":"                    if e is timeout:"},{"line_number":486,"context_line":"                        ctx.reraise \u003d False"},{"line_number":487,"context_line":"                        step \u003d step / 2"},{"line_number":488,"context_line":"                        step \u003d 100 if step \u003c 100 else step"},{"line_number":489,"context_line":"            else:"},{"line_number":490,"context_line":"                installed +\u003d len(to_install)"}],"source_content_type":"text/x-python","patch_set":5,"id":"b5017ee9_33d54d3b","line":487,"updated":"2021-08-04 09:07:01.000000000","message":"this will give You float and then it will fail in L479 with error like:\n\n    Traceback (most recent call last):\n      File \"\u003cstdin\u003e\", line 1, in \u003cmodule\u003e\n    TypeError: slice indices must be integers or None or have an __index__ method","commit_id":"7865af483f6c1010e7e3a0a6803630f451fc59fa"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"ee52ef4d8f3271862bdfdb18d2cb409ded9c4d67","unresolved":false,"context_lines":[{"line_number":484,"context_line":"                with excutils.save_and_reraise_exception() as ctx:"},{"line_number":485,"context_line":"                    if e is timeout:"},{"line_number":486,"context_line":"                        ctx.reraise \u003d False"},{"line_number":487,"context_line":"                        step \u003d step / 2"},{"line_number":488,"context_line":"                        step \u003d 100 if step \u003c 100 else step"},{"line_number":489,"context_line":"            else:"},{"line_number":490,"context_line":"                installed +\u003d len(to_install)"}],"source_content_type":"text/x-python","patch_set":5,"id":"36bab28f_9c9f919e","line":487,"in_reply_to":"b5017ee9_33d54d3b","updated":"2021-08-05 06:28:06.000000000","message":"Done","commit_id":"7865af483f6c1010e7e3a0a6803630f451fc59fa"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"a4a5878b363d1c885af3a3c6a5d18a52c1dbd964","unresolved":true,"context_lines":[{"line_number":476,"context_line":"        # run_ofctl request timeout."},{"line_number":477,"context_line":"        timeout_sec \u003d cfg.CONF.OVS.of_request_timeout - 0.1"},{"line_number":478,"context_line":"        installed \u003d 0"},{"line_number":479,"context_line":"        step \u003d 1000"},{"line_number":480,"context_line":"        while installed !\u003d len(flows):"},{"line_number":481,"context_line":"            timeout \u003d eventlet.Timeout(seconds\u003dtimeout_sec)"},{"line_number":482,"context_line":"            to_install \u003d flows[installed:installed + step]"}],"source_content_type":"text/x-python","patch_set":6,"id":"fed3f8c8_2abd2b96","line":479,"range":{"start_line":479,"start_character":8,"end_line":479,"end_character":19},"updated":"2021-08-05 08:36:01.000000000","message":"maybe record \"good\" step size, to not adjust it each time from scratch?","commit_id":"b9b4536a5957ea78c6c7da00d068bc7ecfa74ecc"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"c871debb0cb1c54666b8bc868638e8c1450246bb","unresolved":true,"context_lines":[{"line_number":476,"context_line":"        # run_ofctl request timeout."},{"line_number":477,"context_line":"        timeout_sec \u003d cfg.CONF.OVS.of_request_timeout - 0.1"},{"line_number":478,"context_line":"        installed \u003d 0"},{"line_number":479,"context_line":"        step \u003d 1000"},{"line_number":480,"context_line":"        while installed !\u003d len(flows):"},{"line_number":481,"context_line":"            timeout \u003d eventlet.Timeout(seconds\u003dtimeout_sec)"},{"line_number":482,"context_line":"            to_install \u003d flows[installed:installed + step]"}],"source_content_type":"text/x-python","patch_set":6,"id":"84914975_d5c4ba87","line":479,"range":{"start_line":479,"start_character":8,"end_line":479,"end_character":19},"in_reply_to":"589a41d0_be0a6ccd","updated":"2021-09-28 08:57:11.000000000","message":"Added the config option to ovs-agent in this patch.","commit_id":"b9b4536a5957ea78c6c7da00d068bc7ecfa74ecc"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"ab9acb17275a9abb7cff11b90617f6045ea8e39f","unresolved":false,"context_lines":[{"line_number":476,"context_line":"        # run_ofctl request timeout."},{"line_number":477,"context_line":"        timeout_sec \u003d cfg.CONF.OVS.of_request_timeout - 0.1"},{"line_number":478,"context_line":"        installed \u003d 0"},{"line_number":479,"context_line":"        step \u003d 1000"},{"line_number":480,"context_line":"        while installed !\u003d len(flows):"},{"line_number":481,"context_line":"            timeout \u003d eventlet.Timeout(seconds\u003dtimeout_sec)"},{"line_number":482,"context_line":"            to_install \u003d flows[installed:installed + step]"}],"source_content_type":"text/x-python","patch_set":6,"id":"24d18b14_5afe4b88","line":479,"range":{"start_line":479,"start_character":8,"end_line":479,"end_character":19},"in_reply_to":"84914975_d5c4ba87","updated":"2022-05-07 04:19:57.000000000","message":"Ack","commit_id":"b9b4536a5957ea78c6c7da00d068bc7ecfa74ecc"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"aca2d14aaf47dad793d4a5e6dc243b63a5af9feb","unresolved":true,"context_lines":[{"line_number":476,"context_line":"        # run_ofctl request timeout."},{"line_number":477,"context_line":"        timeout_sec \u003d cfg.CONF.OVS.of_request_timeout - 0.1"},{"line_number":478,"context_line":"        installed \u003d 0"},{"line_number":479,"context_line":"        step \u003d 1000"},{"line_number":480,"context_line":"        while installed !\u003d len(flows):"},{"line_number":481,"context_line":"            timeout \u003d eventlet.Timeout(seconds\u003dtimeout_sec)"},{"line_number":482,"context_line":"            to_install \u003d flows[installed:installed + step]"}],"source_content_type":"text/x-python","patch_set":6,"id":"589a41d0_be0a6ccd","line":479,"range":{"start_line":479,"start_character":8,"end_line":479,"end_character":19},"in_reply_to":"971fe5f3_036c827b","updated":"2021-08-05 14:08:24.000000000","message":"Sure, make sense, let\u0027s wait until that config option added.","commit_id":"b9b4536a5957ea78c6c7da00d068bc7ecfa74ecc"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"84f53def2fbad7b8d830dce80142d3ebb7ce57db","unresolved":true,"context_lines":[{"line_number":476,"context_line":"        # run_ofctl request timeout."},{"line_number":477,"context_line":"        timeout_sec \u003d cfg.CONF.OVS.of_request_timeout - 0.1"},{"line_number":478,"context_line":"        installed \u003d 0"},{"line_number":479,"context_line":"        step \u003d 1000"},{"line_number":480,"context_line":"        while installed !\u003d len(flows):"},{"line_number":481,"context_line":"            timeout \u003d eventlet.Timeout(seconds\u003dtimeout_sec)"},{"line_number":482,"context_line":"            to_install \u003d flows[installed:installed + step]"}],"source_content_type":"text/x-python","patch_set":6,"id":"971fe5f3_036c827b","line":479,"range":{"start_line":479,"start_character":8,"end_line":479,"end_character":19},"in_reply_to":"ad71062e_111653e1","updated":"2021-08-05 09:47:08.000000000","message":"IMO we need to consider different environments with different HW performance. Setting 1000 for everybody does not seem quite correct. Lets leave it conf.AGENT_RES_PROCESSING_STEP as before so that everyone has a chance to adjust for own needs.","commit_id":"b9b4536a5957ea78c6c7da00d068bc7ecfa74ecc"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"6e9fa9fb0bc9eeadd547301063669c1756114c25","unresolved":true,"context_lines":[{"line_number":476,"context_line":"        # run_ofctl request timeout."},{"line_number":477,"context_line":"        timeout_sec \u003d cfg.CONF.OVS.of_request_timeout - 0.1"},{"line_number":478,"context_line":"        installed \u003d 0"},{"line_number":479,"context_line":"        step \u003d 1000"},{"line_number":480,"context_line":"        while installed !\u003d len(flows):"},{"line_number":481,"context_line":"            timeout \u003d eventlet.Timeout(seconds\u003dtimeout_sec)"},{"line_number":482,"context_line":"            to_install \u003d flows[installed:installed + step]"}],"source_content_type":"text/x-python","patch_set":6,"id":"ad71062e_111653e1","line":479,"range":{"start_line":479,"start_character":8,"end_line":479,"end_character":19},"in_reply_to":"fed3f8c8_2abd2b96","updated":"2021-08-05 09:36:44.000000000","message":"If remain a smaller size after the vswitchd pressure gone, seems to be not good the agent flow processing performace. [1] shows the tests result that I set 1000 to the original AGENT_RES_PROCESSING_STEP, always start at 1000 should be fine.\n\n[1] https://bugs.launchpad.net/neutron/+bug/1906487","commit_id":"b9b4536a5957ea78c6c7da00d068bc7ecfa74ecc"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"74077d23f4bb44959343860bf5917b8f76c9ce5e","unresolved":true,"context_lines":[{"line_number":488,"context_line":"                    if e is timeout:"},{"line_number":489,"context_line":"                        ctx.reraise \u003d False"},{"line_number":490,"context_line":"                        step \u003d int(step / 2)"},{"line_number":491,"context_line":"                        step \u003d 100 if step \u003c 100 else step"},{"line_number":492,"context_line":"            else:"},{"line_number":493,"context_line":"                installed +\u003d len(to_install)"},{"line_number":494,"context_line":"                LOG.debug(\"ofctl %(action)s-flows run with %(num)d flows.\","}],"source_content_type":"text/x-python","patch_set":6,"id":"aefb3e7a_8b7e082b","line":491,"range":{"start_line":491,"start_character":31,"end_line":491,"end_character":34},"updated":"2021-08-05 08:30:22.000000000","message":"why no less than 100? what if it\u0027s still too big, given user configured small of_request_timeout?","commit_id":"b9b4536a5957ea78c6c7da00d068bc7ecfa74ecc"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"aca2d14aaf47dad793d4a5e6dc243b63a5af9feb","unresolved":true,"context_lines":[{"line_number":488,"context_line":"                    if e is timeout:"},{"line_number":489,"context_line":"                        ctx.reraise \u003d False"},{"line_number":490,"context_line":"                        step \u003d int(step / 2)"},{"line_number":491,"context_line":"                        step \u003d 100 if step \u003c 100 else step"},{"line_number":492,"context_line":"            else:"},{"line_number":493,"context_line":"                installed +\u003d len(to_install)"},{"line_number":494,"context_line":"                LOG.debug(\"ofctl %(action)s-flows run with %(num)d flows.\","}],"source_content_type":"text/x-python","patch_set":6,"id":"786d55a6_e6684c0d","line":491,"range":{"start_line":491,"start_character":31,"end_line":491,"end_character":34},"in_reply_to":"455849c3_a5716277","updated":"2021-08-05 14:08:24.000000000","message":"OK, I think this min step here will be \"min_step \u003d min[5 * of_request_timeout, 100]\" to meet your request in case of of_request_timeout \u003d 1s.","commit_id":"b9b4536a5957ea78c6c7da00d068bc7ecfa74ecc"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"c871debb0cb1c54666b8bc868638e8c1450246bb","unresolved":false,"context_lines":[{"line_number":488,"context_line":"                    if e is timeout:"},{"line_number":489,"context_line":"                        ctx.reraise \u003d False"},{"line_number":490,"context_line":"                        step \u003d int(step / 2)"},{"line_number":491,"context_line":"                        step \u003d 100 if step \u003c 100 else step"},{"line_number":492,"context_line":"            else:"},{"line_number":493,"context_line":"                installed +\u003d len(to_install)"},{"line_number":494,"context_line":"                LOG.debug(\"ofctl %(action)s-flows run with %(num)d flows.\","}],"source_content_type":"text/x-python","patch_set":6,"id":"2151b387_b931fdee","line":491,"range":{"start_line":491,"start_character":31,"end_line":491,"end_character":34},"in_reply_to":"786d55a6_e6684c0d","updated":"2021-09-28 08:57:11.000000000","message":"Done","commit_id":"b9b4536a5957ea78c6c7da00d068bc7ecfa74ecc"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"6e9fa9fb0bc9eeadd547301063669c1756114c25","unresolved":true,"context_lines":[{"line_number":488,"context_line":"                    if e is timeout:"},{"line_number":489,"context_line":"                        ctx.reraise \u003d False"},{"line_number":490,"context_line":"                        step \u003d int(step / 2)"},{"line_number":491,"context_line":"                        step \u003d 100 if step \u003c 100 else step"},{"line_number":492,"context_line":"            else:"},{"line_number":493,"context_line":"                installed +\u003d len(to_install)"},{"line_number":494,"context_line":"                LOG.debug(\"ofctl %(action)s-flows run with %(num)d flows.\","}],"source_content_type":"text/x-python","patch_set":6,"id":"c5142c54_7b7b14fb","line":491,"range":{"start_line":491,"start_character":31,"end_line":491,"end_character":34},"in_reply_to":"aefb3e7a_8b7e082b","updated":"2021-08-05 09:36:44.000000000","message":"100 have been run in our local deployment for a really long time, we did not see timeout based on such value. This is a long story, before the AGENT_RES_PROCESSING_STEP the flows will be installed all by one shot even if there is 100K or 200K+ flows.\nAnyway I have 2 choices:\n1. limit the min of_request_timeout to 5s, this should be fine for 100 flows, [1] shows that 100 flows take about 0.3~0.5s.\n2. make the min step size be calculated by of_request_timeout, min_step \u003d min[10 * of_request_timeout, 100]\n\n[1] https://bugs.launchpad.net/neutron/+bug/1906487","commit_id":"b9b4536a5957ea78c6c7da00d068bc7ecfa74ecc"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"84f53def2fbad7b8d830dce80142d3ebb7ce57db","unresolved":true,"context_lines":[{"line_number":488,"context_line":"                    if e is timeout:"},{"line_number":489,"context_line":"                        ctx.reraise \u003d False"},{"line_number":490,"context_line":"                        step \u003d int(step / 2)"},{"line_number":491,"context_line":"                        step \u003d 100 if step \u003c 100 else step"},{"line_number":492,"context_line":"            else:"},{"line_number":493,"context_line":"                installed +\u003d len(to_install)"},{"line_number":494,"context_line":"                LOG.debug(\"ofctl %(action)s-flows run with %(num)d flows.\","}],"source_content_type":"text/x-python","patch_set":6,"id":"455849c3_a5716277","line":491,"range":{"start_line":491,"start_character":31,"end_line":491,"end_character":34},"in_reply_to":"c5142c54_7b7b14fb","updated":"2021-08-05 09:47:08.000000000","message":"Again, IMO we need to consider different environments with different HW performance. Line 491 means we already hit timeout with current step size, if it\u0027s already 100 and it\u0027s not going to be smaller - what happens, infinite timeouts? I don\u0027t see any drawbacks in letting step size downgrade to 10, 5 or even 1 (in case timeouts continue happen).","commit_id":"b9b4536a5957ea78c6c7da00d068bc7ecfa74ecc"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"744a4a19e77e8b30e8f1ca7e19bfcede0072e037","unresolved":true,"context_lines":[{"line_number":464,"context_line":"        else:"},{"line_number":465,"context_line":"            flow_strs \u003d [_build_flow_expr_str(kw, action, strict)"},{"line_number":466,"context_line":"                         for kw in kwargs_list]"},{"line_number":467,"context_line":"            LOG.info(\"Processing %d OpenFlow rules.\", len(flow_strs))"},{"line_number":468,"context_line":"            if use_bundle:"},{"line_number":469,"context_line":"                extra_param.append(\u0027--bundle\u0027)"},{"line_number":470,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"d4930f6c_e5c54d46","line":467,"range":{"start_line":467,"start_character":16,"end_line":467,"end_character":20},"updated":"2021-09-28 11:07:00.000000000","message":"why info now?","commit_id":"9653c18e335a43508e92cf63b07e436e40fa59a9"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"22c5370a88fbc48668699c339bc22512c10bdba6","unresolved":true,"context_lines":[{"line_number":464,"context_line":"        else:"},{"line_number":465,"context_line":"            flow_strs \u003d [_build_flow_expr_str(kw, action, strict)"},{"line_number":466,"context_line":"                         for kw in kwargs_list]"},{"line_number":467,"context_line":"            LOG.info(\"Processing %d OpenFlow rules.\", len(flow_strs))"},{"line_number":468,"context_line":"            if use_bundle:"},{"line_number":469,"context_line":"                extra_param.append(\u0027--bundle\u0027)"},{"line_number":470,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"d5c68128_465e8047","line":467,"range":{"start_line":467,"start_character":16,"end_line":467,"end_character":20},"in_reply_to":"d4930f6c_e5c54d46","updated":"2021-09-28 13:43:15.000000000","message":"It should be better for cloud operators and developers to realize how many flows they are taking care. And this could be considered as a start log of flow processing of the time-consuming security groups, while there is a info log which point to the end: \"process_network_ports - iteration:%(iter_num)d - agent port security group processed in %(elapsed).3f\" [1].\n\n[1] https://github.com/openstack/neutron/blob/master/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py#L2110","commit_id":"9653c18e335a43508e92cf63b07e436e40fa59a9"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"ab9acb17275a9abb7cff11b90617f6045ea8e39f","unresolved":false,"context_lines":[{"line_number":464,"context_line":"        else:"},{"line_number":465,"context_line":"            flow_strs \u003d [_build_flow_expr_str(kw, action, strict)"},{"line_number":466,"context_line":"                         for kw in kwargs_list]"},{"line_number":467,"context_line":"            LOG.info(\"Processing %d OpenFlow rules.\", len(flow_strs))"},{"line_number":468,"context_line":"            if use_bundle:"},{"line_number":469,"context_line":"                extra_param.append(\u0027--bundle\u0027)"},{"line_number":470,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"79372c7a_fa879421","line":467,"range":{"start_line":467,"start_character":16,"end_line":467,"end_character":20},"in_reply_to":"d5c68128_465e8047","updated":"2022-05-07 04:19:57.000000000","message":"Ack","commit_id":"9653c18e335a43508e92cf63b07e436e40fa59a9"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"744a4a19e77e8b30e8f1ca7e19bfcede0072e037","unresolved":true,"context_lines":[{"line_number":472,"context_line":""},{"line_number":473,"context_line":"    def _run_ofctl_bulk(self, action, extra_param, flows):"},{"line_number":474,"context_line":"        # Give 0.1s earlier than OF request timeout in order to"},{"line_number":475,"context_line":"        # make it can retry the action avoiding stopped by"},{"line_number":476,"context_line":"        # run_ofctl request timeout."},{"line_number":477,"context_line":"        timeout_sec \u003d cfg.CONF.OVS.of_request_timeout - 0.1"},{"line_number":478,"context_line":"        # minimum value of min_step will be 5s if of_request_timeout"},{"line_number":479,"context_line":"        # is equal to 1s."}],"source_content_type":"text/x-python","patch_set":7,"id":"89f007a3_64256835","line":476,"range":{"start_line":475,"start_character":39,"end_line":476,"end_character":36},"updated":"2021-09-28 11:07:00.000000000","message":"what\u0027s wrong with catching of_request_timeout?","commit_id":"9653c18e335a43508e92cf63b07e436e40fa59a9"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"ab9acb17275a9abb7cff11b90617f6045ea8e39f","unresolved":false,"context_lines":[{"line_number":472,"context_line":""},{"line_number":473,"context_line":"    def _run_ofctl_bulk(self, action, extra_param, flows):"},{"line_number":474,"context_line":"        # Give 0.1s earlier than OF request timeout in order to"},{"line_number":475,"context_line":"        # make it can retry the action avoiding stopped by"},{"line_number":476,"context_line":"        # run_ofctl request timeout."},{"line_number":477,"context_line":"        timeout_sec \u003d cfg.CONF.OVS.of_request_timeout - 0.1"},{"line_number":478,"context_line":"        # minimum value of min_step will be 5s if of_request_timeout"},{"line_number":479,"context_line":"        # is equal to 1s."}],"source_content_type":"text/x-python","patch_set":7,"id":"ff747f5b_bd10da6d","line":476,"range":{"start_line":475,"start_character":39,"end_line":476,"end_character":36},"in_reply_to":"72e5a5c6_09701127","updated":"2022-05-07 04:19:57.000000000","message":"Ack","commit_id":"9653c18e335a43508e92cf63b07e436e40fa59a9"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"22c5370a88fbc48668699c339bc22512c10bdba6","unresolved":true,"context_lines":[{"line_number":472,"context_line":""},{"line_number":473,"context_line":"    def _run_ofctl_bulk(self, action, extra_param, flows):"},{"line_number":474,"context_line":"        # Give 0.1s earlier than OF request timeout in order to"},{"line_number":475,"context_line":"        # make it can retry the action avoiding stopped by"},{"line_number":476,"context_line":"        # run_ofctl request timeout."},{"line_number":477,"context_line":"        timeout_sec \u003d cfg.CONF.OVS.of_request_timeout - 0.1"},{"line_number":478,"context_line":"        # minimum value of min_step will be 5s if of_request_timeout"},{"line_number":479,"context_line":"        # is equal to 1s."}],"source_content_type":"text/x-python","patch_set":7,"id":"72e5a5c6_09701127","line":476,"range":{"start_line":475,"start_character":39,"end_line":476,"end_character":36},"in_reply_to":"89f007a3_64256835","updated":"2021-09-28 13:43:15.000000000","message":"Then that function \"run_ofctl\" may need some more refactor works since it hides all exceptions.","commit_id":"9653c18e335a43508e92cf63b07e436e40fa59a9"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"3cc60f9de99a9284e881bda074ca90d83ad4eadf","unresolved":true,"context_lines":[{"line_number":474,"context_line":"        # Give 0.1s earlier than OF request timeout in order to"},{"line_number":475,"context_line":"        # make it can retry the action avoiding stopped by"},{"line_number":476,"context_line":"        # run_ofctl request timeout."},{"line_number":477,"context_line":"        timeout_sec \u003d cfg.CONF.OVS.of_request_timeout - 0.1"},{"line_number":478,"context_line":"        # minimum value of min_step will be 5s if of_request_timeout"},{"line_number":479,"context_line":"        # is equal to 1s."},{"line_number":480,"context_line":"        min_step \u003d min(int(5 * cfg.CONF.OVS.of_request_timeout), 100)"}],"source_content_type":"text/x-python","patch_set":8,"id":"4085a0e2_bb8d68a3","line":477,"range":{"start_line":477,"start_character":35,"end_line":477,"end_character":53},"updated":"2021-09-29 07:25:56.000000000","message":"Why this timeout? I\u0027ve tested reducing the \"of_request_timeout\" to 1ms and the shell command ovs-ofctl seems not to be affected even when I add 2000+ flows. I don\u0027t receive a timeout.","commit_id":"226386bd6128b7569a74429084bf175b3aa5c9db"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"5e9bb8643ff08b7e3ed3ac93b908da432ad0e6b4","unresolved":true,"context_lines":[{"line_number":471,"context_line":"            self._run_ofctl_bulk(action, extra_param, flow_strs)"},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"    def _run_ofctl_bulk(self, action, extra_param, flows):"},{"line_number":474,"context_line":"        # Give 0.1s earlier than OF request timeout in order to"},{"line_number":475,"context_line":"        # make it can retry the action avoiding stopped by"},{"line_number":476,"context_line":"        # run_ofctl request timeout."},{"line_number":477,"context_line":"        timeout_sec \u003d cfg.CONF.OVS.of_request_timeout - 0.1"},{"line_number":478,"context_line":"        # minimum value of min_step will be 5s if of_request_timeout"},{"line_number":479,"context_line":"        # is equal to 1s."},{"line_number":480,"context_line":"        min_step \u003d min(int(5 * cfg.CONF.OVS.of_request_timeout), 100)"}],"source_content_type":"text/x-python","patch_set":8,"id":"55fef2d0_0379b7f5","line":477,"range":{"start_line":474,"start_character":8,"end_line":477,"end_character":59},"updated":"2021-09-29 07:09:42.000000000","message":"still not sure what is this for: seems we can retry regardless of run_ofctl timeout (as you said it suppresses all exceptions). Can you please clarify what will change if remove this \"- 0.1\"?","commit_id":"226386bd6128b7569a74429084bf175b3aa5c9db"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"ab9acb17275a9abb7cff11b90617f6045ea8e39f","unresolved":false,"context_lines":[{"line_number":474,"context_line":"        # Give 0.1s earlier than OF request timeout in order to"},{"line_number":475,"context_line":"        # make it can retry the action avoiding stopped by"},{"line_number":476,"context_line":"        # run_ofctl request timeout."},{"line_number":477,"context_line":"        timeout_sec \u003d cfg.CONF.OVS.of_request_timeout - 0.1"},{"line_number":478,"context_line":"        # minimum value of min_step will be 5s if of_request_timeout"},{"line_number":479,"context_line":"        # is equal to 1s."},{"line_number":480,"context_line":"        min_step \u003d min(int(5 * cfg.CONF.OVS.of_request_timeout), 100)"}],"source_content_type":"text/x-python","patch_set":8,"id":"67f38eed_65e1207d","line":477,"range":{"start_line":477,"start_character":35,"end_line":477,"end_character":53},"in_reply_to":"30f4eb0a_38b614b3","updated":"2022-05-07 04:19:57.000000000","message":"Ack","commit_id":"226386bd6128b7569a74429084bf175b3aa5c9db"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"6a39a0be0735c070f7f19ab8e417bf267dd958c4","unresolved":true,"context_lines":[{"line_number":474,"context_line":"        # Give 0.1s earlier than OF request timeout in order to"},{"line_number":475,"context_line":"        # make it can retry the action avoiding stopped by"},{"line_number":476,"context_line":"        # run_ofctl request timeout."},{"line_number":477,"context_line":"        timeout_sec \u003d cfg.CONF.OVS.of_request_timeout - 0.1"},{"line_number":478,"context_line":"        # minimum value of min_step will be 5s if of_request_timeout"},{"line_number":479,"context_line":"        # is equal to 1s."},{"line_number":480,"context_line":"        min_step \u003d min(int(5 * cfg.CONF.OVS.of_request_timeout), 100)"}],"source_content_type":"text/x-python","patch_set":8,"id":"30f4eb0a_38b614b3","line":477,"range":{"start_line":477,"start_character":35,"end_line":477,"end_character":53},"in_reply_to":"4085a0e2_bb8d68a3","updated":"2021-09-29 14:50:41.000000000","message":"function run_ofctl hides all exceptions. So you did not receive any exeptions. And, `of_request_timeout` is applied to native OF request [1], while ovs-ofctl command does not have a param or error singal of timeout.\n\n[1] https://opendev.org/openstack/neutron/src/branch/master/neutron/plugins/ml2/drivers/openvswitch/agent/openflow/native/ofswitch.py#L95","commit_id":"226386bd6128b7569a74429084bf175b3aa5c9db"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"6a39a0be0735c070f7f19ab8e417bf267dd958c4","unresolved":true,"context_lines":[{"line_number":471,"context_line":"            self._run_ofctl_bulk(action, extra_param, flow_strs)"},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"    def _run_ofctl_bulk(self, action, extra_param, flows):"},{"line_number":474,"context_line":"        # Give 0.1s earlier than OF request timeout in order to"},{"line_number":475,"context_line":"        # make it can retry the action avoiding stopped by"},{"line_number":476,"context_line":"        # run_ofctl request timeout."},{"line_number":477,"context_line":"        timeout_sec \u003d cfg.CONF.OVS.of_request_timeout - 0.1"},{"line_number":478,"context_line":"        # minimum value of min_step will be 5s if of_request_timeout"},{"line_number":479,"context_line":"        # is equal to 1s."},{"line_number":480,"context_line":"        min_step \u003d min(int(5 * cfg.CONF.OVS.of_request_timeout), 100)"}],"source_content_type":"text/x-python","patch_set":8,"id":"bf7312dc_ca013a30","line":477,"range":{"start_line":474,"start_character":8,"end_line":477,"end_character":59},"in_reply_to":"55fef2d0_0379b7f5","updated":"2021-09-29 14:50:41.000000000","message":"Make sense, function run_ofctl just hides all exceptions. So this is not needed.","commit_id":"226386bd6128b7569a74429084bf175b3aa5c9db"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"3020d7804a325a6c35af59cedc5f026d75924e13","unresolved":true,"context_lines":[{"line_number":471,"context_line":"            self._run_ofctl_bulk(action, extra_param, flow_strs)"},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"    def _run_ofctl_bulk(self, action, extra_param, flows):"},{"line_number":474,"context_line":"        # Give 0.1s earlier than OF request timeout in order to"},{"line_number":475,"context_line":"        # make it can retry the action avoiding stopped by"},{"line_number":476,"context_line":"        # run_ofctl request timeout."},{"line_number":477,"context_line":"        timeout_sec \u003d cfg.CONF.OVS.of_request_timeout - 0.1"},{"line_number":478,"context_line":"        # minimum value of min_step will be 5s if of_request_timeout"},{"line_number":479,"context_line":"        # is equal to 1s."},{"line_number":480,"context_line":"        min_step \u003d min(int(5 * cfg.CONF.OVS.of_request_timeout), 100)"}],"source_content_type":"text/x-python","patch_set":8,"id":"e870081d_b5e96b29","line":477,"range":{"start_line":474,"start_character":8,"end_line":477,"end_character":59},"in_reply_to":"bf7312dc_ca013a30","updated":"2021-10-14 08:34:33.000000000","message":"Done, -0.1 is removed.","commit_id":"226386bd6128b7569a74429084bf175b3aa5c9db"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"ab9acb17275a9abb7cff11b90617f6045ea8e39f","unresolved":false,"context_lines":[{"line_number":471,"context_line":"            self._run_ofctl_bulk(action, extra_param, flow_strs)"},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"    def _run_ofctl_bulk(self, action, extra_param, flows):"},{"line_number":474,"context_line":"        # Give 0.1s earlier than OF request timeout in order to"},{"line_number":475,"context_line":"        # make it can retry the action avoiding stopped by"},{"line_number":476,"context_line":"        # run_ofctl request timeout."},{"line_number":477,"context_line":"        timeout_sec \u003d cfg.CONF.OVS.of_request_timeout - 0.1"},{"line_number":478,"context_line":"        # minimum value of min_step will be 5s if of_request_timeout"},{"line_number":479,"context_line":"        # is equal to 1s."},{"line_number":480,"context_line":"        min_step \u003d min(int(5 * cfg.CONF.OVS.of_request_timeout), 100)"}],"source_content_type":"text/x-python","patch_set":8,"id":"dee366c2_e83c01e4","line":477,"range":{"start_line":474,"start_character":8,"end_line":477,"end_character":59},"in_reply_to":"e870081d_b5e96b29","updated":"2022-05-07 04:19:57.000000000","message":"Ack","commit_id":"226386bd6128b7569a74429084bf175b3aa5c9db"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"3cc60f9de99a9284e881bda074ca90d83ad4eadf","unresolved":true,"context_lines":[{"line_number":484,"context_line":"            timeout \u003d eventlet.Timeout(seconds\u003dtimeout_sec)"},{"line_number":485,"context_line":"            to_install \u003d flows[installed:installed + step]"},{"line_number":486,"context_line":"            try:"},{"line_number":487,"context_line":"                self.run_ofctl(\u0027%s-flows\u0027 % action, extra_param + [\u0027-\u0027],"},{"line_number":488,"context_line":"                               \u0027\\n\u0027.join(to_install))"},{"line_number":489,"context_line":"            except eventlet.Timeout as e:"},{"line_number":490,"context_line":"                with excutils.save_and_reraise_exception() as ctx:"},{"line_number":491,"context_line":"                    if e is timeout:"}],"source_content_type":"text/x-python","patch_set":8,"id":"1e7debe7_b6de70b5","line":488,"range":{"start_line":487,"start_character":16,"end_line":488,"end_character":53},"updated":"2021-09-29 07:25:56.000000000","message":"When the timeout exception is raised, what the OF table status is? Will we leave OF rule leftovers? Will this command be interrupted or will it continue?","commit_id":"226386bd6128b7569a74429084bf175b3aa5c9db"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"6a39a0be0735c070f7f19ab8e417bf267dd958c4","unresolved":true,"context_lines":[{"line_number":484,"context_line":"            timeout \u003d eventlet.Timeout(seconds\u003dtimeout_sec)"},{"line_number":485,"context_line":"            to_install \u003d flows[installed:installed + step]"},{"line_number":486,"context_line":"            try:"},{"line_number":487,"context_line":"                self.run_ofctl(\u0027%s-flows\u0027 % action, extra_param + [\u0027-\u0027],"},{"line_number":488,"context_line":"                               \u0027\\n\u0027.join(to_install))"},{"line_number":489,"context_line":"            except eventlet.Timeout as e:"},{"line_number":490,"context_line":"                with excutils.save_and_reraise_exception() as ctx:"},{"line_number":491,"context_line":"                    if e is timeout:"}],"source_content_type":"text/x-python","patch_set":8,"id":"8563053a_2e80f7d8","line":488,"range":{"start_line":487,"start_character":16,"end_line":488,"end_character":53},"in_reply_to":"1e7debe7_b6de70b5","updated":"2021-09-29 14:50:41.000000000","message":"The OF table status is unkown. The OF rules may get installed or not. But the distribution of the flows is reentrant. So this method here will narrow down the flow set size and continue to try run ofctl.","commit_id":"226386bd6128b7569a74429084bf175b3aa5c9db"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"ab9acb17275a9abb7cff11b90617f6045ea8e39f","unresolved":false,"context_lines":[{"line_number":484,"context_line":"            timeout \u003d eventlet.Timeout(seconds\u003dtimeout_sec)"},{"line_number":485,"context_line":"            to_install \u003d flows[installed:installed + step]"},{"line_number":486,"context_line":"            try:"},{"line_number":487,"context_line":"                self.run_ofctl(\u0027%s-flows\u0027 % action, extra_param + [\u0027-\u0027],"},{"line_number":488,"context_line":"                               \u0027\\n\u0027.join(to_install))"},{"line_number":489,"context_line":"            except eventlet.Timeout as e:"},{"line_number":490,"context_line":"                with excutils.save_and_reraise_exception() as ctx:"},{"line_number":491,"context_line":"                    if e is timeout:"}],"source_content_type":"text/x-python","patch_set":8,"id":"dc735eab_685a74a5","line":488,"range":{"start_line":487,"start_character":16,"end_line":488,"end_character":53},"in_reply_to":"8563053a_2e80f7d8","updated":"2022-05-07 04:19:57.000000000","message":"Ack","commit_id":"226386bd6128b7569a74429084bf175b3aa5c9db"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"5e9bb8643ff08b7e3ed3ac93b908da432ad0e6b4","unresolved":true,"context_lines":[{"line_number":488,"context_line":"                               \u0027\\n\u0027.join(to_install))"},{"line_number":489,"context_line":"            except eventlet.Timeout as e:"},{"line_number":490,"context_line":"                with excutils.save_and_reraise_exception() as ctx:"},{"line_number":491,"context_line":"                    if e is timeout:"},{"line_number":492,"context_line":"                        ctx.reraise \u003d False"},{"line_number":493,"context_line":"                        step \u003d int(step / 2)"},{"line_number":494,"context_line":"                        step \u003d min_step if step \u003c min_step else step"},{"line_number":495,"context_line":"            else:"},{"line_number":496,"context_line":"                installed +\u003d len(to_install)"},{"line_number":497,"context_line":"                LOG.debug(\"ofctl %(action)s-flows run with %(num)d flows.\","}],"source_content_type":"text/x-python","patch_set":8,"id":"150a003d_a3b2e23e","line":494,"range":{"start_line":491,"start_character":20,"end_line":494,"end_character":68},"updated":"2021-09-29 07:09:42.000000000","message":"Consider adding a warning log here (or better just let run_ofctl log for us, if set timeout \u003e\u003d of_request_timeout) just to inform operator that agent_resources_processing_step might be too big - so that next agent restart won\u0027t lead to timeouts and step adjustment again.","commit_id":"226386bd6128b7569a74429084bf175b3aa5c9db"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"3020d7804a325a6c35af59cedc5f026d75924e13","unresolved":false,"context_lines":[{"line_number":488,"context_line":"                               \u0027\\n\u0027.join(to_install))"},{"line_number":489,"context_line":"            except eventlet.Timeout as e:"},{"line_number":490,"context_line":"                with excutils.save_and_reraise_exception() as ctx:"},{"line_number":491,"context_line":"                    if e is timeout:"},{"line_number":492,"context_line":"                        ctx.reraise \u003d False"},{"line_number":493,"context_line":"                        step \u003d int(step / 2)"},{"line_number":494,"context_line":"                        step \u003d min_step if step \u003c min_step else step"},{"line_number":495,"context_line":"            else:"},{"line_number":496,"context_line":"                installed +\u003d len(to_install)"},{"line_number":497,"context_line":"                LOG.debug(\"ofctl %(action)s-flows run with %(num)d flows.\","}],"source_content_type":"text/x-python","patch_set":8,"id":"c8f30555_3eaba545","line":494,"range":{"start_line":491,"start_character":20,"end_line":494,"end_character":68},"in_reply_to":"150a003d_a3b2e23e","updated":"2021-10-14 08:34:33.000000000","message":"Done","commit_id":"226386bd6128b7569a74429084bf175b3aa5c9db"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"413eff1cdfa4c0ad7105bb5fd170246727eec290","unresolved":true,"context_lines":[{"line_number":488,"context_line":""},{"line_number":489,"context_line":"    def _run_ofctl_bulk(self, action, extra_param, flows):"},{"line_number":490,"context_line":"        timeout_sec \u003d cfg.CONF.OVS.of_request_timeout"},{"line_number":491,"context_line":"        # minimum value of min_step will be 5s if of_request_timeout"},{"line_number":492,"context_line":"        # is equal to 1s."},{"line_number":493,"context_line":"        min_step \u003d min(int(5 * cfg.CONF.OVS.of_request_timeout), 100)"},{"line_number":494,"context_line":"        installed \u003d 0"}],"source_content_type":"text/x-python","patch_set":9,"id":"7d032f0c_9a2b52b8","line":491,"range":{"start_line":491,"start_character":45,"end_line":491,"end_character":46},"updated":"2021-10-20 07:22:01.000000000","message":"why s? step is not in seconds, right?","commit_id":"77db3ad38f3ccd79a9e0ffd854b3854266561999"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"f0badd0b2f458365a448586de664031ad6bf9ff1","unresolved":false,"context_lines":[{"line_number":488,"context_line":""},{"line_number":489,"context_line":"    def _run_ofctl_bulk(self, action, extra_param, flows):"},{"line_number":490,"context_line":"        timeout_sec \u003d cfg.CONF.OVS.of_request_timeout"},{"line_number":491,"context_line":"        # minimum value of min_step will be 5s if of_request_timeout"},{"line_number":492,"context_line":"        # is equal to 1s."},{"line_number":493,"context_line":"        min_step \u003d min(int(5 * cfg.CONF.OVS.of_request_timeout), 100)"},{"line_number":494,"context_line":"        installed \u003d 0"}],"source_content_type":"text/x-python","patch_set":9,"id":"d6bcee2c_aa5077ba","line":491,"range":{"start_line":491,"start_character":45,"end_line":491,"end_character":46},"in_reply_to":"7d032f0c_9a2b52b8","updated":"2022-05-07 04:27:19.000000000","message":"Done","commit_id":"77db3ad38f3ccd79a9e0ffd854b3854266561999"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"ab9acb17275a9abb7cff11b90617f6045ea8e39f","unresolved":false,"context_lines":[{"line_number":488,"context_line":""},{"line_number":489,"context_line":"    def _run_ofctl_bulk(self, action, extra_param, flows):"},{"line_number":490,"context_line":"        timeout_sec \u003d cfg.CONF.OVS.of_request_timeout"},{"line_number":491,"context_line":"        # minimum value of min_step will be 5s if of_request_timeout"},{"line_number":492,"context_line":"        # is equal to 1s."},{"line_number":493,"context_line":"        min_step \u003d min(int(5 * cfg.CONF.OVS.of_request_timeout), 100)"},{"line_number":494,"context_line":"        installed \u003d 0"}],"source_content_type":"text/x-python","patch_set":9,"id":"e44e3a67_e9bdc515","line":491,"range":{"start_line":491,"start_character":45,"end_line":491,"end_character":46},"in_reply_to":"7d032f0c_9a2b52b8","updated":"2022-05-07 04:19:57.000000000","message":"Done","commit_id":"77db3ad38f3ccd79a9e0ffd854b3854266561999"}],"neutron/conf/plugins/ml2/drivers/ovs_conf.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"5e9bb8643ff08b7e3ed3ac93b908da432ad0e6b4","unresolved":true,"context_lines":[{"line_number":183,"context_line":"    cfg.IntOpt(\"agent_resources_processing_step\","},{"line_number":184,"context_line":"               default\u003d_constants.AGENT_RES_PROCESSING_STEP, min\u003d1,"},{"line_number":185,"context_line":"               help\u003d_(\"This value is the number of resources the agent will \""},{"line_number":186,"context_line":"                      \"process resources at once, for instance how many flows \""},{"line_number":187,"context_line":"                      \"will be sent in one single ovs OF flow request. \""},{"line_number":188,"context_line":"                      \"Reducing this number will mitigate the timeouts when \""},{"line_number":189,"context_line":"                      \"requesting objects with large data sets.\")),"}],"source_content_type":"text/x-python","patch_set":8,"id":"3ef78d5b_38548a4d","line":186,"range":{"start_line":186,"start_character":31,"end_line":186,"end_character":40},"updated":"2021-09-29 07:09:42.000000000","message":"redundant","commit_id":"226386bd6128b7569a74429084bf175b3aa5c9db"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"3020d7804a325a6c35af59cedc5f026d75924e13","unresolved":false,"context_lines":[{"line_number":183,"context_line":"    cfg.IntOpt(\"agent_resources_processing_step\","},{"line_number":184,"context_line":"               default\u003d_constants.AGENT_RES_PROCESSING_STEP, min\u003d1,"},{"line_number":185,"context_line":"               help\u003d_(\"This value is the number of resources the agent will \""},{"line_number":186,"context_line":"                      \"process resources at once, for instance how many flows \""},{"line_number":187,"context_line":"                      \"will be sent in one single ovs OF flow request. \""},{"line_number":188,"context_line":"                      \"Reducing this number will mitigate the timeouts when \""},{"line_number":189,"context_line":"                      \"requesting objects with large data sets.\")),"}],"source_content_type":"text/x-python","patch_set":8,"id":"014dc338_4f47a717","line":186,"range":{"start_line":186,"start_character":31,"end_line":186,"end_character":40},"in_reply_to":"3ef78d5b_38548a4d","updated":"2021-10-14 08:34:33.000000000","message":"Done","commit_id":"226386bd6128b7569a74429084bf175b3aa5c9db"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"73bb35e6168e1d6f97d6a2d129aed8b02898f3bb","unresolved":true,"context_lines":[{"line_number":231,"context_line":"               default\u003d_constants.AGENT_RES_PROCESSING_STEP, min\u003d1,"},{"line_number":232,"context_line":"               help\u003d_(\"This value is the number of resources the agent will \""},{"line_number":233,"context_line":"                      \"process at once, for instance how many flows \""},{"line_number":234,"context_line":"                      \"will be sent in one single ovs OF flow request. \""},{"line_number":235,"context_line":"                      \"Reducing this number will mitigate the timeouts when \""},{"line_number":236,"context_line":"                      \"requesting objects with large data sets.\")),"},{"line_number":237,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":10,"id":"090375dd_f5bc417f","line":234,"range":{"start_line":234,"start_character":50,"end_line":234,"end_character":53},"updated":"2022-03-31 03:06:06.000000000","message":"s/OVS","commit_id":"3d323d475403e829ab9917e91bae4b81ab53d3d6"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"ab9acb17275a9abb7cff11b90617f6045ea8e39f","unresolved":false,"context_lines":[{"line_number":231,"context_line":"               default\u003d_constants.AGENT_RES_PROCESSING_STEP, min\u003d1,"},{"line_number":232,"context_line":"               help\u003d_(\"This value is the number of resources the agent will \""},{"line_number":233,"context_line":"                      \"process at once, for instance how many flows \""},{"line_number":234,"context_line":"                      \"will be sent in one single ovs OF flow request. \""},{"line_number":235,"context_line":"                      \"Reducing this number will mitigate the timeouts when \""},{"line_number":236,"context_line":"                      \"requesting objects with large data sets.\")),"},{"line_number":237,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":10,"id":"7930a1eb_6a497210","line":234,"range":{"start_line":234,"start_character":50,"end_line":234,"end_character":53},"in_reply_to":"090375dd_f5bc417f","updated":"2022-05-07 04:19:57.000000000","message":"Done","commit_id":"3d323d475403e829ab9917e91bae4b81ab53d3d6"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"73bb35e6168e1d6f97d6a2d129aed8b02898f3bb","unresolved":true,"context_lines":[{"line_number":232,"context_line":"               help\u003d_(\"This value is the number of resources the agent will \""},{"line_number":233,"context_line":"                      \"process at once, for instance how many flows \""},{"line_number":234,"context_line":"                      \"will be sent in one single ovs OF flow request. \""},{"line_number":235,"context_line":"                      \"Reducing this number will mitigate the timeouts when \""},{"line_number":236,"context_line":"                      \"requesting objects with large data sets.\")),"},{"line_number":237,"context_line":"]"},{"line_number":238,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"86ab9e89_30768029","line":235,"range":{"start_line":235,"start_character":49,"end_line":235,"end_character":61},"updated":"2022-03-31 03:06:06.000000000","message":"s/help mitigate timeouts ?","commit_id":"3d323d475403e829ab9917e91bae4b81ab53d3d6"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"ab9acb17275a9abb7cff11b90617f6045ea8e39f","unresolved":false,"context_lines":[{"line_number":232,"context_line":"               help\u003d_(\"This value is the number of resources the agent will \""},{"line_number":233,"context_line":"                      \"process at once, for instance how many flows \""},{"line_number":234,"context_line":"                      \"will be sent in one single ovs OF flow request. \""},{"line_number":235,"context_line":"                      \"Reducing this number will mitigate the timeouts when \""},{"line_number":236,"context_line":"                      \"requesting objects with large data sets.\")),"},{"line_number":237,"context_line":"]"},{"line_number":238,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"4d2359cb_45114681","line":235,"range":{"start_line":235,"start_character":49,"end_line":235,"end_character":61},"in_reply_to":"86ab9e89_30768029","updated":"2022-05-07 04:19:57.000000000","message":"Done","commit_id":"3d323d475403e829ab9917e91bae4b81ab53d3d6"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"4b7f382f1ade1332df6b8694a3b9d6a7f72e89ea","unresolved":true,"context_lines":[{"line_number":227,"context_line":"                       \"egress packets will be taken care of in the final \""},{"line_number":228,"context_line":"                       \"egress tables direct output flows for unicast \""},{"line_number":229,"context_line":"                       \"traffic.\")),"},{"line_number":230,"context_line":"    cfg.IntOpt(\"agent_resources_processing_step\","},{"line_number":231,"context_line":"               default\u003d_constants.AGENT_RES_PROCESSING_STEP, min\u003d1,"},{"line_number":232,"context_line":"               help\u003d_(\"This value is the number of resources the agent will \""},{"line_number":233,"context_line":"                      \"process at once, for instance how many flows \""},{"line_number":234,"context_line":"                      \"will be sent in one single OVS OF flow request. \""},{"line_number":235,"context_line":"                      \"Reducing this number will help mitigate timeouts when \""},{"line_number":236,"context_line":"                      \"requesting objects with large data sets.\")),"},{"line_number":237,"context_line":"]"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"dhcp_opts \u003d ["}],"source_content_type":"text/x-python","patch_set":15,"id":"d3cfa543_e1746464","line":236,"range":{"start_line":230,"start_character":4,"end_line":236,"end_character":67},"updated":"2022-05-20 09:00:32.000000000","message":"Since currently it\u0027s only related to OVS flows let\u0027s say it explicitly and define next to \"openflow_processed_per_port\" in conf/agent/ovs_conf.py as they are closely related. Suggest to name it \"openflow_number_processing_step\" - thus no need to fix config description \"openflow_processed_per_port\"","commit_id":"b758240d7561f01c1236310265fd694df636f265"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"fb217abc6bd7eecea5560f6e3454a5760abd3dad","unresolved":true,"context_lines":[{"line_number":227,"context_line":"                       \"egress packets will be taken care of in the final \""},{"line_number":228,"context_line":"                       \"egress tables direct output flows for unicast \""},{"line_number":229,"context_line":"                       \"traffic.\")),"},{"line_number":230,"context_line":"    cfg.IntOpt(\"agent_resources_processing_step\","},{"line_number":231,"context_line":"               default\u003d_constants.AGENT_RES_PROCESSING_STEP, min\u003d1,"},{"line_number":232,"context_line":"               help\u003d_(\"This value is the number of resources the agent will \""},{"line_number":233,"context_line":"                      \"process at once, for instance how many flows \""},{"line_number":234,"context_line":"                      \"will be sent in one single OVS OF flow request. \""},{"line_number":235,"context_line":"                      \"Reducing this number will help mitigate timeouts when \""},{"line_number":236,"context_line":"                      \"requesting objects with large data sets.\")),"},{"line_number":237,"context_line":"]"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"dhcp_opts \u003d ["}],"source_content_type":"text/x-python","patch_set":15,"id":"dcd581ef_217b2e2e","line":236,"range":{"start_line":230,"start_character":4,"end_line":236,"end_character":67},"in_reply_to":"7ef88876_a40f2069","updated":"2022-05-25 06:15:08.000000000","message":"My concern is that these 2 options are closely related and \"openflow_processed_per_port\" overrides this one. Having them defined in different places in code and more importantly in different config files/sections may be very misleading.","commit_id":"b758240d7561f01c1236310265fd694df636f265"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"0073e42e5faffcf9bd8f618e9ab9841d103583e2","unresolved":true,"context_lines":[{"line_number":227,"context_line":"                       \"egress packets will be taken care of in the final \""},{"line_number":228,"context_line":"                       \"egress tables direct output flows for unicast \""},{"line_number":229,"context_line":"                       \"traffic.\")),"},{"line_number":230,"context_line":"    cfg.IntOpt(\"agent_resources_processing_step\","},{"line_number":231,"context_line":"               default\u003d_constants.AGENT_RES_PROCESSING_STEP, min\u003d1,"},{"line_number":232,"context_line":"               help\u003d_(\"This value is the number of resources the agent will \""},{"line_number":233,"context_line":"                      \"process at once, for instance how many flows \""},{"line_number":234,"context_line":"                      \"will be sent in one single OVS OF flow request. \""},{"line_number":235,"context_line":"                      \"Reducing this number will help mitigate timeouts when \""},{"line_number":236,"context_line":"                      \"requesting objects with large data sets.\")),"},{"line_number":237,"context_line":"]"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"dhcp_opts \u003d ["}],"source_content_type":"text/x-python","patch_set":15,"id":"7ef88876_a40f2069","line":236,"range":{"start_line":230,"start_character":4,"end_line":236,"end_character":67},"in_reply_to":"d3cfa543_e1746464","updated":"2022-05-24 16:47:56.000000000","message":"\"conf/agent/ovs_conf.py\" has some common options for ovs agent and L3/dhcp/metadata agent [1] to handle port on ovsdb, yes, mostly for ovsdb related action only. This \"neutron/conf/plugins/ml2/drivers/ovs_conf.py\" are mainly for ovs-agent. So, I think that \"openflow_processed_per_port\" is in wrong place, because L3 agent will never try to \"install flows per port\".\n\nOn the other hand, this \"agent_resources_processing_step\" is trying to make the consistent with the name of constant \"AGENT_RES_PROCESSING_STEP\".\n\n[1] https://github.com/openstack/neutron/blob/master/neutron/opts.py#L209","commit_id":"b758240d7561f01c1236310265fd694df636f265"}],"releasenotes/notes/config-opt-for-ovs-agent-res-processing-step-8b4cba6e224b927d.yaml":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"744a4a19e77e8b30e8f1ca7e19bfcede0072e037","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"other:"},{"line_number":3,"context_line":"  - rpc_resources_processing_step - Number of resources for neutron"},{"line_number":4,"context_line":"    openvswitch agent to divide in one OpenFlow action. This option"},{"line_number":5,"context_line":"    will have influences on the neutron-openvswitch-agent flow related"},{"line_number":6,"context_line":"    action performance."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"13ec8c54_117ce2fb","line":3,"range":{"start_line":3,"start_character":4,"end_line":3,"end_character":33},"updated":"2021-09-28 11:07:00.000000000","message":"1) should be \"agent_resources_processing_step\"\n2) we should mention that this is new config option as section \"other\" does not imply this.","commit_id":"9653c18e335a43508e92cf63b07e436e40fa59a9"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"56e6bc3015893014f3122aac098011fa22cae44c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"other:"},{"line_number":3,"context_line":"  - rpc_resources_processing_step - Number of resources for neutron"},{"line_number":4,"context_line":"    openvswitch agent to divide in one OpenFlow action. This option"},{"line_number":5,"context_line":"    will have influences on the neutron-openvswitch-agent flow related"},{"line_number":6,"context_line":"    action performance."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"a67dd8fc_1c4dda20","line":3,"range":{"start_line":3,"start_character":4,"end_line":3,"end_character":33},"in_reply_to":"13ec8c54_117ce2fb","updated":"2021-09-29 04:35:41.000000000","message":"Done","commit_id":"9653c18e335a43508e92cf63b07e436e40fa59a9"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"5e9bb8643ff08b7e3ed3ac93b908da432ad0e6b4","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"other:"},{"line_number":3,"context_line":"  - New config option ``rpc_resources_processing_step`` was added - Number"},{"line_number":4,"context_line":"    of resources for neutron openvswitch agent to divide in one OpenFlow"},{"line_number":5,"context_line":"    action. This option will have influences on the neutron-openvswitch-agent"},{"line_number":6,"context_line":"    flow related action performance."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"f19fdbc7_82c7a501","line":3,"range":{"start_line":3,"start_character":24,"end_line":3,"end_character":53},"updated":"2021-09-29 07:09:42.000000000","message":"agent_resources_processing_step","commit_id":"226386bd6128b7569a74429084bf175b3aa5c9db"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"3020d7804a325a6c35af59cedc5f026d75924e13","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"other:"},{"line_number":3,"context_line":"  - New config option ``rpc_resources_processing_step`` was added - Number"},{"line_number":4,"context_line":"    of resources for neutron openvswitch agent to divide in one OpenFlow"},{"line_number":5,"context_line":"    action. This option will have influences on the neutron-openvswitch-agent"},{"line_number":6,"context_line":"    flow related action performance."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"d510894d_8db40f2f","line":3,"range":{"start_line":3,"start_character":24,"end_line":3,"end_character":53},"in_reply_to":"f19fdbc7_82c7a501","updated":"2021-10-14 08:34:33.000000000","message":"Done","commit_id":"226386bd6128b7569a74429084bf175b3aa5c9db"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"be47dd66e5fb9dfaef1224384107f8d1a92048f5","unresolved":true,"context_lines":[{"line_number":2,"context_line":"other:"},{"line_number":3,"context_line":"  - New config option ``agent_resources_processing_step`` was added - Number"},{"line_number":4,"context_line":"    of resources for neutron openvswitch agent to divide in one OpenFlow"},{"line_number":5,"context_line":"    action. This option will have influences on the neutron-openvswitch-agent"},{"line_number":6,"context_line":"    flow related action performance."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"da0b86bc_fe963c82","line":5,"range":{"start_line":5,"start_character":34,"end_line":5,"end_character":44},"updated":"2022-02-09 17:56:11.000000000","message":"nit: influence","commit_id":"77db3ad38f3ccd79a9e0ffd854b3854266561999"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"ab9acb17275a9abb7cff11b90617f6045ea8e39f","unresolved":false,"context_lines":[{"line_number":2,"context_line":"other:"},{"line_number":3,"context_line":"  - New config option ``agent_resources_processing_step`` was added - Number"},{"line_number":4,"context_line":"    of resources for neutron openvswitch agent to divide in one OpenFlow"},{"line_number":5,"context_line":"    action. This option will have influences on the neutron-openvswitch-agent"},{"line_number":6,"context_line":"    flow related action performance."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"975b3dac_4f288f81","line":5,"range":{"start_line":5,"start_character":34,"end_line":5,"end_character":44},"in_reply_to":"da0b86bc_fe963c82","updated":"2022-05-07 04:19:57.000000000","message":"Done","commit_id":"77db3ad38f3ccd79a9e0ffd854b3854266561999"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"73bb35e6168e1d6f97d6a2d129aed8b02898f3bb","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"other:"},{"line_number":3,"context_line":"  - New config option ``agent_resources_processing_step`` was added - Number"},{"line_number":4,"context_line":"    of resources for neutron openvswitch agent to divide in one OpenFlow"},{"line_number":5,"context_line":"    action. This option will have influences on the neutron-openvswitch-agent"},{"line_number":6,"context_line":"    flow related action performance."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"6ec18406_240adcee","line":3,"range":{"start_line":3,"start_character":62,"end_line":3,"end_character":76},"updated":"2022-03-31 03:06:06.000000000","message":"s/added, which defines the number","commit_id":"3d323d475403e829ab9917e91bae4b81ab53d3d6"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"ab9acb17275a9abb7cff11b90617f6045ea8e39f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"other:"},{"line_number":3,"context_line":"  - New config option ``agent_resources_processing_step`` was added - Number"},{"line_number":4,"context_line":"    of resources for neutron openvswitch agent to divide in one OpenFlow"},{"line_number":5,"context_line":"    action. This option will have influences on the neutron-openvswitch-agent"},{"line_number":6,"context_line":"    flow related action performance."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"6747f59a_6dfd0542","line":3,"range":{"start_line":3,"start_character":62,"end_line":3,"end_character":76},"in_reply_to":"6ec18406_240adcee","updated":"2022-05-07 04:19:57.000000000","message":"Done","commit_id":"3d323d475403e829ab9917e91bae4b81ab53d3d6"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"73bb35e6168e1d6f97d6a2d129aed8b02898f3bb","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"other:"},{"line_number":3,"context_line":"  - New config option ``agent_resources_processing_step`` was added - Number"},{"line_number":4,"context_line":"    of resources for neutron openvswitch agent to divide in one OpenFlow"},{"line_number":5,"context_line":"    action. This option will have influences on the neutron-openvswitch-agent"},{"line_number":6,"context_line":"    flow related action performance."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"1c99f280_b8ee56e2","line":4,"range":{"start_line":4,"start_character":17,"end_line":4,"end_character":56},"updated":"2022-03-31 03:06:06.000000000","message":"s/the neutron openvswitch agent will process","commit_id":"3d323d475403e829ab9917e91bae4b81ab53d3d6"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"ab9acb17275a9abb7cff11b90617f6045ea8e39f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"other:"},{"line_number":3,"context_line":"  - New config option ``agent_resources_processing_step`` was added - Number"},{"line_number":4,"context_line":"    of resources for neutron openvswitch agent to divide in one OpenFlow"},{"line_number":5,"context_line":"    action. This option will have influences on the neutron-openvswitch-agent"},{"line_number":6,"context_line":"    flow related action performance."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"24acad59_d4ff7a89","line":4,"range":{"start_line":4,"start_character":17,"end_line":4,"end_character":56},"in_reply_to":"1c99f280_b8ee56e2","updated":"2022-05-07 04:19:57.000000000","message":"Done","commit_id":"3d323d475403e829ab9917e91bae4b81ab53d3d6"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"73bb35e6168e1d6f97d6a2d129aed8b02898f3bb","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":10,"id":"fb6ba7f3_116247ae","line":7,"updated":"2022-03-31 03:06:06.000000000","message":"Would also be good to mention the file and [section] it can be found in.","commit_id":"3d323d475403e829ab9917e91bae4b81ab53d3d6"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"ab9acb17275a9abb7cff11b90617f6045ea8e39f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"c1b3cf41_320cb96f","line":7,"in_reply_to":"fb6ba7f3_116247ae","updated":"2022-05-07 04:19:57.000000000","message":"Done","commit_id":"3d323d475403e829ab9917e91bae4b81ab53d3d6"}]}
