)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"4384b85742851373fdb15ca32f446c98498250f0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"457e3d12_c28155c7","updated":"2022-03-11 11:39:50.000000000","message":"recheck","commit_id":"99a88299b707f6d026993fa7666562555b3f8a39"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b9ef97b5278a2054c9b93a8ae8ec1df15dfc276a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"e167ebf9_8a417752","updated":"2022-03-11 11:40:48.000000000","message":"recheck","commit_id":"99a88299b707f6d026993fa7666562555b3f8a39"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"e198e15b448c5edf6eee916d7097c1b18b1091b5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"3eb844fb_e1e31f30","updated":"2022-03-22 08:41:29.000000000","message":"please check lower-constraints job\u0027s failures as they may be related to that patch","commit_id":"ba73bd865eee77496d8f4ded346037d67a757cac"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"3a0d7a9812ee2908cc08aa0720d8ec148c86e073","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"e326f3a3_c6aa6e46","in_reply_to":"3eb844fb_e1e31f30","updated":"2022-03-22 12:34:19.000000000","message":"Right, this patch [1] is missing in oslo.db. In any case, I\u0027ve changed the Neutron code instead.\n\n[1]Ief0b71bf9a7eb75935612431bdcc26d33bce852d","commit_id":"ba73bd865eee77496d8f4ded346037d67a757cac"},{"author":{"_account_id":21798,"name":"Bernard Cafarelli","email":"bcafarel@redhat.com","username":"bcafarel"},"change_message_id":"cbe6abd36193af1a93d14ef9348bd536b8f0dcdf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"00e0c153_92319a4d","updated":"2022-04-01 14:00:32.000000000","message":"Nice work! Most changes are reader/write decorators or wrapping in \"with db_api.CONTEXT_*\" blocks. And warning message in debug mode will help to keep tracking these","commit_id":"e4086862de1cadcb1347b65543ddaab159c81d9d"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"25c762bc9680e5b4cf8b5e2ef0189e7f20b26c7c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"8aea7067_7fb77917","updated":"2022-03-24 09:10:59.000000000","message":"recheck","commit_id":"e4086862de1cadcb1347b65543ddaab159c81d9d"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8f273147929fc2c65269e344281bfffe0de5016f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"9da76d29_115836c6","updated":"2022-03-23 15:29:44.000000000","message":"recheck","commit_id":"e4086862de1cadcb1347b65543ddaab159c81d9d"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"910081250d1d513d1fb15607321c7ca62cf66810","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"3c64a511_eff966d0","updated":"2022-04-08 11:10:45.000000000","message":"One question to clarify","commit_id":"eeb918e1b9c27d3b5f0747cb856a4a8483f636ad"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"a0cdf3bed6fcf687bb58994d22935c043153f2c7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"1f5cc6ba_14725b59","updated":"2022-04-08 11:23:52.000000000","message":"Very hard work, thanks!","commit_id":"eeb918e1b9c27d3b5f0747cb856a4a8483f636ad"}],"neutron/db/db_base_plugin_v2.py":[{"author":{"_account_id":21798,"name":"Bernard Cafarelli","email":"bcafarel@redhat.com","username":"bcafarel"},"change_message_id":"cbe6abd36193af1a93d14ef9348bd536b8f0dcdf","unresolved":true,"context_lines":[{"line_number":1599,"context_line":"        query \u003d query.distinct()"},{"line_number":1600,"context_line":"        return query"},{"line_number":1601,"context_line":""},{"line_number":1602,"context_line":"    @db_api.retry_if_session_inactive()"},{"line_number":1603,"context_line":"    def get_ports(self, context, filters\u003dNone, fields\u003dNone,"},{"line_number":1604,"context_line":"                  sorts\u003dNone, limit\u003dNone, marker\u003dNone,"},{"line_number":1605,"context_line":"                  page_reverse\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":16,"id":"8bcc1d79_15e66e13","side":"PARENT","line":1602,"range":{"start_line":1602,"start_character":12,"end_line":1602,"end_character":37},"updated":"2022-04-01 14:00:32.000000000","message":"Nice to see a CONTEXT_READER/WRITER (similarly below) instead of this retry decorator!","commit_id":"452a3093f62b314d0508bc92eee3e7912f12ecf1"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"2ae0375cbdd184a8948d482a2f8aa5e2a6ac6549","unresolved":true,"context_lines":[{"line_number":1599,"context_line":"        query \u003d query.distinct()"},{"line_number":1600,"context_line":"        return query"},{"line_number":1601,"context_line":""},{"line_number":1602,"context_line":"    @db_api.retry_if_session_inactive()"},{"line_number":1603,"context_line":"    def get_ports(self, context, filters\u003dNone, fields\u003dNone,"},{"line_number":1604,"context_line":"                  sorts\u003dNone, limit\u003dNone, marker\u003dNone,"},{"line_number":1605,"context_line":"                  page_reverse\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":16,"id":"e9c08bf2_49570ccc","side":"PARENT","line":1602,"range":{"start_line":1602,"start_character":12,"end_line":1602,"end_character":37},"in_reply_to":"32da55b8_bffcb4f4","updated":"2022-04-08 08:57:49.000000000","message":"I can keep both, the retry on top of the one opening the transaction.\n\nMaybe this change was a bit aggressive, confident on the kindness of the DB. I\u0027ll take back the retry decorators.","commit_id":"452a3093f62b314d0508bc92eee3e7912f12ecf1"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"132f8f408704da5789ea9f40371df67aeb162058","unresolved":true,"context_lines":[{"line_number":1599,"context_line":"        query \u003d query.distinct()"},{"line_number":1600,"context_line":"        return query"},{"line_number":1601,"context_line":""},{"line_number":1602,"context_line":"    @db_api.retry_if_session_inactive()"},{"line_number":1603,"context_line":"    def get_ports(self, context, filters\u003dNone, fields\u003dNone,"},{"line_number":1604,"context_line":"                  sorts\u003dNone, limit\u003dNone, marker\u003dNone,"},{"line_number":1605,"context_line":"                  page_reverse\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":16,"id":"32da55b8_bffcb4f4","side":"PARENT","line":1602,"range":{"start_line":1602,"start_character":12,"end_line":1602,"end_character":37},"in_reply_to":"8bcc1d79_15e66e13","updated":"2022-04-08 07:17:46.000000000","message":"I\u0027m not sure if I understand why @db_api.CONTEXT_READER/WRITER can replace that retry_if_session_inactive() decorator. Can You elaborate more on that one? Maybe also add some info about it in commit message would be good.","commit_id":"452a3093f62b314d0508bc92eee3e7912f12ecf1"}],"neutron/db/network_ip_availability_db.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"910081250d1d513d1fb15607321c7ca62cf66810","unresolved":true,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    @classmethod"},{"line_number":106,"context_line":"    @db_api.CONTEXT_READER"},{"line_number":107,"context_line":"    def _build_total_ips_query(cls, context, filters):"},{"line_number":108,"context_line":"        query \u003d context.session.query()"},{"line_number":109,"context_line":"        query \u003d query.add_columns(*cls.total_ips_columns)"},{"line_number":110,"context_line":"        query \u003d query.outerjoin(mod.Subnet,"}],"source_content_type":"text/x-python","patch_set":17,"id":"9a28f9e6_87c5ef64","line":107,"range":{"start_line":107,"start_character":8,"end_line":107,"end_character":30},"updated":"2022-04-08 11:10:45.000000000","message":"Does this method actually execute the query? Not sure but maybe query is executed later when start iterating (#125)","commit_id":"eeb918e1b9c27d3b5f0747cb856a4a8483f636ad"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"b967870e25f5e229c23dd8dcccebde56d70cc2ea","unresolved":false,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    @classmethod"},{"line_number":106,"context_line":"    @db_api.CONTEXT_READER"},{"line_number":107,"context_line":"    def _build_total_ips_query(cls, context, filters):"},{"line_number":108,"context_line":"        query \u003d context.session.query()"},{"line_number":109,"context_line":"        query \u003d query.add_columns(*cls.total_ips_columns)"},{"line_number":110,"context_line":"        query \u003d query.outerjoin(mod.Subnet,"}],"source_content_type":"text/x-python","patch_set":17,"id":"ea61800d_95605540","line":107,"range":{"start_line":107,"start_character":8,"end_line":107,"end_character":30},"in_reply_to":"9a28f9e6_87c5ef64","updated":"2022-04-08 11:15:38.000000000","message":"Ah, I wrongly understood the change at #63 (thinking that CONTEXT_READER was removed by this patch). So CONTEXT_READER in _build_total_ips_query() seems redundant but unrelated to the patch","commit_id":"eeb918e1b9c27d3b5f0747cb856a4a8483f636ad"}],"neutron/db/provisioning_blocks.py":[{"author":{"_account_id":21798,"name":"Bernard Cafarelli","email":"bcafarel@redhat.com","username":"bcafarel"},"change_message_id":"cbe6abd36193af1a93d14ef9348bd536b8f0dcdf","unresolved":true,"context_lines":[{"line_number":105,"context_line":"        return False"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"@db_api.retry_if_session_inactive()"},{"line_number":109,"context_line":"def provisioning_complete(context, object_id, object_type, entity):"},{"line_number":110,"context_line":"    \"\"\"Mark that the provisioning for object_id has been completed by entity."},{"line_number":111,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"38f3c2f2_e6f332e6","line":108,"range":{"start_line":108,"start_character":8,"end_line":108,"end_character":34},"updated":"2022-04-01 14:00:32.000000000","message":"Is this one still needed? (looking at similar changes where having proper db context removes its use)","commit_id":"e4086862de1cadcb1347b65543ddaab159c81d9d"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"909e83644fa5960614b2f5f4cb17976d7fe31a05","unresolved":true,"context_lines":[{"line_number":105,"context_line":"        return False"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"@db_api.retry_if_session_inactive()"},{"line_number":109,"context_line":"def provisioning_complete(context, object_id, object_type, entity):"},{"line_number":110,"context_line":"    \"\"\"Mark that the provisioning for object_id has been completed by entity."},{"line_number":111,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"9cfb3b84_b3b90bec","line":108,"range":{"start_line":108,"start_character":8,"end_line":108,"end_character":34},"in_reply_to":"38f3c2f2_e6f332e6","updated":"2022-04-04 10:44:13.000000000","message":"We do. The DB operation inside this method could fail. This decorator will retry it.","commit_id":"e4086862de1cadcb1347b65543ddaab159c81d9d"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"2ae0375cbdd184a8948d482a2f8aa5e2a6ac6549","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        return False"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"@db_api.retry_if_session_inactive()"},{"line_number":109,"context_line":"def provisioning_complete(context, object_id, object_type, entity):"},{"line_number":110,"context_line":"    \"\"\"Mark that the provisioning for object_id has been completed by entity."},{"line_number":111,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"4f269a22_74d66b7f","line":108,"range":{"start_line":108,"start_character":8,"end_line":108,"end_character":34},"in_reply_to":"9cfb3b84_b3b90bec","updated":"2022-04-08 08:57:49.000000000","message":"Done","commit_id":"e4086862de1cadcb1347b65543ddaab159c81d9d"}],"neutron/objects/agent.py":[{"author":{"_account_id":21798,"name":"Bernard Cafarelli","email":"bcafarel@redhat.com","username":"bcafarel"},"change_message_id":"cbe6abd36193af1a93d14ef9348bd536b8f0dcdf","unresolved":true,"context_lines":[{"line_number":154,"context_line":"        return agents"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    @classmethod"},{"line_number":157,"context_line":"    def _get_agents_by_availability_zones_and_agent_type("},{"line_number":158,"context_line":"            cls, context, agent_type, availability_zones):"},{"line_number":159,"context_line":"        query \u003d context.session.query("},{"line_number":160,"context_line":"            agent_model.Agent).filter_by("}],"source_content_type":"text/x-python","patch_set":16,"id":"d7eaf20c_5ff89f8f","side":"PARENT","line":157,"range":{"start_line":157,"start_character":8,"end_line":157,"end_character":9},"updated":"2022-04-01 14:00:32.000000000","message":"Nit: unrelated change (though valid indeed, this is called in neutron/db/agents_db.py)","commit_id":"452a3093f62b314d0508bc92eee3e7912f12ecf1"}],"neutron/objects/base.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"132f8f408704da5789ea9f40371df67aeb162058","unresolved":true,"context_lines":[{"line_number":61,"context_line":"    if not orm_execute_state.session.in_transaction():"},{"line_number":62,"context_line":"        trace_string \u003d \u0027\\n\u0027.join(traceback.format_stack(sys._getframe(1)))"},{"line_number":63,"context_line":"        LOG.warning(\u0027ORM session: SQL execution without transaction in \u0027"},{"line_number":64,"context_line":"                    \u0027progress, traceback:\\n%s\u0027, trace_string)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"try:"}],"source_content_type":"text/x-python","patch_set":16,"id":"c1b4e2b2_92589fca","line":64,"updated":"2022-04-08 07:17:46.000000000","message":"ok, maybe it\u0027s just me but where that _debug flag is used and why this would be logged only in debug mode?","commit_id":"e4086862de1cadcb1347b65543ddaab159c81d9d"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"1733ced3d3dd8f9bb0f5aa719ebfa176b8812e7d","unresolved":true,"context_lines":[{"line_number":61,"context_line":"    if not orm_execute_state.session.in_transaction():"},{"line_number":62,"context_line":"        trace_string \u003d \u0027\\n\u0027.join(traceback.format_stack(sys._getframe(1)))"},{"line_number":63,"context_line":"        LOG.warning(\u0027ORM session: SQL execution without transaction in \u0027"},{"line_number":64,"context_line":"                    \u0027progress, traceback:\\n%s\u0027, trace_string)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"try:"}],"source_content_type":"text/x-python","patch_set":16,"id":"0cf99f5d_9b91de16","line":64,"in_reply_to":"86453768_f9308514","updated":"2022-04-08 09:14:26.000000000","message":"ahh, ok. So it\u0027s just that I\u0027m stupid :P","commit_id":"e4086862de1cadcb1347b65543ddaab159c81d9d"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"242db191146b5e6dc2f1defc191620fd55d7fb8c","unresolved":true,"context_lines":[{"line_number":61,"context_line":"    if not orm_execute_state.session.in_transaction():"},{"line_number":62,"context_line":"        trace_string \u003d \u0027\\n\u0027.join(traceback.format_stack(sys._getframe(1)))"},{"line_number":63,"context_line":"        LOG.warning(\u0027ORM session: SQL execution without transaction in \u0027"},{"line_number":64,"context_line":"                    \u0027progress, traceback:\\n%s\u0027, trace_string)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"try:"}],"source_content_type":"text/x-python","patch_set":16,"id":"86453768_f9308514","line":64,"in_reply_to":"c1b4e2b2_92589fca","updated":"2022-04-08 09:05:42.000000000","message":"This method \"do_orm_execute\" is registered only in debug mode in L74.\n\nIMO, we should solve this issue here, in the CI. This error should not be present in any production environment. The register of this method every time we execute a DB txn could hit the DB performance. This is why I\u0027m registering it only in debug mode.","commit_id":"e4086862de1cadcb1347b65543ddaab159c81d9d"}],"neutron/objects/port_forwarding.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"132f8f408704da5789ea9f40371df67aeb162058","unresolved":true,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        return cls._unique_port_forwarding(query)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    @staticmethod"},{"line_number":142,"context_line":"    def _unique_port_forwarding(query):"},{"line_number":143,"context_line":"        q \u003d query.order_by(l3.FloatingIP.router_id)"},{"line_number":144,"context_line":"        keyfunc \u003d lambda row: row[1]"}],"source_content_type":"text/x-python","patch_set":16,"id":"5047f216_7a420061","line":141,"updated":"2022-04-08 07:17:46.000000000","message":"nitty nit: not related changed?","commit_id":"e4086862de1cadcb1347b65543ddaab159c81d9d"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e0e41ad0570e20c1a82ad4f98d971bca2ec666aa","unresolved":true,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        return cls._unique_port_forwarding(query)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    @staticmethod"},{"line_number":142,"context_line":"    def _unique_port_forwarding(query):"},{"line_number":143,"context_line":"        q \u003d query.order_by(l3.FloatingIP.router_id)"},{"line_number":144,"context_line":"        keyfunc \u003d lambda row: row[1]"}],"source_content_type":"text/x-python","patch_set":16,"id":"71cccd1e_1c9308b0","line":141,"in_reply_to":"5047f216_7a420061","updated":"2022-04-08 09:07:58.000000000","message":"More or less. Because I\u0027ve changed the method (to return a list and not a generator), I take this opportunity to fix the method signature and type.","commit_id":"e4086862de1cadcb1347b65543ddaab159c81d9d"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"1733ced3d3dd8f9bb0f5aa719ebfa176b8812e7d","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        return cls._unique_port_forwarding(query)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    @staticmethod"},{"line_number":142,"context_line":"    def _unique_port_forwarding(query):"},{"line_number":143,"context_line":"        q \u003d query.order_by(l3.FloatingIP.router_id)"},{"line_number":144,"context_line":"        keyfunc \u003d lambda row: row[1]"}],"source_content_type":"text/x-python","patch_set":16,"id":"dce37b50_60d7ecd7","line":141,"in_reply_to":"71cccd1e_1c9308b0","updated":"2022-04-08 09:14:26.000000000","message":"Ack","commit_id":"e4086862de1cadcb1347b65543ddaab159c81d9d"}],"neutron/objects/ports.py":[{"author":{"_account_id":21798,"name":"Bernard Cafarelli","email":"bcafarel@redhat.com","username":"bcafarel"},"change_message_id":"cbe6abd36193af1a93d14ef9348bd536b8f0dcdf","unresolved":true,"context_lines":[{"line_number":744,"context_line":""},{"line_number":745,"context_line":"    @classmethod"},{"line_number":746,"context_line":"    @db_api.CONTEXT_READER"},{"line_number":747,"context_line":"    def get_gateway_port_ids_by_network(cls, context, network_id):"},{"line_number":748,"context_line":"        gw_ports \u003d context.session.query(models_v2.Port.id).filter_by("},{"line_number":749,"context_line":"            device_owner\u003dconstants.DEVICE_OWNER_ROUTER_GW,"},{"line_number":750,"context_line":"            network_id\u003dnetwork_id)"}],"source_content_type":"text/x-python","patch_set":16,"id":"b3ab056a_5962ad78","line":747,"range":{"start_line":747,"start_character":8,"end_line":747,"end_character":39},"updated":"2022-04-01 14:00:32.000000000","message":"Now used in neutron/db/external_net_db.py (just review note)","commit_id":"e4086862de1cadcb1347b65543ddaab159c81d9d"}],"neutron/quota/resource.py":[{"author":{"_account_id":21798,"name":"Bernard Cafarelli","email":"bcafarel@redhat.com","username":"bcafarel"},"change_message_id":"cbe6abd36193af1a93d14ef9348bd536b8f0dcdf","unresolved":true,"context_lines":[{"line_number":268,"context_line":"        # Update quota usage"},{"line_number":269,"context_line":"        return self._resync(context, project_id, in_use)"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    @db_api.CONTEXT_WRITER"},{"line_number":272,"context_line":"    def count_used(self, context, project_id, resync_usage\u003dTrue):"},{"line_number":273,"context_line":"        \"\"\"Returns the current usage count for the resource."},{"line_number":274,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"968f89a0_aea2f267","line":271,"range":{"start_line":271,"start_character":12,"end_line":271,"end_character":26},"updated":"2022-04-01 14:00:32.000000000","message":"Function name sounds like a reader one, but it may indeed update quotas, below in sync steps (review note)","commit_id":"e4086862de1cadcb1347b65543ddaab159c81d9d"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"dce1676f90ee677c88537e9ac6354c1863c5f390","unresolved":true,"context_lines":[{"line_number":268,"context_line":"        # Update quota usage"},{"line_number":269,"context_line":"        return self._resync(context, project_id, in_use)"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    @db_api.CONTEXT_WRITER"},{"line_number":272,"context_line":"    def count_used(self, context, project_id, resync_usage\u003dTrue):"},{"line_number":273,"context_line":"        \"\"\"Returns the current usage count for the resource."},{"line_number":274,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"a57a916e_7f92e09d","line":271,"range":{"start_line":271,"start_character":12,"end_line":271,"end_character":26},"in_reply_to":"968f89a0_aea2f267","updated":"2022-04-05 10:00:35.000000000","message":"We are updating the resource count in L304. We need to open a write context.","commit_id":"e4086862de1cadcb1347b65543ddaab159c81d9d"}]}
