)]}'
{"neutron/agent/rpc.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"b01eff792eaec7646330adbc04d877f93d2c69a6","unresolved":true,"context_lines":[{"line_number":174,"context_line":"        return cctxt.call(context, \u0027update_device_up\u0027, device\u003ddevice,"},{"line_number":175,"context_line":"                          agent_id\u003dagent_id, host\u003dhost)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def async_call_update_device_list(self, context, devices_up, devices_down,"},{"line_number":178,"context_line":"                                      agent_id, host, refresh_tunnels\u003dFalse):"},{"line_number":179,"context_line":"        cctxt \u003d self.client.prepare(version\u003d\u00271.9\u0027)"},{"line_number":180,"context_line":"        return cctxt.call(context, \u0027update_device_list\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1220ae05_eda686cc","line":177,"range":{"start_line":177,"start_character":8,"end_line":177,"end_character":14},"updated":"2021-08-31 13:24:14.000000000","message":"currently it\u0027s not async in fact, what if place lines 196-210 here?","commit_id":"e8439ad24a19aecd3fa54096ae3de4e396db55f4"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"104d57c997576c2eead66d16b385ab7eca760498","unresolved":true,"context_lines":[{"line_number":174,"context_line":"        return cctxt.call(context, \u0027update_device_up\u0027, device\u003ddevice,"},{"line_number":175,"context_line":"                          agent_id\u003dagent_id, host\u003dhost)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def async_call_update_device_list(self, context, devices_up, devices_down,"},{"line_number":178,"context_line":"                                      agent_id, host, refresh_tunnels\u003dFalse):"},{"line_number":179,"context_line":"        cctxt \u003d self.client.prepare(version\u003d\u00271.9\u0027)"},{"line_number":180,"context_line":"        return cctxt.call(context, \u0027update_device_list\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"2e26a908_7ae6447a","line":177,"range":{"start_line":177,"start_character":8,"end_line":177,"end_character":14},"in_reply_to":"1220ae05_eda686cc","updated":"2021-09-01 00:57:22.000000000","message":"I will remove the \"async_\" prefix, make this to \"def _call_update_device_list\".","commit_id":"e8439ad24a19aecd3fa54096ae3de4e396db55f4"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"f1d1a366cb8c74748ef3e39a3bd8bed09dd82397","unresolved":false,"context_lines":[{"line_number":174,"context_line":"        return cctxt.call(context, \u0027update_device_up\u0027, device\u003ddevice,"},{"line_number":175,"context_line":"                          agent_id\u003dagent_id, host\u003dhost)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def async_call_update_device_list(self, context, devices_up, devices_down,"},{"line_number":178,"context_line":"                                      agent_id, host, refresh_tunnels\u003dFalse):"},{"line_number":179,"context_line":"        cctxt \u003d self.client.prepare(version\u003d\u00271.9\u0027)"},{"line_number":180,"context_line":"        return cctxt.call(context, \u0027update_device_list\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"575b6ffb_2fbee463","line":177,"range":{"start_line":177,"start_character":8,"end_line":177,"end_character":14},"in_reply_to":"2e26a908_7ae6447a","updated":"2021-09-01 04:18:02.000000000","message":"Done","commit_id":"e8439ad24a19aecd3fa54096ae3de4e396db55f4"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"c08abffabd2140c3ae7f21dffbe612c77c517e1d","unresolved":true,"context_lines":[{"line_number":195,"context_line":"        devices_down \u003d list(devices_down)"},{"line_number":196,"context_line":"        call_list \u003d []"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"        pool \u003d eventlet.GreenPool(size\u003d8)"},{"line_number":199,"context_line":"        LOG.debug(\"Start async call for update_device_list.\")"},{"line_number":200,"context_line":"        for i in range(0, max(len(devices_up), len(devices_down)), step):"},{"line_number":201,"context_line":"            # Divide-and-conquer RPC timeout"}],"source_content_type":"text/x-python","patch_set":2,"id":"d2cd3d39_f008ac2c","line":198,"range":{"start_line":198,"start_character":34,"end_line":198,"end_character":40},"updated":"2021-09-08 07:10:36.000000000","message":"Why 8? Will 16 or 4 do better? My concern is that this number is specific for each environment with specific number of neutron servers/RPC workers, number of nodes/agents and number of ports. I\u0027m afraid not all neutron servers are ready for 8x more calls. Should we catch RPC timeout error and adjust pool size?","commit_id":"804b5c7a612af4376051045163eb720bf4327188"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"00464d84dab239a3271b9e3f8629d3558caae5e3","unresolved":true,"context_lines":[{"line_number":195,"context_line":"        devices_down \u003d list(devices_down)"},{"line_number":196,"context_line":"        call_list \u003d []"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"        pool \u003d eventlet.GreenPool(size\u003d8)"},{"line_number":199,"context_line":"        LOG.debug(\"Start async call for update_device_list.\")"},{"line_number":200,"context_line":"        for i in range(0, max(len(devices_up), len(devices_down)), step):"},{"line_number":201,"context_line":"            # Divide-and-conquer RPC timeout"}],"source_content_type":"text/x-python","patch_set":2,"id":"05a2e591_5789180d","line":198,"range":{"start_line":198,"start_character":34,"end_line":198,"end_character":40},"in_reply_to":"496e4b4b_087228b1","updated":"2021-09-13 01:13:07.000000000","message":"@Oleg, no particular reason， but the value is based on our local practical production environment. A typical scale is 3 neutron-server nodes with 64 * 3 RPC workers. And we restart 40 ovs-agents on 40 nodes one time during neutron upgrading. 8 works fine and meets the expected restart/recovery time.\n\n@Lajos\nrpc_worker number is server side config option.","commit_id":"804b5c7a612af4376051045163eb720bf4327188"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"2624bf369968c36946090e61e9b2609ebf8c8c81","unresolved":true,"context_lines":[{"line_number":195,"context_line":"        devices_down \u003d list(devices_down)"},{"line_number":196,"context_line":"        call_list \u003d []"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"        pool \u003d eventlet.GreenPool(size\u003d8)"},{"line_number":199,"context_line":"        LOG.debug(\"Start async call for update_device_list.\")"},{"line_number":200,"context_line":"        for i in range(0, max(len(devices_up), len(devices_down)), step):"},{"line_number":201,"context_line":"            # Divide-and-conquer RPC timeout"}],"source_content_type":"text/x-python","patch_set":2,"id":"496e4b4b_087228b1","line":198,"range":{"start_line":198,"start_character":34,"end_line":198,"end_character":40},"in_reply_to":"d2cd3d39_f008ac2c","updated":"2021-09-09 12:55:46.000000000","message":"Isn\u0027t that possible to make it equal with the rpc_worker number?","commit_id":"804b5c7a612af4376051045163eb720bf4327188"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"0ffe2c4db0e1094674a6fb43c279004a35617871","unresolved":true,"context_lines":[{"line_number":196,"context_line":"        call_list \u003d []"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"        pool \u003d eventlet.GreenPool(size\u003d8)"},{"line_number":199,"context_line":"        LOG.debug(\"Start async call for update_device_list.\")"},{"line_number":200,"context_line":"        for i in range(0, max(len(devices_up), len(devices_down)), step):"},{"line_number":201,"context_line":"            # Divide-and-conquer RPC timeout"},{"line_number":202,"context_line":"            call \u003d pool.spawn(self._call_update_device_list,"}],"source_content_type":"text/x-python","patch_set":2,"id":"6b9e3fbc_0caf30a5","line":199,"updated":"2021-09-07 12:01:46.000000000","message":"Isn\u0027t it a step back to what we have before https://review.opendev.org/c/openstack/neutron/+/638646 ?\nI mean agent call device_list in step size chunks, but the calls will arrive simultaneously to neutron-server, so timeout can happen again","commit_id":"804b5c7a612af4376051045163eb720bf4327188"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"2624bf369968c36946090e61e9b2609ebf8c8c81","unresolved":true,"context_lines":[{"line_number":196,"context_line":"        call_list \u003d []"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"        pool \u003d eventlet.GreenPool(size\u003d8)"},{"line_number":199,"context_line":"        LOG.debug(\"Start async call for update_device_list.\")"},{"line_number":200,"context_line":"        for i in range(0, max(len(devices_up), len(devices_down)), step):"},{"line_number":201,"context_line":"            # Divide-and-conquer RPC timeout"},{"line_number":202,"context_line":"            call \u003d pool.spawn(self._call_update_device_list,"}],"source_content_type":"text/x-python","patch_set":2,"id":"11e8a06a_fc3bf947","line":199,"in_reply_to":"06fd10a2_7d24e4a5","updated":"2021-09-09 12:55:46.000000000","message":"thanks, that\u0027s make sense","commit_id":"804b5c7a612af4376051045163eb720bf4327188"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"a005489d80a4d841eeca2049fab55f39135c264e","unresolved":true,"context_lines":[{"line_number":196,"context_line":"        call_list \u003d []"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"        pool \u003d eventlet.GreenPool(size\u003d8)"},{"line_number":199,"context_line":"        LOG.debug(\"Start async call for update_device_list.\")"},{"line_number":200,"context_line":"        for i in range(0, max(len(devices_up), len(devices_down)), step):"},{"line_number":201,"context_line":"            # Divide-and-conquer RPC timeout"},{"line_number":202,"context_line":"            call \u003d pool.spawn(self._call_update_device_list,"}],"source_content_type":"text/x-python","patch_set":2,"id":"8dc6d55e_1cbed830","line":199,"in_reply_to":"6b9e3fbc_0caf30a5","updated":"2021-09-08 02:37:15.000000000","message":"The original timeout of 638646 is because the port list is too large. Neutron-server will use to long time to do related processing works. So timeout happens. And one RPC call is go to one rpc-worker. And remember, in real environment there is no one rpc-worker. So, muiltple calls are go to multiple workers. Each RPC worker is still doing small set of works.","commit_id":"804b5c7a612af4376051045163eb720bf4327188"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"9715383a7a55cdb56ba21d63d313ef4a642eb429","unresolved":true,"context_lines":[{"line_number":196,"context_line":"        call_list \u003d []"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"        pool \u003d eventlet.GreenPool(size\u003d8)"},{"line_number":199,"context_line":"        LOG.debug(\"Start async call for update_device_list.\")"},{"line_number":200,"context_line":"        for i in range(0, max(len(devices_up), len(devices_down)), step):"},{"line_number":201,"context_line":"            # Divide-and-conquer RPC timeout"},{"line_number":202,"context_line":"            call \u003d pool.spawn(self._call_update_device_list,"}],"source_content_type":"text/x-python","patch_set":2,"id":"06fd10a2_7d24e4a5","line":199,"in_reply_to":"7ed9ef5f_f680424b","updated":"2021-09-08 07:36:21.000000000","message":"The difference is that single 100k call is handled by a single RPC worker - and this may lead to RPC timeout. 12.5K calls are handled by several RPC workers - better chances to avoid timeouts (if have enough RPC workers ready to process calls!)","commit_id":"804b5c7a612af4376051045163eb720bf4327188"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9c4d66e2fb22433fd8c659bccc6323ca2ab14c06","unresolved":true,"context_lines":[{"line_number":196,"context_line":"        call_list \u003d []"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"        pool \u003d eventlet.GreenPool(size\u003d8)"},{"line_number":199,"context_line":"        LOG.debug(\"Start async call for update_device_list.\")"},{"line_number":200,"context_line":"        for i in range(0, max(len(devices_up), len(devices_down)), step):"},{"line_number":201,"context_line":"            # Divide-and-conquer RPC timeout"},{"line_number":202,"context_line":"            call \u003d pool.spawn(self._call_update_device_list,"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ed9ef5f_f680424b","line":199,"in_reply_to":"8dc6d55e_1cbed830","updated":"2021-09-08 07:25:42.000000000","message":"In any case, Lajos\u0027 point is valid. Why this patch we are storming the server with multiple RPC calls that could potentially overload it. So instead of having a single call with 100K elements, you\u0027ll have 8 calls with 12,5K elements. In any case, the server will take the same time to reply.","commit_id":"804b5c7a612af4376051045163eb720bf4327188"}]}
