)]}'
{"neutron/db/db_base_plugin_v2.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9df25a3e8334ae8d3ea755191333f52209dff5e6","unresolved":false,"context_lines":[{"line_number":1078,"context_line":"    @db_api.retry_if_session_inactive()"},{"line_number":1079,"context_line":"    @db_api.CONTEXT_READER"},{"line_number":1080,"context_line":"    def get_subnet(self, context, id, fields\u003dNone):"},{"line_number":1081,"context_line":"        subnet_obj \u003d self._get_subnet_object(context, id)"},{"line_number":1082,"context_line":"        return self._make_subnet_dict(subnet_obj, fields, context\u003dcontext)"},{"line_number":1083,"context_line":""},{"line_number":1084,"context_line":"    @db_api.retry_if_session_inactive()"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_3e3b619c","line":1081,"range":{"start_line":1081,"start_character":26,"end_line":1081,"end_character":44},"updated":"2019-08-19 15:56:14.000000000","message":"Why don\u0027t you use the reader context inside this function, like in _get_subnets()?","commit_id":"a775c1d1761574b38a67b9e411fd8401631e2ed6"},{"author":{"_account_id":29157,"name":"zhanghao","email":"hao.zhang.am.i@gmail.com","username":"zhanghao2"},"change_message_id":"592376c7cbfd50cb158fe83237ca0b33c48ffbbd","unresolved":false,"context_lines":[{"line_number":1078,"context_line":"    @db_api.retry_if_session_inactive()"},{"line_number":1079,"context_line":"    @db_api.CONTEXT_READER"},{"line_number":1080,"context_line":"    def get_subnet(self, context, id, fields\u003dNone):"},{"line_number":1081,"context_line":"        subnet_obj \u003d self._get_subnet_object(context, id)"},{"line_number":1082,"context_line":"        return self._make_subnet_dict(subnet_obj, fields, context\u003dcontext)"},{"line_number":1083,"context_line":""},{"line_number":1084,"context_line":"    @db_api.retry_if_session_inactive()"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_fbcdd02f","line":1081,"range":{"start_line":1081,"start_character":26,"end_line":1081,"end_character":44},"in_reply_to":"7faddb67_3e3b619c","updated":"2019-08-20 01:52:01.000000000","message":"a good suggestion, I will do it.","commit_id":"a775c1d1761574b38a67b9e411fd8401631e2ed6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9df25a3e8334ae8d3ea755191333f52209dff5e6","unresolved":false,"context_lines":[{"line_number":1082,"context_line":"        return self._make_subnet_dict(subnet_obj, fields, context\u003dcontext)"},{"line_number":1083,"context_line":""},{"line_number":1084,"context_line":"    @db_api.retry_if_session_inactive()"},{"line_number":1085,"context_line":"    @db_api.CONTEXT_READER"},{"line_number":1086,"context_line":"    def get_subnets(self, context, filters\u003dNone, fields\u003dNone,"},{"line_number":1087,"context_line":"                    sorts\u003dNone, limit\u003dNone, marker\u003dNone,"},{"line_number":1088,"context_line":"                    page_reverse\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_74149b4d","line":1085,"range":{"start_line":1085,"start_character":12,"end_line":1085,"end_character":26},"updated":"2019-08-19 15:56:14.000000000","message":"_get_subnets() uses the reader context inside it, there is no need to use it here.","commit_id":"a775c1d1761574b38a67b9e411fd8401631e2ed6"},{"author":{"_account_id":29157,"name":"zhanghao","email":"hao.zhang.am.i@gmail.com","username":"zhanghao2"},"change_message_id":"592376c7cbfd50cb158fe83237ca0b33c48ffbbd","unresolved":false,"context_lines":[{"line_number":1082,"context_line":"        return self._make_subnet_dict(subnet_obj, fields, context\u003dcontext)"},{"line_number":1083,"context_line":""},{"line_number":1084,"context_line":"    @db_api.retry_if_session_inactive()"},{"line_number":1085,"context_line":"    @db_api.CONTEXT_READER"},{"line_number":1086,"context_line":"    def get_subnets(self, context, filters\u003dNone, fields\u003dNone,"},{"line_number":1087,"context_line":"                    sorts\u003dNone, limit\u003dNone, marker\u003dNone,"},{"line_number":1088,"context_line":"                    page_reverse\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_9beb7ca2","line":1085,"range":{"start_line":1085,"start_character":12,"end_line":1085,"end_character":26},"in_reply_to":"7faddb67_74149b4d","updated":"2019-08-20 01:52:01.000000000","message":"I used the old neutron version and didn\u0027t see this change,thanks for your reminder.","commit_id":"a775c1d1761574b38a67b9e411fd8401631e2ed6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"32143d746332d8d86668506345c3106bc00b5b0b","unresolved":false,"context_lines":[{"line_number":1077,"context_line":"                        self, context\u003dcontext, subnet\u003dsubnet.to_dict())"},{"line_number":1078,"context_line":""},{"line_number":1079,"context_line":"    @db_api.retry_if_session_inactive()"},{"line_number":1080,"context_line":"    @db_api.CONTEXT_READER"},{"line_number":1081,"context_line":"    def get_subnet(self, context, id, fields\u003dNone):"},{"line_number":1082,"context_line":"        subnet_obj \u003d self._get_subnet_object(context, id)"},{"line_number":1083,"context_line":"        return self._make_subnet_dict(subnet_obj, fields, context\u003dcontext)"}],"source_content_type":"text/x-python","patch_set":13,"id":"3fa7e38b_260ec431","line":1080,"updated":"2019-11-04 17:16:01.000000000","message":"Why this?? Not related to this change.","commit_id":"52c9d0cf25157bd965621f0f75744ab3a44d8c95"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"3312e15edaa27528c3342ccf58407821dbaeba58","unresolved":false,"context_lines":[{"line_number":1077,"context_line":"                        self, context\u003dcontext, subnet\u003dsubnet.to_dict())"},{"line_number":1078,"context_line":""},{"line_number":1079,"context_line":"    @db_api.retry_if_session_inactive()"},{"line_number":1080,"context_line":"    @db_api.CONTEXT_READER"},{"line_number":1081,"context_line":"    def get_subnet(self, context, id, fields\u003dNone):"},{"line_number":1082,"context_line":"        subnet_obj \u003d self._get_subnet_object(context, id)"},{"line_number":1083,"context_line":"        return self._make_subnet_dict(subnet_obj, fields, context\u003dcontext)"}],"source_content_type":"text/x-python","patch_set":13,"id":"3fa7e38b_a8d75322","line":1080,"in_reply_to":"3fa7e38b_1c79942d","updated":"2019-11-15 17:26:07.000000000","message":"This is not needed.\n\n\"_get_subnet_object\" --\u003e \"subnet_obj.Subnet.get_object\" --\u003e \"objects.base.NeutronDbObject.get_object\"\n\nThis last method, implicitly, will create a reader context to retrieve the value from the DB: https://github.com/openstack/neutron/blob/5aec36b31353ea65b305c0c04022a39e2fde2ed1/neutron/objects/base.py#L610","commit_id":"52c9d0cf25157bd965621f0f75744ab3a44d8c95"},{"author":{"_account_id":29157,"name":"zhanghao","email":"hao.zhang.am.i@gmail.com","username":"zhanghao2"},"change_message_id":"e50f2d5d74238e44c4762ddcdfc5d4c62c2a2121","unresolved":false,"context_lines":[{"line_number":1077,"context_line":"                        self, context\u003dcontext, subnet\u003dsubnet.to_dict())"},{"line_number":1078,"context_line":""},{"line_number":1079,"context_line":"    @db_api.retry_if_session_inactive()"},{"line_number":1080,"context_line":"    @db_api.CONTEXT_READER"},{"line_number":1081,"context_line":"    def get_subnet(self, context, id, fields\u003dNone):"},{"line_number":1082,"context_line":"        subnet_obj \u003d self._get_subnet_object(context, id)"},{"line_number":1083,"context_line":"        return self._make_subnet_dict(subnet_obj, fields, context\u003dcontext)"}],"source_content_type":"text/x-python","patch_set":13,"id":"3fa7e38b_1c79942d","line":1080,"in_reply_to":"3fa7e38b_260ec431","updated":"2019-11-05 01:05:26.000000000","message":"This is to get information from the slave database when querying subnet details, the purpose of this patch is for it.","commit_id":"52c9d0cf25157bd965621f0f75744ab3a44d8c95"},{"author":{"_account_id":29157,"name":"zhanghao","email":"hao.zhang.am.i@gmail.com","username":"zhanghao2"},"change_message_id":"a8284b986121f0e3fdc00fa6b7b324a02e305fd9","unresolved":false,"context_lines":[{"line_number":1077,"context_line":"                        self, context\u003dcontext, subnet\u003dsubnet.to_dict())"},{"line_number":1078,"context_line":""},{"line_number":1079,"context_line":"    @db_api.retry_if_session_inactive()"},{"line_number":1080,"context_line":"    @db_api.CONTEXT_READER"},{"line_number":1081,"context_line":"    def get_subnet(self, context, id, fields\u003dNone):"},{"line_number":1082,"context_line":"        subnet_obj \u003d self._get_subnet_object(context, id)"},{"line_number":1083,"context_line":"        return self._make_subnet_dict(subnet_obj, fields, context\u003dcontext)"}],"source_content_type":"text/x-python","patch_set":13,"id":"3fa7e38b_8f2376be","line":1080,"in_reply_to":"3fa7e38b_a8d75322","updated":"2019-11-18 01:29:46.000000000","message":"You are right, I didn\u0027t notice this, I deleted it and updated the CMSG, thanks.","commit_id":"52c9d0cf25157bd965621f0f75744ab3a44d8c95"}],"neutron/plugins/ml2/plugin.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9df25a3e8334ae8d3ea755191333f52209dff5e6","unresolved":false,"context_lines":[{"line_number":1138,"context_line":"        return updated_network"},{"line_number":1139,"context_line":""},{"line_number":1140,"context_line":"    @db_api.retry_if_session_inactive()"},{"line_number":1141,"context_line":"    @db_api.CONTEXT_READER"},{"line_number":1142,"context_line":"    def get_network(self, context, id, fields\u003dNone):"},{"line_number":1143,"context_line":"        net_db \u003d self._get_network(context, id)"},{"line_number":1144,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_3ed60151","line":1141,"range":{"start_line":1141,"start_character":12,"end_line":1141,"end_character":26},"updated":"2019-08-19 15:56:14.000000000","message":"a) You are changing a writer context for a reader one.\nb) Why do you need this change?","commit_id":"a775c1d1761574b38a67b9e411fd8401631e2ed6"},{"author":{"_account_id":29157,"name":"zhanghao","email":"hao.zhang.am.i@gmail.com","username":"zhanghao2"},"change_message_id":"592376c7cbfd50cb158fe83237ca0b33c48ffbbd","unresolved":false,"context_lines":[{"line_number":1138,"context_line":"        return updated_network"},{"line_number":1139,"context_line":""},{"line_number":1140,"context_line":"    @db_api.retry_if_session_inactive()"},{"line_number":1141,"context_line":"    @db_api.CONTEXT_READER"},{"line_number":1142,"context_line":"    def get_network(self, context, id, fields\u003dNone):"},{"line_number":1143,"context_line":"        net_db \u003d self._get_network(context, id)"},{"line_number":1144,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_fb9b9013","line":1141,"range":{"start_line":1141,"start_character":12,"end_line":1141,"end_character":26},"in_reply_to":"7faddb67_3ed60151","updated":"2019-08-20 01:52:01.000000000","message":"a)I think it can be changed to reader context in the current version.\nb)It is helpful for mitigating database pressure on large-scale scenarios.","commit_id":"a775c1d1761574b38a67b9e411fd8401631e2ed6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9df25a3e8334ae8d3ea755191333f52209dff5e6","unresolved":false,"context_lines":[{"line_number":1148,"context_line":"        return db_utils.resource_fields(net_data, fields)"},{"line_number":1149,"context_line":""},{"line_number":1150,"context_line":"    @db_api.retry_if_session_inactive()"},{"line_number":1151,"context_line":"    @db_api.CONTEXT_READER"},{"line_number":1152,"context_line":"    def get_networks(self, context, filters\u003dNone, fields\u003dNone,"},{"line_number":1153,"context_line":"                     sorts\u003dNone, limit\u003dNone, marker\u003dNone, page_reverse\u003dFalse):"},{"line_number":1154,"context_line":"        nets_db \u003d super(Ml2Plugin, self)._get_networks("}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_1ed30562","line":1151,"range":{"start_line":1151,"start_character":12,"end_line":1151,"end_character":26},"updated":"2019-08-19 15:56:14.000000000","message":"ditto","commit_id":"a775c1d1761574b38a67b9e411fd8401631e2ed6"},{"author":{"_account_id":29157,"name":"zhanghao","email":"hao.zhang.am.i@gmail.com","username":"zhanghao2"},"change_message_id":"592376c7cbfd50cb158fe83237ca0b33c48ffbbd","unresolved":false,"context_lines":[{"line_number":1148,"context_line":"        return db_utils.resource_fields(net_data, fields)"},{"line_number":1149,"context_line":""},{"line_number":1150,"context_line":"    @db_api.retry_if_session_inactive()"},{"line_number":1151,"context_line":"    @db_api.CONTEXT_READER"},{"line_number":1152,"context_line":"    def get_networks(self, context, filters\u003dNone, fields\u003dNone,"},{"line_number":1153,"context_line":"                     sorts\u003dNone, limit\u003dNone, marker\u003dNone, page_reverse\u003dFalse):"},{"line_number":1154,"context_line":"        nets_db \u003d super(Ml2Plugin, self)._get_networks("}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_9b8a9cb9","line":1151,"range":{"start_line":1151,"start_character":12,"end_line":1151,"end_character":26},"in_reply_to":"7faddb67_1ed30562","updated":"2019-08-20 01:52:01.000000000","message":"See above.","commit_id":"a775c1d1761574b38a67b9e411fd8401631e2ed6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"6c442db7ea6aaef0e7db85c8d693b486bf698e92","unresolved":false,"context_lines":[{"line_number":1138,"context_line":"        return updated_network"},{"line_number":1139,"context_line":""},{"line_number":1140,"context_line":"    @db_api.retry_if_session_inactive()"},{"line_number":1141,"context_line":"    @db_api.CONTEXT_READER"},{"line_number":1142,"context_line":"    def get_network(self, context, id, fields\u003dNone):"},{"line_number":1143,"context_line":"        net_db \u003d self._get_network(context, id)"},{"line_number":1144,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_756acfed","line":1141,"updated":"2019-08-27 10:32:41.000000000","message":"1) This change is irrelevant.\n2) Where is the MTU code? This change should not be done here.\n3) You are engulfing all method inside the context when this is not needed.","commit_id":"1dab51de8a471fb40d56551827d19267a4e8e966"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f73032bd46eac73d6d7a73fe622eed4b08858eff","unresolved":false,"context_lines":[{"line_number":1138,"context_line":"        return updated_network"},{"line_number":1139,"context_line":""},{"line_number":1140,"context_line":"    @db_api.retry_if_session_inactive()"},{"line_number":1141,"context_line":"    @db_api.CONTEXT_READER"},{"line_number":1142,"context_line":"    def get_network(self, context, id, fields\u003dNone):"},{"line_number":1143,"context_line":"        net_db \u003d self._get_network(context, id)"},{"line_number":1144,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_8862ba3c","line":1141,"in_reply_to":"7faddb67_0d4edcc1","updated":"2019-08-28 09:10:50.000000000","message":"1) This change is irrelevant because you are extending \nneedlessly the reader context. This context should be as short as possible.\n2) The MTU code could be removed but in a specific patch. Please, don\u0027t mix patches. Try to make a patch as simple as possible. This change is not related.\n3) As commented in 1), why do you need to execute \"db_utils.resource_fields(net_data, fields)\" inside the reader context?","commit_id":"1dab51de8a471fb40d56551827d19267a4e8e966"},{"author":{"_account_id":29157,"name":"zhanghao","email":"hao.zhang.am.i@gmail.com","username":"zhanghao2"},"change_message_id":"4e9e5c51c8ed4a8ed8f156071efe362f9ff6fb27","unresolved":false,"context_lines":[{"line_number":1138,"context_line":"        return updated_network"},{"line_number":1139,"context_line":""},{"line_number":1140,"context_line":"    @db_api.retry_if_session_inactive()"},{"line_number":1141,"context_line":"    @db_api.CONTEXT_READER"},{"line_number":1142,"context_line":"    def get_network(self, context, id, fields\u003dNone):"},{"line_number":1143,"context_line":"        net_db \u003d self._get_network(context, id)"},{"line_number":1144,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_0d4edcc1","line":1141,"in_reply_to":"7faddb67_756acfed","updated":"2019-08-28 08:15:10.000000000","message":"1)This change is needed when querying the port details from the slave database nodes.\n2)As the comment says, it can be removed in the future release.\n3)the same as the show port details.","commit_id":"1dab51de8a471fb40d56551827d19267a4e8e966"},{"author":{"_account_id":29157,"name":"zhanghao","email":"hao.zhang.am.i@gmail.com","username":"zhanghao2"},"change_message_id":"0a2d2d6057af01344b55a99cd488599415be9e55","unresolved":false,"context_lines":[{"line_number":1138,"context_line":"        return updated_network"},{"line_number":1139,"context_line":""},{"line_number":1140,"context_line":"    @db_api.retry_if_session_inactive()"},{"line_number":1141,"context_line":"    @db_api.CONTEXT_READER"},{"line_number":1142,"context_line":"    def get_network(self, context, id, fields\u003dNone):"},{"line_number":1143,"context_line":"        net_db \u003d self._get_network(context, id)"},{"line_number":1144,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_95df3265","line":1141,"in_reply_to":"7faddb67_8862ba3c","updated":"2019-08-28 10:50:34.000000000","message":"Done","commit_id":"1dab51de8a471fb40d56551827d19267a4e8e966"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"41711e60227ac6585e128e920187b2e0952b085f","unresolved":false,"context_lines":[{"line_number":1140,"context_line":"    @db_api.retry_if_session_inactive()"},{"line_number":1141,"context_line":"    def get_network(self, context, id, fields\u003dNone):"},{"line_number":1142,"context_line":"        # NOTE(ihrachys) use writer manager to be able to update mtu"},{"line_number":1143,"context_line":"        # TODO(ihrachys) remove in Queens+ when mtu is not nullable"},{"line_number":1144,"context_line":"        with db_api.CONTEXT_READER.using(context):"},{"line_number":1145,"context_line":"            net_db \u003d self._get_network(context, id)"},{"line_number":1146,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_81f13098","line":1143,"updated":"2019-08-28 14:52:03.000000000","message":"this note and todo should be probably removed now","commit_id":"dad1990ccdb7ff7364ea8260c3bd2344efd6f66c"},{"author":{"_account_id":29157,"name":"zhanghao","email":"hao.zhang.am.i@gmail.com","username":"zhanghao2"},"change_message_id":"7235a610275ee41c31709666f90cb50050a1520b","unresolved":false,"context_lines":[{"line_number":1140,"context_line":"    @db_api.retry_if_session_inactive()"},{"line_number":1141,"context_line":"    def get_network(self, context, id, fields\u003dNone):"},{"line_number":1142,"context_line":"        # NOTE(ihrachys) use writer manager to be able to update mtu"},{"line_number":1143,"context_line":"        # TODO(ihrachys) remove in Queens+ when mtu is not nullable"},{"line_number":1144,"context_line":"        with db_api.CONTEXT_READER.using(context):"},{"line_number":1145,"context_line":"            net_db \u003d self._get_network(context, id)"},{"line_number":1146,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_fea51a04","line":1143,"in_reply_to":"7faddb67_81f13098","updated":"2019-08-29 01:45:49.000000000","message":"Done","commit_id":"dad1990ccdb7ff7364ea8260c3bd2344efd6f66c"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"41711e60227ac6585e128e920187b2e0952b085f","unresolved":false,"context_lines":[{"line_number":1141,"context_line":"    def get_network(self, context, id, fields\u003dNone):"},{"line_number":1142,"context_line":"        # NOTE(ihrachys) use writer manager to be able to update mtu"},{"line_number":1143,"context_line":"        # TODO(ihrachys) remove in Queens+ when mtu is not nullable"},{"line_number":1144,"context_line":"        with db_api.CONTEXT_READER.using(context):"},{"line_number":1145,"context_line":"            net_db \u003d self._get_network(context, id)"},{"line_number":1146,"context_line":""},{"line_number":1147,"context_line":"            # NOTE(ihrachys) pre Pike networks may have null mtus; update them"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_210f1c89","line":1144,"updated":"2019-08-28 14:52:03.000000000","message":"according to comments above and below in L1147-1149 do we really still need this \"with\" statement here? Maybe You should just address all such TODOs from ihrachys from this file?","commit_id":"dad1990ccdb7ff7364ea8260c3bd2344efd6f66c"},{"author":{"_account_id":21798,"name":"Bernard Cafarelli","email":"bcafarel@redhat.com","username":"bcafarel"},"change_message_id":"361f1afd3e088b318cd89dec468ae703ddf8dd73","unresolved":false,"context_lines":[{"line_number":1141,"context_line":"    def get_network(self, context, id, fields\u003dNone):"},{"line_number":1142,"context_line":"        # NOTE(ihrachys) use writer manager to be able to update mtu"},{"line_number":1143,"context_line":"        # TODO(ihrachys) remove in Queens+ when mtu is not nullable"},{"line_number":1144,"context_line":"        with db_api.CONTEXT_READER.using(context):"},{"line_number":1145,"context_line":"            net_db \u003d self._get_network(context, id)"},{"line_number":1146,"context_line":""},{"line_number":1147,"context_line":"            # NOTE(ihrachys) pre Pike networks may have null mtus; update them"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_5a41d3a5","line":1144,"in_reply_to":"7faddb67_09eebb8a","updated":"2019-08-29 12:26:08.000000000","message":"Yes that is my understanding. On a bonus side, it will clean quite a few TODO and switch a few contexts to READER (I had sent a review for it I think, there were a few hits on TODO nullable mtu)","commit_id":"dad1990ccdb7ff7364ea8260c3bd2344efd6f66c"},{"author":{"_account_id":29157,"name":"zhanghao","email":"hao.zhang.am.i@gmail.com","username":"zhanghao2"},"change_message_id":"7235a610275ee41c31709666f90cb50050a1520b","unresolved":false,"context_lines":[{"line_number":1141,"context_line":"    def get_network(self, context, id, fields\u003dNone):"},{"line_number":1142,"context_line":"        # NOTE(ihrachys) use writer manager to be able to update mtu"},{"line_number":1143,"context_line":"        # TODO(ihrachys) remove in Queens+ when mtu is not nullable"},{"line_number":1144,"context_line":"        with db_api.CONTEXT_READER.using(context):"},{"line_number":1145,"context_line":"            net_db \u003d self._get_network(context, id)"},{"line_number":1146,"context_line":""},{"line_number":1147,"context_line":"            # NOTE(ihrachys) pre Pike networks may have null mtus; update them"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_9ec3c68a","line":1144,"in_reply_to":"7faddb67_210f1c89","updated":"2019-08-29 01:45:49.000000000","message":"It is necessary if we want to use reader context,and I will address all TODOs in another patch, Let\u0027s merge this patch first.","commit_id":"dad1990ccdb7ff7364ea8260c3bd2344efd6f66c"},{"author":{"_account_id":29157,"name":"zhanghao","email":"hao.zhang.am.i@gmail.com","username":"zhanghao2"},"change_message_id":"b4f02e0acccc6d97b31b9ab76fd9ed7c6fe2050d","unresolved":false,"context_lines":[{"line_number":1141,"context_line":"    def get_network(self, context, id, fields\u003dNone):"},{"line_number":1142,"context_line":"        # NOTE(ihrachys) use writer manager to be able to update mtu"},{"line_number":1143,"context_line":"        # TODO(ihrachys) remove in Queens+ when mtu is not nullable"},{"line_number":1144,"context_line":"        with db_api.CONTEXT_READER.using(context):"},{"line_number":1145,"context_line":"            net_db \u003d self._get_network(context, id)"},{"line_number":1146,"context_line":""},{"line_number":1147,"context_line":"            # NOTE(ihrachys) pre Pike networks may have null mtus; update them"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_aa0e673a","line":1144,"in_reply_to":"7faddb67_5a41d3a5","updated":"2019-08-30 02:26:45.000000000","message":"I want to know if we need to be compatible with the previous version of pike for data migration?\nAs far as I know, the MTU in the database is not empty, because it will be assigned when the network is created. I think it is only necessary to set the MTU in the database to be non-empty in future versions.","commit_id":"dad1990ccdb7ff7364ea8260c3bd2344efd6f66c"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"5b15bf4ef30bc11abd6bb28766e9f3a631f80d96","unresolved":false,"context_lines":[{"line_number":1141,"context_line":"    def get_network(self, context, id, fields\u003dNone):"},{"line_number":1142,"context_line":"        # NOTE(ihrachys) use writer manager to be able to update mtu"},{"line_number":1143,"context_line":"        # TODO(ihrachys) remove in Queens+ when mtu is not nullable"},{"line_number":1144,"context_line":"        with db_api.CONTEXT_READER.using(context):"},{"line_number":1145,"context_line":"            net_db \u003d self._get_network(context, id)"},{"line_number":1146,"context_line":""},{"line_number":1147,"context_line":"            # NOTE(ihrachys) pre Pike networks may have null mtus; update them"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_c9a2e3fc","line":1144,"in_reply_to":"7faddb67_9ec3c68a","updated":"2019-08-29 08:48:48.000000000","message":"ok, that works for me. Lets do this one first and than we can address other TODOs","commit_id":"dad1990ccdb7ff7364ea8260c3bd2344efd6f66c"},{"author":{"_account_id":21798,"name":"Bernard Cafarelli","email":"bcafarel@redhat.com","username":"bcafarel"},"change_message_id":"28f45f0561d946037c6daa8ce4d5430275f029f4","unresolved":false,"context_lines":[{"line_number":1141,"context_line":"    def get_network(self, context, id, fields\u003dNone):"},{"line_number":1142,"context_line":"        # NOTE(ihrachys) use writer manager to be able to update mtu"},{"line_number":1143,"context_line":"        # TODO(ihrachys) remove in Queens+ when mtu is not nullable"},{"line_number":1144,"context_line":"        with db_api.CONTEXT_READER.using(context):"},{"line_number":1145,"context_line":"            net_db \u003d self._get_network(context, id)"},{"line_number":1146,"context_line":""},{"line_number":1147,"context_line":"            # NOTE(ihrachys) pre Pike networks may have null mtus; update them"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_dd3fd31f","line":1144,"in_reply_to":"7faddb67_aa0e673a","updated":"2019-09-02 09:21:31.000000000","message":"I think so too, once we have migrated database to non-nullable we can drop these checks (and switch to reader).\n\nMost \"recent\" deployments would have non-null MTU anyway, this is really for some created before Pike.","commit_id":"dad1990ccdb7ff7364ea8260c3bd2344efd6f66c"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"c56bf9b44a1ff757d8275dface02e1d01b87f72f","unresolved":false,"context_lines":[{"line_number":1141,"context_line":"    def get_network(self, context, id, fields\u003dNone):"},{"line_number":1142,"context_line":"        # NOTE(ihrachys) use writer manager to be able to update mtu"},{"line_number":1143,"context_line":"        # TODO(ihrachys) remove in Queens+ when mtu is not nullable"},{"line_number":1144,"context_line":"        with db_api.CONTEXT_READER.using(context):"},{"line_number":1145,"context_line":"            net_db \u003d self._get_network(context, id)"},{"line_number":1146,"context_line":""},{"line_number":1147,"context_line":"            # NOTE(ihrachys) pre Pike networks may have null mtus; update them"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_09eebb8a","line":1144,"in_reply_to":"7faddb67_c98183fd","updated":"2019-08-29 09:28:07.000000000","message":"Hmm, so it looks that we should first provide this db migration script to address https://opendev.org/openstack/neutron/src/branch/master/neutron/db/models_v2.py#L271 and than eventually switch to READER context here, right?","commit_id":"dad1990ccdb7ff7364ea8260c3bd2344efd6f66c"},{"author":{"_account_id":21798,"name":"Bernard Cafarelli","email":"bcafarel@redhat.com","username":"bcafarel"},"change_message_id":"dd3d80afc69b609722c8707475310273aef98446","unresolved":false,"context_lines":[{"line_number":1141,"context_line":"    def get_network(self, context, id, fields\u003dNone):"},{"line_number":1142,"context_line":"        # NOTE(ihrachys) use writer manager to be able to update mtu"},{"line_number":1143,"context_line":"        # TODO(ihrachys) remove in Queens+ when mtu is not nullable"},{"line_number":1144,"context_line":"        with db_api.CONTEXT_READER.using(context):"},{"line_number":1145,"context_line":"            net_db \u003d self._get_network(context, id)"},{"line_number":1146,"context_line":""},{"line_number":1147,"context_line":"            # NOTE(ihrachys) pre Pike networks may have null mtus; update them"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_c98183fd","line":1144,"in_reply_to":"7faddb67_c9a2e3fc","updated":"2019-08-29 09:14:44.000000000","message":"I had previously looked into cleaning these TODOs, but from https://opendev.org/openstack/neutron/src/branch/master/neutron/db/models_v2.py#L271 mtu can still be null in database\n\nThis is probably a corner case now, but could still happen to need writer manager (and update mtu)?","commit_id":"dad1990ccdb7ff7364ea8260c3bd2344efd6f66c"}]}
