)]}'
{"neutron/agent/l3/agent.py":[{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"23e23fe645369bde44a6ce732e3994ff361fcd3c","unresolved":false,"context_lines":[{"line_number":754,"context_line":"            router_ids \u003d self.plugin_rpc.get_router_ids(context)"},{"line_number":755,"context_line":"            # fetch routers by chunks to reduce the load on server and to"},{"line_number":756,"context_line":"            # start router processing earlier"},{"line_number":757,"context_line":"            for i in range(0, len(router_ids), self.sync_routers_chunk_size):"},{"line_number":758,"context_line":"                chunk \u003d router_ids[i:i + self.sync_routers_chunk_size]"},{"line_number":759,"context_line":"                routers \u003d self.plugin_rpc.get_routers(context, chunk)"},{"line_number":760,"context_line":"                LOG.debug(\u0027Processing :%r\u0027, routers)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bfb3d3c7_6d75ed63","side":"PARENT","line":757,"range":{"start_line":757,"start_character":12,"end_line":757,"end_character":77},"updated":"2019-05-24 13:26:58.000000000","message":"@Liu This is the line that becomes a problem. At L781 self.sync_routers_chunk_size becomes a float. The range function is unable to deal with floats.\n\nEX:\n\n\u003e\u003e\u003e range(0, 10, float(2))\nTraceback (most recent call last):\n  File \"\u003cstdin\u003e\", line 1, in \u003cmodule\u003e\nTypeError: range() integer step argument expected, got float.","commit_id":"b02940ebdc28cd840118d8148188900d64b57621"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"a0d3f92e540040ef607a97845e9be04789f3a466","unresolved":false,"context_lines":[{"line_number":754,"context_line":"            router_ids \u003d self.plugin_rpc.get_router_ids(context)"},{"line_number":755,"context_line":"            # fetch routers by chunks to reduce the load on server and to"},{"line_number":756,"context_line":"            # start router processing earlier"},{"line_number":757,"context_line":"            for i in range(0, len(router_ids), self.sync_routers_chunk_size):"},{"line_number":758,"context_line":"                chunk \u003d router_ids[i:i + self.sync_routers_chunk_size]"},{"line_number":759,"context_line":"                routers \u003d self.plugin_rpc.get_routers(context, chunk)"},{"line_number":760,"context_line":"                LOG.debug(\u0027Processing :%r\u0027, routers)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bfb3d3c7_22f7ff61","side":"PARENT","line":757,"range":{"start_line":757,"start_character":12,"end_line":757,"end_character":77},"in_reply_to":"bfb3d3c7_6d75ed63","updated":"2019-05-24 15:03:21.000000000","message":"Thanks, it is.","commit_id":"b02940ebdc28cd840118d8148188900d64b57621"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"4f5fb751dee1016740fa657a8a2b03cdff47653f","unresolved":false,"context_lines":[{"line_number":779,"context_line":"        except oslo_messaging.MessagingTimeout:"},{"line_number":780,"context_line":"            if self.sync_routers_chunk_size \u003e SYNC_ROUTERS_MIN_CHUNK_SIZE:"},{"line_number":781,"context_line":"                self.sync_routers_chunk_size \u003d max("},{"line_number":782,"context_line":"                    int(self.sync_routers_chunk_size / 2),"},{"line_number":783,"context_line":"                    SYNC_ROUTERS_MIN_CHUNK_SIZE)"},{"line_number":784,"context_line":"                LOG.error(\u0027Server failed to return info for routers in \u0027"},{"line_number":785,"context_line":"                          \u0027required time, decreasing chunk size to: %s\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"bfb3d3c7_861dc267","line":782,"range":{"start_line":782,"start_character":29,"end_line":782,"end_character":52},"updated":"2019-05-23 01:26:20.000000000","message":"This should always be exponential times to interger 2, so can you verify why here we get a odd number?","commit_id":"1fac1a2afac5feda1b8868eafa8072ff34249740"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"0f6146628f9b1506b41da4efc2a2a4d7584e5b53","unresolved":false,"context_lines":[{"line_number":779,"context_line":"        except oslo_messaging.MessagingTimeout:"},{"line_number":780,"context_line":"            if self.sync_routers_chunk_size \u003e SYNC_ROUTERS_MIN_CHUNK_SIZE:"},{"line_number":781,"context_line":"                self.sync_routers_chunk_size \u003d max("},{"line_number":782,"context_line":"                    int(self.sync_routers_chunk_size / 2),"},{"line_number":783,"context_line":"                    SYNC_ROUTERS_MIN_CHUNK_SIZE)"},{"line_number":784,"context_line":"                LOG.error(\u0027Server failed to return info for routers in \u0027"},{"line_number":785,"context_line":"                          \u0027required time, decreasing chunk size to: %s\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"bfb3d3c7_c959668e","line":782,"range":{"start_line":782,"start_character":29,"end_line":782,"end_character":52},"in_reply_to":"bfb3d3c7_624ad7ac","updated":"2019-05-24 20:03:25.000000000","message":"I think a follow-up patch is probably in order to track down other cases like this if they exist.","commit_id":"1fac1a2afac5feda1b8868eafa8072ff34249740"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"ee048c1c959d38491dc189007bfe4502b4552ab7","unresolved":false,"context_lines":[{"line_number":779,"context_line":"        except oslo_messaging.MessagingTimeout:"},{"line_number":780,"context_line":"            if self.sync_routers_chunk_size \u003e SYNC_ROUTERS_MIN_CHUNK_SIZE:"},{"line_number":781,"context_line":"                self.sync_routers_chunk_size \u003d max("},{"line_number":782,"context_line":"                    int(self.sync_routers_chunk_size / 2),"},{"line_number":783,"context_line":"                    SYNC_ROUTERS_MIN_CHUNK_SIZE)"},{"line_number":784,"context_line":"                LOG.error(\u0027Server failed to return info for routers in \u0027"},{"line_number":785,"context_line":"                          \u0027required time, decreasing chunk size to: %s\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"bfb3d3c7_b684b1b2","line":782,"range":{"start_line":782,"start_character":29,"end_line":782,"end_character":52},"in_reply_to":"bfb3d3c7_861dc267","updated":"2019-05-23 07:16:57.000000000","message":"LIU, it is always even number but it\u0027s how python3 works, look:\n\nin py 2.7:\n\n    \u003e\u003e\u003e type(4/2)\n    \u003ctype \u0027int\u0027\u003e\n\nbut in py 3.6:\n\n    \u003e\u003e\u003e type(4/2)\n    \u003cclass \u0027float\u0027\u003e","commit_id":"1fac1a2afac5feda1b8868eafa8072ff34249740"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"a0d3f92e540040ef607a97845e9be04789f3a466","unresolved":false,"context_lines":[{"line_number":779,"context_line":"        except oslo_messaging.MessagingTimeout:"},{"line_number":780,"context_line":"            if self.sync_routers_chunk_size \u003e SYNC_ROUTERS_MIN_CHUNK_SIZE:"},{"line_number":781,"context_line":"                self.sync_routers_chunk_size \u003d max("},{"line_number":782,"context_line":"                    int(self.sync_routers_chunk_size / 2),"},{"line_number":783,"context_line":"                    SYNC_ROUTERS_MIN_CHUNK_SIZE)"},{"line_number":784,"context_line":"                LOG.error(\u0027Server failed to return info for routers in \u0027"},{"line_number":785,"context_line":"                          \u0027required time, decreasing chunk size to: %s\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"bfb3d3c7_624ad7ac","line":782,"range":{"start_line":782,"start_character":29,"end_line":782,"end_character":52},"in_reply_to":"bfb3d3c7_b684b1b2","updated":"2019-05-24 15:03:21.000000000","message":"So \u0027//\u0027 integer division can work in both version, how about that?\n\nAnd can we search and fix such thing once for all?","commit_id":"1fac1a2afac5feda1b8868eafa8072ff34249740"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"4f5fb751dee1016740fa657a8a2b03cdff47653f","unresolved":false,"context_lines":[{"line_number":801,"context_line":"        LOG.debug(\"periodic_sync_routers_task successfully completed\")"},{"line_number":802,"context_line":"        # adjust chunk size after successful sync"},{"line_number":803,"context_line":"        if self.sync_routers_chunk_size \u003c SYNC_ROUTERS_MAX_CHUNK_SIZE:"},{"line_number":804,"context_line":"            self.sync_routers_chunk_size \u003d min("},{"line_number":805,"context_line":"                self.sync_routers_chunk_size + SYNC_ROUTERS_MIN_CHUNK_SIZE,"},{"line_number":806,"context_line":"                SYNC_ROUTERS_MAX_CHUNK_SIZE)"},{"line_number":807,"context_line":""},{"line_number":808,"context_line":"        # Delete routers that have disappeared since the last sync"},{"line_number":809,"context_line":"        for router_id in prev_router_ids - curr_router_ids:"}],"source_content_type":"text/x-python","patch_set":1,"id":"bfb3d3c7_46290a88","line":806,"range":{"start_line":804,"start_character":12,"end_line":806,"end_character":44},"updated":"2019-05-23 01:26:20.000000000","message":"Maybe this is the root cause of this issue. But I still not sure how we can get a odd value which is larger than SYNC_ROUTERS_MIN_CHUNK_SIZE(32)","commit_id":"1fac1a2afac5feda1b8868eafa8072ff34249740"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"c964a746ae40e898b2da831112e6b4966b3bd250","unresolved":false,"context_lines":[{"line_number":861,"context_line":"        except oslo_messaging.MessagingTimeout:"},{"line_number":862,"context_line":"            if self.sync_routers_chunk_size \u003e SYNC_ROUTERS_MIN_CHUNK_SIZE:"},{"line_number":863,"context_line":"                self.sync_routers_chunk_size \u003d max("},{"line_number":864,"context_line":"                    self.sync_routers_chunk_size // 2,"},{"line_number":865,"context_line":"                    SYNC_ROUTERS_MIN_CHUNK_SIZE)"},{"line_number":866,"context_line":"                LOG.error(\u0027Server failed to return info for routers in \u0027"},{"line_number":867,"context_line":"                          \u0027required time, decreasing chunk size to: %s\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_04f0b9fc","line":864,"updated":"2019-07-31 14:34:49.000000000","message":"I wonder how this wasn\u0027t visible in any, even unit test. Maybe it\u0027s worth to add some test to cover this part of code?","commit_id":"b197066d829df220edc829ed1d632ba50e533810"}]}
