)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f1c19d0c2378bc6017486c48a0d26895eb059202","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Stephen Finucane \u003cstephenfin@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2023-10-27 17:24:17 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"WIP: db: Migrate \"share instance\", \"share replica\" APIs to enginefacade"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This will be rolled into [1] once I figure out what I\u0027m doing wrong"},{"line_number":10,"context_line":"there."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5038a84c_46794ffb","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":3},"updated":"2023-10-27 16:33:41.000000000","message":"Should really be `DNM`","commit_id":"c97d7b957593150b9c45595fd2433741ade5ad18"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"079c4e1c815c61b29d7bbc63cedb75b6c8369df9","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Stephen Finucane \u003cstephenfin@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2023-10-27 17:56:56 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"WIP: db: Migrate \"share instance\", \"share replica\" APIs to enginefacade"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This will be rolled into [1] once I figure out what I\u0027m doing wrong"},{"line_number":10,"context_line":"there."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"e8d5d959_f70a531f","line":7,"updated":"2023-10-31 12:17:55.000000000","message":"(delete)","commit_id":"852f5776de70fa77d6e94927b465120cf04672e9"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7aa062a7c8fe83066bb6d3bb1e4b711cf88bb052","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"fa54e03a_91e134f4","updated":"2023-10-27 16:31:02.000000000","message":"Will watch this. If it fails, that would suggest we need to add commits in the middle of the method.","commit_id":"c97d7b957593150b9c45595fd2433741ade5ad18"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"40293292c61b1610173c75857857f85a8dddb2aa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"3aef47f5_501ed07b","updated":"2023-10-28 00:36:10.000000000","message":"I\u0027ll look at this with some fresh eyes and try this patch locally too, to isolate what\u0027s going on..","commit_id":"852f5776de70fa77d6e94927b465120cf04672e9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0e4bcee13c0541b8b20f0235ef5c55260fa0d0af","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"c52aa1bf_d9ff3387","updated":"2023-11-02 14:36:12.000000000","message":"recheck assuming that the failure is intermittent since only one of the two jobs failed and we haven\u0027t done anything functional here","commit_id":"1c103e63ed99d33d493f7e1fc179d003e130a7ee"}],"manila/db/sqlalchemy/api.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7aa062a7c8fe83066bb6d3bb1e4b711cf88bb052","unresolved":false,"context_lines":[{"line_number":1908,"context_line":"def _share_instance_delete("},{"line_number":1909,"context_line":"    context, instance_id, need_to_update_usages\u003dFalse,"},{"line_number":1910,"context_line":"):"},{"line_number":1911,"context_line":"    _export_locations_update(context, instance_id, [], delete\u003dTrue)"},{"line_number":1912,"context_line":"    instance_ref \u003d _share_instance_get("},{"line_number":1913,"context_line":"        context, instance_id,"},{"line_number":1914,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":1,"id":"e4e78990_5c460ab6","line":1911,"updated":"2023-10-27 16:31:02.000000000","message":"A change in behavior: previously this didn\u0027t get a session argument so this would have resulted in a separate session being used.","commit_id":"c97d7b957593150b9c45595fd2433741ade5ad18"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7aa062a7c8fe83066bb6d3bb1e4b711cf88bb052","unresolved":false,"context_lines":[{"line_number":1911,"context_line":"    _export_locations_update(context, instance_id, [], delete\u003dTrue)"},{"line_number":1912,"context_line":"    instance_ref \u003d _share_instance_get("},{"line_number":1913,"context_line":"        context, instance_id,"},{"line_number":1914,"context_line":"    )"},{"line_number":1915,"context_line":"    is_replica \u003d instance_ref[\u0027replica_state\u0027] is not None"},{"line_number":1916,"context_line":"    instance_ref.soft_delete(session\u003dcontext.session, update_status\u003dTrue)"},{"line_number":1917,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"be442e32_72633311","line":1914,"range":{"start_line":1914,"start_character":4,"end_line":1914,"end_character":5},"updated":"2023-10-27 16:31:02.000000000","message":"whereas this *was* getting a `session` argument so it would have used the same session.","commit_id":"c97d7b957593150b9c45595fd2433741ade5ad18"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7aa062a7c8fe83066bb6d3bb1e4b711cf88bb052","unresolved":false,"context_lines":[{"line_number":1917,"context_line":""},{"line_number":1918,"context_line":"    share \u003d _share_get("},{"line_number":1919,"context_line":"        context, instance_ref[\u0027share_id\u0027],"},{"line_number":1920,"context_line":"    )"},{"line_number":1921,"context_line":"    if len(share.instances) \u003d\u003d 0:"},{"line_number":1922,"context_line":"        share_access_delete_all_by_share(context, share[\u0027id\u0027])"},{"line_number":1923,"context_line":"        context.session.query(models.ShareMetadata).filter_by("}],"source_content_type":"text/x-python","patch_set":1,"id":"3443c67c_52ae0edd","line":1920,"updated":"2023-10-27 16:31:02.000000000","message":"ditto, this *was* getting a `session` argument","commit_id":"c97d7b957593150b9c45595fd2433741ade5ad18"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5e6c380d128891d608bbcea261650247473a0b46","unresolved":false,"context_lines":[{"line_number":1919,"context_line":"        context, instance_ref[\u0027share_id\u0027],"},{"line_number":1920,"context_line":"    )"},{"line_number":1921,"context_line":"    if len(share.instances) \u003d\u003d 0:"},{"line_number":1922,"context_line":"        share_access_delete_all_by_share(context, share[\u0027id\u0027])"},{"line_number":1923,"context_line":"        context.session.query(models.ShareMetadata).filter_by("},{"line_number":1924,"context_line":"            share_id\u003dshare[\u0027id\u0027]).soft_delete()"},{"line_number":1925,"context_line":"        share.soft_delete(session\u003dcontext.session)"}],"source_content_type":"text/x-python","patch_set":1,"id":"03c2ae4f_8721f64b","line":1922,"updated":"2023-11-01 11:40:03.000000000","message":"this *was not* getting a session argument, hence a new session","commit_id":"c97d7b957593150b9c45595fd2433741ade5ad18"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5e6c380d128891d608bbcea261650247473a0b46","unresolved":false,"context_lines":[{"line_number":1926,"context_line":""},{"line_number":1927,"context_line":"    if need_to_update_usages:"},{"line_number":1928,"context_line":"        _update_share_instance_usages(context, share, instance_ref,"},{"line_number":1929,"context_line":"                                      is_replica\u003dis_replica)"},{"line_number":1930,"context_line":""},{"line_number":1931,"context_line":""},{"line_number":1932,"context_line":"def _set_instances_share_data(context, instances, session):"}],"source_content_type":"text/x-python","patch_set":1,"id":"c4073d8b_fcac2a64","line":1929,"updated":"2023-11-01 11:40:03.000000000","message":"Hmm, this was ultimately resulting in a new session also (since this call eventually results in a call to `quota_reserve`. However, since we\u0027re now wrapped there\u0027s a chance that we\u0027ll end up using a nested session. This seems like as good a candidate as any.","commit_id":"c97d7b957593150b9c45595fd2433741ade5ad18"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"941b60de49bd25ebfa9c2b7e51b00fcb79c4c20b","unresolved":true,"context_lines":[{"line_number":2026,"context_line":""},{"line_number":2027,"context_line":"################"},{"line_number":2028,"context_line":""},{"line_number":2029,"context_line":"def _share_replica_get_with_filters(context, share_id\u003dNone, replica_id\u003dNone,"},{"line_number":2030,"context_line":"                                    replica_state\u003dNone, status\u003dNone,"},{"line_number":2031,"context_line":"                                    with_share_server\u003dTrue, session\u003dNone):"},{"line_number":2032,"context_line":""},{"line_number":2033,"context_line":"    query \u003d model_query(context, models.ShareInstance, session\u003dsession,"},{"line_number":2034,"context_line":"                        read_deleted\u003d\"no\")"},{"line_number":2035,"context_line":""},{"line_number":2036,"context_line":"    if not context.is_admin:"},{"line_number":2037,"context_line":"        query \u003d query.join("},{"line_number":2038,"context_line":"            models.Share,"},{"line_number":2039,"context_line":"            models.ShareInstance.share_id \u003d\u003d models.Share.id).filter("},{"line_number":2040,"context_line":"            models.Share.project_id \u003d\u003d context.project_id)"},{"line_number":2041,"context_line":""},{"line_number":2042,"context_line":"    if share_id is not None:"},{"line_number":2043,"context_line":"        query \u003d query.filter(models.ShareInstance.share_id \u003d\u003d share_id)"},{"line_number":2044,"context_line":""},{"line_number":2045,"context_line":"    if replica_id is not None:"},{"line_number":2046,"context_line":"        query \u003d query.filter(models.ShareInstance.id \u003d\u003d replica_id)"},{"line_number":2047,"context_line":""},{"line_number":2048,"context_line":"    if replica_state is not None:"},{"line_number":2049,"context_line":"        query \u003d query.filter("},{"line_number":2050,"context_line":"            models.ShareInstance.replica_state \u003d\u003d replica_state)"},{"line_number":2051,"context_line":"    else:"},{"line_number":2052,"context_line":"        query \u003d query.filter(models.ShareInstance.replica_state.isnot(None))"},{"line_number":2053,"context_line":""},{"line_number":2054,"context_line":"    if status is not None:"},{"line_number":2055,"context_line":"        query \u003d query.filter(models.ShareInstance.status \u003d\u003d status)"},{"line_number":2056,"context_line":""},{"line_number":2057,"context_line":"    if with_share_server:"},{"line_number":2058,"context_line":"        query \u003d query.options(joinedload(\u0027share_server\u0027))"},{"line_number":2059,"context_line":""},{"line_number":2060,"context_line":"    return query"},{"line_number":2061,"context_line":""},{"line_number":2062,"context_line":""},{"line_number":2063,"context_line":"@require_context"}],"source_content_type":"text/x-python","patch_set":3,"id":"ac152c4d_6e0a20bd","line":2060,"range":{"start_line":2029,"start_character":0,"end_line":2060,"end_character":16},"updated":"2023-10-28 00:31:49.000000000","message":"I\u0027m a little confused, but this query is somehow failing and causing the tempest test failures... \n\nThe flow is as follows:\n\n1) The tempest test attempts to create a replica here: https://opendev.org/openstack/manila-tempest-plugin/src/commit/7b8882908b63b40cf72a85bac07a8036a1059620/manila_tempest_tests/tests/api/admin/test_quotas_negative.py#L498-L499\n\n2) The environment has two \"hosts\" in two different AZs.. The primary share is created on \"manila-zone-1\" AZ, and the replica is requested on \"manila-zone-0\"... a pretty simple request \n\n3) The scheduler fails to find a valid host to place the replica here; the only worthy candidate is filtered out: https://zuul.opendev.org/t/openstack/build/53ea482f174b4226978b576a90ae52e4/log/controller/logs/screen-m-sch.txt#1511-1514\n\n4) The scheduler filtering logic is to avoid any host containing an existing replica of the same share: https://opendev.org/openstack/manila/src/commit/1c44d9946012e78be451e317a021085bea7a1c98/manila/scheduler/filters/share_replication.py#L79-L82\n\n5) The \"existing replicas\" query is invoked here: https://opendev.org/openstack/manila/src/commit/1c44d9946012e78be451e317a021085bea7a1c98/manila/share/api.py#L834-L839\n\nThis has retrieved the wrong data and caused the eventual failure.. \n\n6) Here\u0027s the state of the share retrieved by the API prior to this failure:\n\nhttps://zuul.opendev.org/t/openstack/build/53ea482f174b4226978b576a90ae52e4/log/controller/logs/tempest_log.txt#9944-9948\n\nThis looks fine.. \n\n\nI wonder how this query is breaking when this patch isn\u0027t touching any of this code..","commit_id":"852f5776de70fa77d6e94927b465120cf04672e9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bc7ac90388b909c3f0a98273ff0680bfdac68d58","unresolved":true,"context_lines":[{"line_number":2026,"context_line":""},{"line_number":2027,"context_line":"################"},{"line_number":2028,"context_line":""},{"line_number":2029,"context_line":"def _share_replica_get_with_filters(context, share_id\u003dNone, replica_id\u003dNone,"},{"line_number":2030,"context_line":"                                    replica_state\u003dNone, status\u003dNone,"},{"line_number":2031,"context_line":"                                    with_share_server\u003dTrue, session\u003dNone):"},{"line_number":2032,"context_line":""},{"line_number":2033,"context_line":"    query \u003d model_query(context, models.ShareInstance, session\u003dsession,"},{"line_number":2034,"context_line":"                        read_deleted\u003d\"no\")"},{"line_number":2035,"context_line":""},{"line_number":2036,"context_line":"    if not context.is_admin:"},{"line_number":2037,"context_line":"        query \u003d query.join("},{"line_number":2038,"context_line":"            models.Share,"},{"line_number":2039,"context_line":"            models.ShareInstance.share_id \u003d\u003d models.Share.id).filter("},{"line_number":2040,"context_line":"            models.Share.project_id \u003d\u003d context.project_id)"},{"line_number":2041,"context_line":""},{"line_number":2042,"context_line":"    if share_id is not None:"},{"line_number":2043,"context_line":"        query \u003d query.filter(models.ShareInstance.share_id \u003d\u003d share_id)"},{"line_number":2044,"context_line":""},{"line_number":2045,"context_line":"    if replica_id is not None:"},{"line_number":2046,"context_line":"        query \u003d query.filter(models.ShareInstance.id \u003d\u003d replica_id)"},{"line_number":2047,"context_line":""},{"line_number":2048,"context_line":"    if replica_state is not None:"},{"line_number":2049,"context_line":"        query \u003d query.filter("},{"line_number":2050,"context_line":"            models.ShareInstance.replica_state \u003d\u003d replica_state)"},{"line_number":2051,"context_line":"    else:"},{"line_number":2052,"context_line":"        query \u003d query.filter(models.ShareInstance.replica_state.isnot(None))"},{"line_number":2053,"context_line":""},{"line_number":2054,"context_line":"    if status is not None:"},{"line_number":2055,"context_line":"        query \u003d query.filter(models.ShareInstance.status \u003d\u003d status)"},{"line_number":2056,"context_line":""},{"line_number":2057,"context_line":"    if with_share_server:"},{"line_number":2058,"context_line":"        query \u003d query.options(joinedload(\u0027share_server\u0027))"},{"line_number":2059,"context_line":""},{"line_number":2060,"context_line":"    return query"},{"line_number":2061,"context_line":""},{"line_number":2062,"context_line":""},{"line_number":2063,"context_line":"@require_context"}],"source_content_type":"text/x-python","patch_set":3,"id":"6af693b7_a6b297b4","line":2060,"range":{"start_line":2029,"start_character":0,"end_line":2060,"end_character":16},"in_reply_to":"7222b4c6_52771aca","updated":"2023-10-31 11:34:15.000000000","message":"What would this suggest? I had been working under the assumption that the issue here was that the deletion wasn\u0027t succeeding and was leaving stale resources around, but if what you\u0027re saying is true it seems more like things aren\u0027t being created in the first place? Maybe my initial assumption is correct and the create doesn\u0027t happen because of stale resources? I\u0027m very confused here... 😅","commit_id":"852f5776de70fa77d6e94927b465120cf04672e9"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"6218b15a7d995188d6eebc03dafb18408fd1d866","unresolved":true,"context_lines":[{"line_number":2026,"context_line":""},{"line_number":2027,"context_line":"################"},{"line_number":2028,"context_line":""},{"line_number":2029,"context_line":"def _share_replica_get_with_filters(context, share_id\u003dNone, replica_id\u003dNone,"},{"line_number":2030,"context_line":"                                    replica_state\u003dNone, status\u003dNone,"},{"line_number":2031,"context_line":"                                    with_share_server\u003dTrue, session\u003dNone):"},{"line_number":2032,"context_line":""},{"line_number":2033,"context_line":"    query \u003d model_query(context, models.ShareInstance, session\u003dsession,"},{"line_number":2034,"context_line":"                        read_deleted\u003d\"no\")"},{"line_number":2035,"context_line":""},{"line_number":2036,"context_line":"    if not context.is_admin:"},{"line_number":2037,"context_line":"        query \u003d query.join("},{"line_number":2038,"context_line":"            models.Share,"},{"line_number":2039,"context_line":"            models.ShareInstance.share_id \u003d\u003d models.Share.id).filter("},{"line_number":2040,"context_line":"            models.Share.project_id \u003d\u003d context.project_id)"},{"line_number":2041,"context_line":""},{"line_number":2042,"context_line":"    if share_id is not None:"},{"line_number":2043,"context_line":"        query \u003d query.filter(models.ShareInstance.share_id \u003d\u003d share_id)"},{"line_number":2044,"context_line":""},{"line_number":2045,"context_line":"    if replica_id is not None:"},{"line_number":2046,"context_line":"        query \u003d query.filter(models.ShareInstance.id \u003d\u003d replica_id)"},{"line_number":2047,"context_line":""},{"line_number":2048,"context_line":"    if replica_state is not None:"},{"line_number":2049,"context_line":"        query \u003d query.filter("},{"line_number":2050,"context_line":"            models.ShareInstance.replica_state \u003d\u003d replica_state)"},{"line_number":2051,"context_line":"    else:"},{"line_number":2052,"context_line":"        query \u003d query.filter(models.ShareInstance.replica_state.isnot(None))"},{"line_number":2053,"context_line":""},{"line_number":2054,"context_line":"    if status is not None:"},{"line_number":2055,"context_line":"        query \u003d query.filter(models.ShareInstance.status \u003d\u003d status)"},{"line_number":2056,"context_line":""},{"line_number":2057,"context_line":"    if with_share_server:"},{"line_number":2058,"context_line":"        query \u003d query.options(joinedload(\u0027share_server\u0027))"},{"line_number":2059,"context_line":""},{"line_number":2060,"context_line":"    return query"},{"line_number":2061,"context_line":""},{"line_number":2062,"context_line":""},{"line_number":2063,"context_line":"@require_context"}],"source_content_type":"text/x-python","patch_set":3,"id":"7222b4c6_52771aca","line":2060,"range":{"start_line":2029,"start_character":0,"end_line":2060,"end_character":16},"in_reply_to":"ac152c4d_6e0a20bd","updated":"2023-10-28 00:35:18.000000000","message":"an extension of (6):\n\nhttps://zuul.opendev.org/t/openstack/build/53ea482f174b4226978b576a90ae52e4/log/controller/logs/tempest_log.txt#9999-10003\n\n^ shows share instances associated with the share... that query (which is being modified in this patch) looks correct; and returns the right data","commit_id":"852f5776de70fa77d6e94927b465120cf04672e9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9ecc85a91eac81e268494e2bc1b5e98cc1833719","unresolved":true,"context_lines":[{"line_number":1912,"context_line":"        instance_ref.soft_delete(session\u003dsession, update_status\u003dTrue)"},{"line_number":1913,"context_line":"        share \u003d _share_get(context, instance_ref[\u0027share_id\u0027], session\u003dsession)"},{"line_number":1914,"context_line":"        if len(share.instances) \u003d\u003d 0:"},{"line_number":1915,"context_line":"            session.query(models.ShareAccessMapping).filter_by("},{"line_number":1916,"context_line":"                share_id\u003dshare[\u0027id\u0027],"},{"line_number":1917,"context_line":"            ).soft_delete()"},{"line_number":1918,"context_line":"            session.query(models.ShareMetadata).filter_by("},{"line_number":1919,"context_line":"                share_id\u003dshare[\u0027id\u0027],"},{"line_number":1920,"context_line":"            ).soft_delete()"}],"source_content_type":"text/x-python","patch_set":6,"id":"7379166c_cf4f7172","line":1917,"range":{"start_line":1915,"start_character":0,"end_line":1917,"end_character":0},"updated":"2023-11-02 10:23:55.000000000","message":"This is causing the CI failures. If I re-add the call to `share_access_delete_all_by_share` instead, things pass. However, `share_access_delete_all_by_share` is making the exact same call albeit with a new session. What on earth is going on here?","commit_id":"6407d3d66b9fdf6ff8d7be21333f4a7e31f001af"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e830de9e0a9cf6c9a89b5e9fcba442efc7040260","unresolved":false,"context_lines":[{"line_number":1912,"context_line":"        instance_ref.soft_delete(session\u003dsession, update_status\u003dTrue)"},{"line_number":1913,"context_line":"        share \u003d _share_get(context, instance_ref[\u0027share_id\u0027], session\u003dsession)"},{"line_number":1914,"context_line":"        if len(share.instances) \u003d\u003d 0:"},{"line_number":1915,"context_line":"            session.query(models.ShareAccessMapping).filter_by("},{"line_number":1916,"context_line":"                share_id\u003dshare[\u0027id\u0027],"},{"line_number":1917,"context_line":"            ).soft_delete()"},{"line_number":1918,"context_line":"            session.query(models.ShareMetadata).filter_by("},{"line_number":1919,"context_line":"                share_id\u003dshare[\u0027id\u0027],"},{"line_number":1920,"context_line":"            ).soft_delete()"}],"source_content_type":"text/x-python","patch_set":6,"id":"d0729c81_4d202c7d","line":1917,"range":{"start_line":1915,"start_character":0,"end_line":1917,"end_character":0},"in_reply_to":"7379166c_cf4f7172","updated":"2023-11-02 12:13:10.000000000","message":"Pulled out to a separate patch.","commit_id":"6407d3d66b9fdf6ff8d7be21333f4a7e31f001af"}]}
