)]}'
{"neutron/plugins/ml2/plugin.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"e3fa6d1abdb6c58197799396de55ac0d0fbdba82","unresolved":false,"context_lines":[{"line_number":374,"context_line":"            port.get(\u0027device_owner\u0027) \u003d\u003d \u0027\u0027 and"},{"line_number":375,"context_line":"            orig_port[\u0027device_id\u0027] !\u003d \u0027\u0027)"},{"line_number":376,"context_line":"        if (binding.vnic_type \u003d\u003d portbindings.VNIC_DIRECT_PHYSICAL and"},{"line_number":377,"context_line":"                unbinding):"},{"line_number":378,"context_line":"            port[\u0027mac_address\u0027] \u003d self._generate_mac()"},{"line_number":379,"context_line":"            return True"},{"line_number":380,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"bfb3d3c7_2e692820","line":377,"updated":"2019-05-24 18:57:17.000000000","message":"nit: don\u0027t know why you didn\u0027t just inline the above checks here, as we\u0027ve now checked four things instead of possibly just checking one, eg direct physical.","commit_id":"a247b47148885f84ca4f7c916fb8e559e8f49045"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"4a1f3255d312baefa313fec186e576b6813ac1dd","unresolved":false,"context_lines":[{"line_number":374,"context_line":"            port.get(\u0027device_owner\u0027) \u003d\u003d \u0027\u0027 and"},{"line_number":375,"context_line":"            orig_port[\u0027device_id\u0027] !\u003d \u0027\u0027)"},{"line_number":376,"context_line":"        if (binding.vnic_type \u003d\u003d portbindings.VNIC_DIRECT_PHYSICAL and"},{"line_number":377,"context_line":"                unbinding):"},{"line_number":378,"context_line":"            port[\u0027mac_address\u0027] \u003d self._generate_mac()"},{"line_number":379,"context_line":"            return True"},{"line_number":380,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"bfb3d3c7_bb29c6e6","line":377,"in_reply_to":"bfb3d3c7_2e692820","updated":"2019-05-27 12:21:50.000000000","message":"makes sense, I\u0027ll inline them, thanks","commit_id":"a247b47148885f84ca4f7c916fb8e559e8f49045"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"3a80b16216606e4ba90afb173450e45bc999162e","unresolved":false,"context_lines":[{"line_number":1641,"context_line":"                raise exc.PortNotFound(port_id\u003did)"},{"line_number":1642,"context_line":"            mac_address_updated \u003d self._check_mac_update_allowed("},{"line_number":1643,"context_line":"                port_db, attrs, binding)"},{"line_number":1644,"context_line":"            mac_address_updated |\u003d self._reset_mac_if_required("},{"line_number":1645,"context_line":"                port_db, attrs, binding)"},{"line_number":1646,"context_line":"            need_port_update_notify |\u003d mac_address_updated"},{"line_number":1647,"context_line":"            original_port \u003d self._make_port_dict(port_db)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfb3d3c7_5e90ae43","line":1644,"range":{"start_line":1644,"start_character":40,"end_line":1644,"end_character":62},"updated":"2019-05-28 09:23:02.000000000","message":"naming comment / nit: \n* I would name this method something to represent that this check is for DIRECT_PHYSICAL ports, or\n* add here the condition that check if direct_physical, like this:\nif binding.vnic_type \u003d\u003d portbindings.VNIC_DIRECT_PHYSICAL:\n    mac_address_updated |\u003d self._reset_mac_if_required(..)\nand remove that check from the method.\n\nI think that would make reading simpler.","commit_id":"32b515710997c91d139ea32c6b53008e5c5e0101"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"240efabd207bcbac97b99b939c440c64bc469437","unresolved":false,"context_lines":[{"line_number":1641,"context_line":"                raise exc.PortNotFound(port_id\u003did)"},{"line_number":1642,"context_line":"            mac_address_updated \u003d self._check_mac_update_allowed("},{"line_number":1643,"context_line":"                port_db, attrs, binding)"},{"line_number":1644,"context_line":"            mac_address_updated |\u003d self._reset_mac_if_required("},{"line_number":1645,"context_line":"                port_db, attrs, binding)"},{"line_number":1646,"context_line":"            need_port_update_notify |\u003d mac_address_updated"},{"line_number":1647,"context_line":"            original_port \u003d self._make_port_dict(port_db)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fb8cfa7_3c0a3b26","line":1644,"range":{"start_line":1644,"start_character":40,"end_line":1644,"end_character":62},"in_reply_to":"9fb8cfa7_dcd99f22","updated":"2019-06-03 08:49:41.000000000","message":"thanks","commit_id":"32b515710997c91d139ea32c6b53008e5c5e0101"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"321d1361d4343335fc570f13d0ffed57e99bd30b","unresolved":false,"context_lines":[{"line_number":1641,"context_line":"                raise exc.PortNotFound(port_id\u003did)"},{"line_number":1642,"context_line":"            mac_address_updated \u003d self._check_mac_update_allowed("},{"line_number":1643,"context_line":"                port_db, attrs, binding)"},{"line_number":1644,"context_line":"            mac_address_updated |\u003d self._reset_mac_if_required("},{"line_number":1645,"context_line":"                port_db, attrs, binding)"},{"line_number":1646,"context_line":"            need_port_update_notify |\u003d mac_address_updated"},{"line_number":1647,"context_line":"            original_port \u003d self._make_port_dict(port_db)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfb3d3c7_f17bd324","line":1644,"range":{"start_line":1644,"start_character":40,"end_line":1644,"end_character":62},"in_reply_to":"bfb3d3c7_5e90ae43","updated":"2019-05-28 10:03:25.000000000","message":"I agree that this second proposal from Lajos looks more readable. But this is only small nit :)","commit_id":"32b515710997c91d139ea32c6b53008e5c5e0101"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"7f3f06455d788edb8fd294b8af497781e8c7b945","unresolved":false,"context_lines":[{"line_number":1641,"context_line":"                raise exc.PortNotFound(port_id\u003did)"},{"line_number":1642,"context_line":"            mac_address_updated \u003d self._check_mac_update_allowed("},{"line_number":1643,"context_line":"                port_db, attrs, binding)"},{"line_number":1644,"context_line":"            mac_address_updated |\u003d self._reset_mac_if_required("},{"line_number":1645,"context_line":"                port_db, attrs, binding)"},{"line_number":1646,"context_line":"            need_port_update_notify |\u003d mac_address_updated"},{"line_number":1647,"context_line":"            original_port \u003d self._make_port_dict(port_db)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fb8cfa7_dcd99f22","line":1644,"range":{"start_line":1644,"start_character":40,"end_line":1644,"end_character":62},"in_reply_to":"bfb3d3c7_5e90ae43","updated":"2019-06-03 08:31:09.000000000","message":"I\u0027d not separate checks for direct_physical and unbinding because no other port needs to reset mac on unbinding. I\u0027ll rename the method.","commit_id":"32b515710997c91d139ea32c6b53008e5c5e0101"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a42d721e2dab7a579b2537576b30743efecc6376","unresolved":false,"context_lines":[{"line_number":373,"context_line":"        if (binding.vnic_type \u003d\u003d portbindings.VNIC_DIRECT_PHYSICAL and"},{"line_number":374,"context_line":"                port.get(\u0027device_id\u0027) \u003d\u003d \u0027\u0027 and"},{"line_number":375,"context_line":"                port.get(\u0027device_owner\u0027) \u003d\u003d \u0027\u0027 and"},{"line_number":376,"context_line":"                orig_port[\u0027device_id\u0027] !\u003d \u0027\u0027):"},{"line_number":377,"context_line":"            port[\u0027mac_address\u0027] \u003d self._generate_macs()[0]"},{"line_number":378,"context_line":"            return True"},{"line_number":379,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_92521e67","line":376,"updated":"2019-06-04 05:25:27.000000000","message":"question: Don\u0027t we need to check device_owner? you check device_id and device_ownerr in a request body, but device_ownerr in orig_port is not checked.\nI wonder what is the actual definition of \u0027unbinding\u0027....","commit_id":"540dd02beae3917269ebae915cd83ed6765fe1c3"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"56c653816ea1bb99b324bb544c93e82aa8371c52","unresolved":false,"context_lines":[{"line_number":373,"context_line":"        if (binding.vnic_type \u003d\u003d portbindings.VNIC_DIRECT_PHYSICAL and"},{"line_number":374,"context_line":"                port.get(\u0027device_id\u0027) \u003d\u003d \u0027\u0027 and"},{"line_number":375,"context_line":"                port.get(\u0027device_owner\u0027) \u003d\u003d \u0027\u0027 and"},{"line_number":376,"context_line":"                orig_port[\u0027device_id\u0027] !\u003d \u0027\u0027):"},{"line_number":377,"context_line":"            port[\u0027mac_address\u0027] \u003d self._generate_macs()[0]"},{"line_number":378,"context_line":"            return True"},{"line_number":379,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_fd624b16","line":376,"in_reply_to":"9fb8cfa7_92521e67","updated":"2019-06-04 06:50:53.000000000","message":"Unbinding in this context is clearing device_id and device_owner, I added check for non-empty device_id of orig port just to exclude cases of unbinding already unbound port (e.g. manual unbinding from CLI).","commit_id":"540dd02beae3917269ebae915cd83ed6765fe1c3"}],"neutron/tests/unit/plugins/ml2/test_plugin.py":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"3a80b16216606e4ba90afb173450e45bc999162e","unresolved":false,"context_lines":[{"line_number":1791,"context_line":"            self._test_check_mac_update_allowed(portbindings.VIF_TYPE_OVS)"},{"line_number":1792,"context_line":""},{"line_number":1793,"context_line":"    def test_reset_mac_if_required(self):"},{"line_number":1794,"context_line":"        plugin \u003d directory.get_plugin()"},{"line_number":1795,"context_line":"        port \u003d {\u0027device_id\u0027: \u0027123\u0027, \u0027device_owner\u0027: \u0027compute:nova\u0027}"},{"line_number":1796,"context_line":"        new_attrs \u003d {\u0027device_id\u0027: \u0027\u0027, \u0027device_owner\u0027: \u0027\u0027}"},{"line_number":1797,"context_line":"        binding \u003d mock.Mock()"},{"line_number":1798,"context_line":"        binding.vnic_type \u003d portbindings.VNIC_DIRECT_PHYSICAL"},{"line_number":1799,"context_line":"        new_mac \u003d plugin._reset_mac_if_required(port, new_attrs, binding)"},{"line_number":1800,"context_line":"        self.assertTrue(new_mac)"},{"line_number":1801,"context_line":"        self.assertIsNotNone(new_attrs.get(\u0027mac_address\u0027))"},{"line_number":1802,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bfb3d3c7_1e0b167d","line":1799,"range":{"start_line":1794,"start_character":8,"end_line":1799,"end_character":73},"updated":"2019-05-28 09:23:02.000000000","message":"these lines are nearly the same for all 3 tests, could you please add a new helper method for them (like for mac_update_allowed \u003d\u003e _test_check_mac_update_allowed)","commit_id":"32b515710997c91d139ea32c6b53008e5c5e0101"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"321d1361d4343335fc570f13d0ffed57e99bd30b","unresolved":false,"context_lines":[{"line_number":1791,"context_line":"            self._test_check_mac_update_allowed(portbindings.VIF_TYPE_OVS)"},{"line_number":1792,"context_line":""},{"line_number":1793,"context_line":"    def test_reset_mac_if_required(self):"},{"line_number":1794,"context_line":"        plugin \u003d directory.get_plugin()"},{"line_number":1795,"context_line":"        port \u003d {\u0027device_id\u0027: \u0027123\u0027, \u0027device_owner\u0027: \u0027compute:nova\u0027}"},{"line_number":1796,"context_line":"        new_attrs \u003d {\u0027device_id\u0027: \u0027\u0027, \u0027device_owner\u0027: \u0027\u0027}"},{"line_number":1797,"context_line":"        binding \u003d mock.Mock()"},{"line_number":1798,"context_line":"        binding.vnic_type \u003d portbindings.VNIC_DIRECT_PHYSICAL"},{"line_number":1799,"context_line":"        new_mac \u003d plugin._reset_mac_if_required(port, new_attrs, binding)"},{"line_number":1800,"context_line":"        self.assertTrue(new_mac)"},{"line_number":1801,"context_line":"        self.assertIsNotNone(new_attrs.get(\u0027mac_address\u0027))"},{"line_number":1802,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bfb3d3c7_51909f43","line":1799,"range":{"start_line":1794,"start_character":8,"end_line":1799,"end_character":73},"in_reply_to":"bfb3d3c7_1e0b167d","updated":"2019-05-28 10:03:25.000000000","message":"+1","commit_id":"32b515710997c91d139ea32c6b53008e5c5e0101"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"7f3f06455d788edb8fd294b8af497781e8c7b945","unresolved":false,"context_lines":[{"line_number":1791,"context_line":"            self._test_check_mac_update_allowed(portbindings.VIF_TYPE_OVS)"},{"line_number":1792,"context_line":""},{"line_number":1793,"context_line":"    def test_reset_mac_if_required(self):"},{"line_number":1794,"context_line":"        plugin \u003d directory.get_plugin()"},{"line_number":1795,"context_line":"        port \u003d {\u0027device_id\u0027: \u0027123\u0027, \u0027device_owner\u0027: \u0027compute:nova\u0027}"},{"line_number":1796,"context_line":"        new_attrs \u003d {\u0027device_id\u0027: \u0027\u0027, \u0027device_owner\u0027: \u0027\u0027}"},{"line_number":1797,"context_line":"        binding \u003d mock.Mock()"},{"line_number":1798,"context_line":"        binding.vnic_type \u003d portbindings.VNIC_DIRECT_PHYSICAL"},{"line_number":1799,"context_line":"        new_mac \u003d plugin._reset_mac_if_required(port, new_attrs, binding)"},{"line_number":1800,"context_line":"        self.assertTrue(new_mac)"},{"line_number":1801,"context_line":"        self.assertIsNotNone(new_attrs.get(\u0027mac_address\u0027))"},{"line_number":1802,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9fb8cfa7_9c05677d","line":1799,"range":{"start_line":1794,"start_character":8,"end_line":1799,"end_character":73},"in_reply_to":"bfb3d3c7_51909f43","updated":"2019-06-03 08:31:09.000000000","message":"Done","commit_id":"32b515710997c91d139ea32c6b53008e5c5e0101"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a42d721e2dab7a579b2537576b30743efecc6376","unresolved":false,"context_lines":[{"line_number":1790,"context_line":"        with testtools.ExpectedException(exc.PortBound):"},{"line_number":1791,"context_line":"            self._test_check_mac_update_allowed(portbindings.VIF_TYPE_OVS)"},{"line_number":1792,"context_line":""},{"line_number":1793,"context_line":"    def test_reset_mac_for_direct_physical(self, direct_physical\u003dTrue,"},{"line_number":1794,"context_line":"                                           unbinding\u003dTrue):"},{"line_number":1795,"context_line":"        plugin \u003d directory.get_plugin()"},{"line_number":1796,"context_line":"        port \u003d {\u0027device_id\u0027: \u0027123\u0027, \u0027device_owner\u0027: \u0027compute:nova\u0027}"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_521ee6ba","line":1793,"updated":"2019-06-04 05:25:27.000000000","message":"From the maintenance perspective, how about make this method private and add a test which calls this with (True, True) ?","commit_id":"540dd02beae3917269ebae915cd83ed6765fe1c3"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"81563836e4457d153cc0ecb6b45810096479627e","unresolved":false,"context_lines":[{"line_number":1790,"context_line":"        with testtools.ExpectedException(exc.PortBound):"},{"line_number":1791,"context_line":"            self._test_check_mac_update_allowed(portbindings.VIF_TYPE_OVS)"},{"line_number":1792,"context_line":""},{"line_number":1793,"context_line":"    def test_reset_mac_for_direct_physical(self, direct_physical\u003dTrue,"},{"line_number":1794,"context_line":"                                           unbinding\u003dTrue):"},{"line_number":1795,"context_line":"        plugin \u003d directory.get_plugin()"},{"line_number":1796,"context_line":"        port \u003d {\u0027device_id\u0027: \u0027123\u0027, \u0027device_owner\u0027: \u0027compute:nova\u0027}"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_cfc8df56","line":1793,"in_reply_to":"9fb8cfa7_1d515f37","updated":"2019-06-04 19:33:48.000000000","message":"I think it\u0027s just because it\u0027s typical we create a \u0027helper\u0027, then call it with all possible values.\n\nAnd in this case I guess you could add a (False, False) test too?","commit_id":"540dd02beae3917269ebae915cd83ed6765fe1c3"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"56c653816ea1bb99b324bb544c93e82aa8371c52","unresolved":false,"context_lines":[{"line_number":1790,"context_line":"        with testtools.ExpectedException(exc.PortBound):"},{"line_number":1791,"context_line":"            self._test_check_mac_update_allowed(portbindings.VIF_TYPE_OVS)"},{"line_number":1792,"context_line":""},{"line_number":1793,"context_line":"    def test_reset_mac_for_direct_physical(self, direct_physical\u003dTrue,"},{"line_number":1794,"context_line":"                                           unbinding\u003dTrue):"},{"line_number":1795,"context_line":"        plugin \u003d directory.get_plugin()"},{"line_number":1796,"context_line":"        port \u003d {\u0027device_id\u0027: \u0027123\u0027, \u0027device_owner\u0027: \u0027compute:nova\u0027}"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_1d515f37","line":1793,"in_reply_to":"9fb8cfa7_521ee6ba","updated":"2019-06-04 06:50:53.000000000","message":"could you please clarify how it\u0027s better from maintenance perspective?","commit_id":"540dd02beae3917269ebae915cd83ed6765fe1c3"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"de6b2c9950355fea8cd378e2a23d83091e0a1809","unresolved":false,"context_lines":[{"line_number":1790,"context_line":"        with testtools.ExpectedException(exc.PortBound):"},{"line_number":1791,"context_line":"            self._test_check_mac_update_allowed(portbindings.VIF_TYPE_OVS)"},{"line_number":1792,"context_line":""},{"line_number":1793,"context_line":"    def test_reset_mac_for_direct_physical(self, direct_physical\u003dTrue,"},{"line_number":1794,"context_line":"                                           unbinding\u003dTrue):"},{"line_number":1795,"context_line":"        plugin \u003d directory.get_plugin()"},{"line_number":1796,"context_line":"        port \u003d {\u0027device_id\u0027: \u0027123\u0027, \u0027device_owner\u0027: \u0027compute:nova\u0027}"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_a30fbf2c","line":1793,"in_reply_to":"9fb8cfa7_cfc8df56","updated":"2019-06-05 06:54:08.000000000","message":"Done","commit_id":"540dd02beae3917269ebae915cd83ed6765fe1c3"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"b63736f642ab75ea64013a56e72d8ab8d39698ae","unresolved":false,"context_lines":[{"line_number":1791,"context_line":"            self._test_check_mac_update_allowed(portbindings.VIF_TYPE_OVS)"},{"line_number":1792,"context_line":""},{"line_number":1793,"context_line":"    def _test_reset_mac_for_direct_physical(self, direct_physical\u003dTrue,"},{"line_number":1794,"context_line":"                                           unbinding\u003dTrue):"},{"line_number":1795,"context_line":"        plugin \u003d directory.get_plugin()"},{"line_number":1796,"context_line":"        port \u003d {\u0027device_id\u0027: \u0027123\u0027, \u0027device_owner\u0027: \u0027compute:nova\u0027}"},{"line_number":1797,"context_line":"        new_attrs \u003d ({\u0027device_id\u0027: \u0027\u0027, \u0027device_owner\u0027: \u0027\u0027} if unbinding else"}],"source_content_type":"text/x-python","patch_set":6,"id":"9fb8cfa7_b2662629","line":1794,"range":{"start_line":1794,"start_character":43,"end_line":1794,"end_character":57},"updated":"2019-06-05 10:00:59.000000000","message":"nitty nit: please align this indentation to line above if You will respin it.","commit_id":"d2d5d1fd6b4cae6a5ec7145a1c6b189c2b5ee354"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"f3a5fe92d9c2d0845c8fd60ac68fbc8cba369405","unresolved":false,"context_lines":[{"line_number":1791,"context_line":"            self._test_check_mac_update_allowed(portbindings.VIF_TYPE_OVS)"},{"line_number":1792,"context_line":""},{"line_number":1793,"context_line":"    def _test_reset_mac_for_direct_physical(self, direct_physical\u003dTrue,"},{"line_number":1794,"context_line":"                                           unbinding\u003dTrue):"},{"line_number":1795,"context_line":"        plugin \u003d directory.get_plugin()"},{"line_number":1796,"context_line":"        port \u003d {\u0027device_id\u0027: \u0027123\u0027, \u0027device_owner\u0027: \u0027compute:nova\u0027}"},{"line_number":1797,"context_line":"        new_attrs \u003d ({\u0027device_id\u0027: \u0027\u0027, \u0027device_owner\u0027: \u0027\u0027} if unbinding else"}],"source_content_type":"text/x-python","patch_set":6,"id":"9fb8cfa7_ded5cae6","line":1794,"range":{"start_line":1794,"start_character":43,"end_line":1794,"end_character":57},"in_reply_to":"9fb8cfa7_b2662629","updated":"2019-06-06 12:12:29.000000000","message":"We are doing \u0027recheck\u0027 several times. It is better to fix it.","commit_id":"d2d5d1fd6b4cae6a5ec7145a1c6b189c2b5ee354"}]}
