)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"ec3c04cbcf6c911d9822ebd73d8666e48379d88c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"12b53a3b_f54d8f61","updated":"2026-10-14 07:47:15.000000000","message":"The issue and the fix are valid. Please see my comment about how it can be improved.","commit_id":"8992e1d32dfbde10e41b44960592d49c4f83a2b3"},{"author":{"_account_id":7102,"name":"Thomas Bechtold","email":"thomas.bechtold@chainguard.dev","username":"toabctl"},"change_message_id":"cbcfaf5c1c22505852cf618fa08696f0a9d0811a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"6e9b9aeb_8d5a5836","updated":"2026-10-13 06:23:18.000000000","message":"friendly ping. could somebody have a look please?","commit_id":"8992e1d32dfbde10e41b44960592d49c4f83a2b3"},{"author":{"_account_id":7102,"name":"Thomas Bechtold","email":"thomas.bechtold@chainguard.dev","username":"toabctl"},"change_message_id":"793d77b23968a563b1dacdd66261ca72e75ef641","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"ccb86eba_5347249b","updated":"2026-10-15 20:17:16.000000000","message":"@andr.kurilin@gmail.com thanks! Who could review this to get it merged?","commit_id":"9caf720ab31d3e4bf0f7d20bb9e5ab5938accdf4"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"25519dd3dada42d701db31bd954dd28d24625dd2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"a58ec90c_89d626c7","updated":"2026-10-14 14:28:17.000000000","message":"I submitted a follow up change to extend CI for catching such issues in future","commit_id":"9caf720ab31d3e4bf0f7d20bb9e5ab5938accdf4"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"99b94e4cb8c8eca80973385d1d705f174b3d54a3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"be6d840a_0340bad9","updated":"2026-10-14 13:57:31.000000000","message":"oops, I did not meant to resubmit this change","commit_id":"9caf720ab31d3e4bf0f7d20bb9e5ab5938accdf4"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"848a7d177a9180e4aebe49cd20f3d757e14a2176","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"c9174c83_ff81734e","in_reply_to":"ccb86eba_5347249b","updated":"2026-10-16 08:07:34.000000000","message":"As soon as https://review.opendev.org/c/openstack/rally/+/1008013/comment/0da11683_9de82cf9/ is resolved (db side filtering instead of client side) I will re-review and mrege if everything is ok","commit_id":"9caf720ab31d3e4bf0f7d20bb9e5ab5938accdf4"}],"rally/common/db/api.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"ec3c04cbcf6c911d9822ebd73d8666e48379d88c","unresolved":true,"context_lines":[{"line_number":703,"context_line":""},{"line_number":704,"context_line":"@with_session"},{"line_number":705,"context_line":"def env_delete_cascade(session, uuid):"},{"line_number":706,"context_line":"    # Delete task children first: backends that enforce foreign keys"},{"line_number":707,"context_line":"    # (e.g. MySQL) reject deleting tasks that still own subtasks."},{"line_number":708,"context_line":"    tasks \u003d session.query(models.Task.uuid).filter_by(env_uuid\u003duuid)"},{"line_number":709,"context_line":"    task_uuids \u003d [t.uuid for t in tasks]"},{"line_number":710,"context_line":"    if task_uuids:"},{"line_number":711,"context_line":"        session.query(models.WorkloadData).filter("},{"line_number":712,"context_line":"            models.WorkloadData.task_uuid.in_(task_uuids)"},{"line_number":713,"context_line":"        ).delete(synchronize_session\u003dFalse)"},{"line_number":714,"context_line":"        session.query(models.Workload).filter("},{"line_number":715,"context_line":"            models.Workload.task_uuid.in_(task_uuids)"},{"line_number":716,"context_line":"        ).delete(synchronize_session\u003dFalse)"},{"line_number":717,"context_line":"        session.query(models.Subtask).filter("},{"line_number":718,"context_line":"            models.Subtask.task_uuid.in_(task_uuids)"},{"line_number":719,"context_line":"        ).delete(synchronize_session\u003dFalse)"},{"line_number":720,"context_line":"        session.query(models.Tag).filter("},{"line_number":721,"context_line":"            models.Tag.uuid.in_(task_uuids),"},{"line_number":722,"context_line":"            models.Tag.type \u003d\u003d consts.TagType.TASK,"},{"line_number":723,"context_line":"        ).delete(synchronize_session\u003dFalse)"},{"line_number":724,"context_line":""},{"line_number":725,"context_line":"    for model in [models.Task, models.Verification, models.Platform]:"},{"line_number":726,"context_line":"        session.query(model).filter_by(env_uuid\u003duuid).delete()"}],"source_content_type":"text/x-python","patch_set":2,"id":"0da11683_9de82cf9","line":723,"range":{"start_line":706,"start_character":0,"end_line":723,"end_character":43},"updated":"2026-10-14 07:47:15.000000000","message":"Please do db-size filtering instead. On a small db, it doing tasks filtering should costs nothing and it would also work on big databasees, where current query may bump into query size limit due to long IN statement\n\n```suggestion\n    task_uuids \u003d sa.select(models.Task.uuid).where(\n        models.Task.env_uuid \u003d\u003d uuid\n    )\n    for model in [models.WorkloadData, models.Workload, models.Subtask]:\n        session.query(model).filter(\n            model.task_uuid.in_(task_uuids)\n        ).delete(synchronize_session\u003dFalse)\n\n    session.query(models.Tag).filter(\n        models.Tag.uuid.in_(task_uuids),\n        models.Tag.type \u003d\u003d consts.TagType.TASK,\n    ).delete(synchronize_session\u003dFalse)\n```","commit_id":"8992e1d32dfbde10e41b44960592d49c4f83a2b3"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"5976263f83ba1df322629965a04d89184aa4caaa","unresolved":false,"context_lines":[{"line_number":703,"context_line":""},{"line_number":704,"context_line":"@with_session"},{"line_number":705,"context_line":"def env_delete_cascade(session, uuid):"},{"line_number":706,"context_line":"    # Delete task children first: backends that enforce foreign keys"},{"line_number":707,"context_line":"    # (e.g. MySQL) reject deleting tasks that still own subtasks."},{"line_number":708,"context_line":"    tasks \u003d session.query(models.Task.uuid).filter_by(env_uuid\u003duuid)"},{"line_number":709,"context_line":"    task_uuids \u003d [t.uuid for t in tasks]"},{"line_number":710,"context_line":"    if task_uuids:"},{"line_number":711,"context_line":"        session.query(models.WorkloadData).filter("},{"line_number":712,"context_line":"            models.WorkloadData.task_uuid.in_(task_uuids)"},{"line_number":713,"context_line":"        ).delete(synchronize_session\u003dFalse)"},{"line_number":714,"context_line":"        session.query(models.Workload).filter("},{"line_number":715,"context_line":"            models.Workload.task_uuid.in_(task_uuids)"},{"line_number":716,"context_line":"        ).delete(synchronize_session\u003dFalse)"},{"line_number":717,"context_line":"        session.query(models.Subtask).filter("},{"line_number":718,"context_line":"            models.Subtask.task_uuid.in_(task_uuids)"},{"line_number":719,"context_line":"        ).delete(synchronize_session\u003dFalse)"},{"line_number":720,"context_line":"        session.query(models.Tag).filter("},{"line_number":721,"context_line":"            models.Tag.uuid.in_(task_uuids),"},{"line_number":722,"context_line":"            models.Tag.type \u003d\u003d consts.TagType.TASK,"},{"line_number":723,"context_line":"        ).delete(synchronize_session\u003dFalse)"},{"line_number":724,"context_line":""},{"line_number":725,"context_line":"    for model in [models.Task, models.Verification, models.Platform]:"},{"line_number":726,"context_line":"        session.query(model).filter_by(env_uuid\u003duuid).delete()"}],"source_content_type":"text/x-python","patch_set":2,"id":"29580f3c_72dd895b","line":723,"range":{"start_line":706,"start_character":0,"end_line":723,"end_character":43},"in_reply_to":"0da11683_9de82cf9","updated":"2026-10-27 18:36:28.000000000","message":"Fix applied.","commit_id":"8992e1d32dfbde10e41b44960592d49c4f83a2b3"}]}
