)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"175211c45312c7c1f47d4092e372e1a357a9b2a7","unresolved":false,"context_lines":[{"line_number":10,"context_line":"dvr router, neutron tries to create floating IP agent gateway port."},{"line_number":11,"context_line":"There should be always max 1 such port per network per L3 agent but"},{"line_number":12,"context_line":"sometimes when there are 2 requests to set external gateway for 2"},{"line_number":13,"context_line":"different routers executed almost in same time it may happend that"},{"line_number":14,"context_line":"there will be 2 such ports created."},{"line_number":15,"context_line":"That will cause error with configuration of one of routers on L3 agent"},{"line_number":16,"context_line":"and this will cause e.g. problems with access from VMs to metadata"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7faddb67_859c600e","line":13,"range":{"start_line":13,"start_character":54,"end_line":13,"end_character":61},"updated":"2019-08-05 19:18:33.000000000","message":"nit: s/happen","commit_id":"7b81c1bc67d2d85e03b4c96a8c1c558a2f909836"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"9da1f24f5c3ad9ff9bfecb6f06c031e9b05d0729","unresolved":false,"context_lines":[{"line_number":22,"context_line":"Such solution isn\u0027t fully solving exising race condition as if 2"},{"line_number":23,"context_line":"requests will be processed by api workers running on 2 different nodes"},{"line_number":24,"context_line":"than this race can still happend."},{"line_number":25,"context_line":"But this should mitigate the issue a bit and solve problem in U/S gates"},{"line_number":26,"context_line":"at least."},{"line_number":27,"context_line":"For proper fix we should probably add some constraint on database level"},{"line_number":28,"context_line":"to prevent creation of 2 such ports for one network and one host but"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7faddb67_73e7a0e4","line":25,"range":{"start_line":25,"start_character":66,"end_line":25,"end_character":71},"updated":"2019-08-06 14:35:21.000000000","message":"Maybe add a tag [CI] for the commit title.","commit_id":"7b81c1bc67d2d85e03b4c96a8c1c558a2f909836"}],"neutron/db/l3_dvr_db.py":[{"author":{"_account_id":30103,"name":"xiaosa","email":"xiaosa@awcloud.com","username":"xiaosa"},"change_message_id":"6e964ff1df1f5460db284d0553bba91b31084504","unresolved":false,"context_lines":[{"line_number":996,"context_line":"            return"},{"line_number":997,"context_line":"        if l3_agent_db:"},{"line_number":998,"context_line":"            LOG.debug(\"Agent ID exists: %s\", l3_agent_db[\u0027id\u0027])"},{"line_number":999,"context_line":"            agent_port \u003d self._get_agent_gw_ports_exist_for_network("},{"line_number":1000,"context_line":"                context, network_id, host, l3_agent_db[\u0027id\u0027])"},{"line_number":1001,"context_line":"            if not agent_port:"},{"line_number":1002,"context_line":"                LOG.info(\"Floating IP Agent Gateway port for network %s \""}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_fe01736b","line":999,"range":{"start_line":999,"start_character":30,"end_line":999,"end_character":67},"updated":"2019-07-31 09:20:58.000000000","message":"Is it better to lock from here？","commit_id":"077f02239f99c51482f11667bea86d6d63c35654"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"d4abfb0b4aa469e3b2572eefe526d272f285589f","unresolved":false,"context_lines":[{"line_number":996,"context_line":"            return"},{"line_number":997,"context_line":"        if l3_agent_db:"},{"line_number":998,"context_line":"            LOG.debug(\"Agent ID exists: %s\", l3_agent_db[\u0027id\u0027])"},{"line_number":999,"context_line":"            agent_port \u003d self._get_agent_gw_ports_exist_for_network("},{"line_number":1000,"context_line":"                context, network_id, host, l3_agent_db[\u0027id\u0027])"},{"line_number":1001,"context_line":"            if not agent_port:"},{"line_number":1002,"context_line":"                LOG.info(\"Floating IP Agent Gateway port for network %s \""}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_95c12757","line":999,"range":{"start_line":999,"start_character":30,"end_line":999,"end_character":67},"in_reply_to":"7faddb67_fe01736b","updated":"2019-08-01 11:15:37.000000000","message":"You\u0027re right, It may optimize things a bit. Done","commit_id":"077f02239f99c51482f11667bea86d6d63c35654"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"175211c45312c7c1f47d4092e372e1a357a9b2a7","unresolved":false,"context_lines":[{"line_number":981,"context_line":"        if l3_agent_mode \u003d\u003d const.L3_AGENT_MODE_DVR_NO_EXTERNAL:"},{"line_number":982,"context_line":"            return"},{"line_number":983,"context_line":"        if not l3_agent_db:"},{"line_number":984,"context_line":"            return"},{"line_number":985,"context_line":"        lock_name \u003d \u0027fip-gw-lock-\u0027 + network_id + \u0027-\u0027 + host"},{"line_number":986,"context_line":"        with lockutils.lock(lock_name, external\u003dTrue):"},{"line_number":987,"context_line":"            return self._create_fip_agent_gw_port_if_not_exists("}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_a55cfc7c","line":984,"updated":"2019-08-05 19:18:33.000000000","message":"nit: i guess this check can be right above L980 now to avoid _get_agent_mode() call","commit_id":"7b81c1bc67d2d85e03b4c96a8c1c558a2f909836"}]}
