)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"1be635d0141c2651d7ac673c1705196fa9adfc9a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"639bbf09_4c7f9439","updated":"2025-06-18 14:37:35.000000000","message":"https://review.opendev.org/c/openstack/cinder/+/950927 implements a similar behavior that is slightly different - it loops with a small batch size instead of changing the command to do a small batch and then quit. This is motivated by users who experience db lock timeouts on huge database tables.\n\nI think patch 950927 solves the same problems but in a different way, making this patch not necessary.","commit_id":"73854393641996572696f852caa9834ce316de57"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"684a3b68a859bcab170dd4e2b5e9de6f4bd4a26f","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"dcad8a29_b2f79bd7","in_reply_to":"5ec256c9_dbb80bd2","updated":"2025-06-25 13:44:23.000000000","message":"Because the approach in 950927 doesn\u0027t require the user to run the command multiple times for it to work as expected, it maintains the current interface from the CLI.","commit_id":"73854393641996572696f852caa9834ce316de57"},{"author":{"_account_id":37049,"name":"Gökhan Kocak","display_name":"Gökhan Kocak","email":"goekhan.kocak@cloudandheat.com","username":"goekhanski"},"change_message_id":"b7d0b3566f859a7087a1de01a0edbbe19594fc64","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"5ec256c9_dbb80bd2","in_reply_to":"639bbf09_4c7f9439","updated":"2025-06-23 12:03:18.000000000","message":"\u003e This is motivated by users who experience db lock timeouts on huge database tables.\n\nThe same applies to this patch as written in the notes (\"We experienced deadlocks when purging via cinder-manage..\"). Why do you prefer patch 950927 and isn\u0027t a behavior that is consistent with nova preferable?","commit_id":"73854393641996572696f852caa9834ce316de57"},{"author":{"_account_id":37049,"name":"Gökhan Kocak","display_name":"Gökhan Kocak","email":"goekhan.kocak@cloudandheat.com","username":"goekhanski"},"change_message_id":"d59397c59681e02bf61b7a0133fa2b39cdab2c26","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"70b70f6a_bd89d424","in_reply_to":"dcad8a29_b2f79bd7","updated":"2025-06-26 07:03:37.000000000","message":"The user does not have to run the command multiple times. The given max_rows argument limits the rows deleted in one batch - until all the rows matching the given age_in_days are deleted.","commit_id":"73854393641996572696f852caa9834ce316de57"},{"author":{"_account_id":35111,"name":"Johannes Beisiegel","display_name":"jonnyb","email":"johannes.beisiegel@digits.schwarz","username":"jbe","status":"STACKIT"},"change_message_id":"dbd796ab06a207ad8e2970232662667fa1efd93e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"e1d62305_eb9b51d6","updated":"2025-07-10 13:58:14.000000000","message":"Doing it like nova seems reasonable. lgtm","commit_id":"350fa98c70af0a2b59e1f68053d1fd18bc1bd86f"},{"author":{"_account_id":37049,"name":"Gökhan Kocak","display_name":"Gökhan Kocak","email":"goekhan.kocak@cloudandheat.com","username":"goekhanski"},"change_message_id":"01c1ca54e166e87c6ee49f775f3497b0a64304e7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"2c7e1eee_73e1dd25","updated":"2025-07-14 07:27:34.000000000","message":"recheck cinder - failed test tempest.api.volume.admin.test_encrypted_volumes_extend.EncryptedVolumesExtendAttachedTest.test_extend_attached_encrypted_volume_luksv1","commit_id":"63346a1ad6d2571a11aebfd56271cdbc136923d6"}],"cinder/cmd/manage.py":[{"author":{"_account_id":35111,"name":"Johannes Beisiegel","display_name":"jonnyb","email":"johannes.beisiegel@digits.schwarz","username":"jbe","status":"STACKIT"},"change_message_id":"2a4b94379b6da34bace4285a2c22fb4df669b309","unresolved":true,"context_lines":[{"line_number":212,"context_line":"               \u0027to 1000. Note that this number is a soft limit and does not \u0027"},{"line_number":213,"context_line":"               \u0027include the corresponding rows, if any, that are removed \u0027"},{"line_number":214,"context_line":"               \u0027from the API database for deleted instances.\u0027)"},{"line_number":215,"context_line":"    def purge(self, age_in_days: int, max_rows: Optional[int] \u003d None) -\u003e None:"},{"line_number":216,"context_line":"        \"\"\"Purge deleted rows older than a given age from cinder tables.\"\"\""},{"line_number":217,"context_line":"        age_in_days \u003d int(age_in_days)"},{"line_number":218,"context_line":"        if age_in_days \u003c 0:"}],"source_content_type":"text/x-python","patch_set":9,"id":"29dfbe5b_cb13b73e","line":215,"range":{"start_line":215,"start_character":48,"end_line":215,"end_character":68},"updated":"2025-07-18 07:49:08.000000000","message":"Instead of optional this should have the default of 1000","commit_id":"63346a1ad6d2571a11aebfd56271cdbc136923d6"},{"author":{"_account_id":37049,"name":"Gökhan Kocak","display_name":"Gökhan Kocak","email":"goekhan.kocak@cloudandheat.com","username":"goekhanski"},"change_message_id":"437707b9236e7c7bc412c3ef062a76e5ea812fb7","unresolved":true,"context_lines":[{"line_number":212,"context_line":"               \u0027to 1000. Note that this number is a soft limit and does not \u0027"},{"line_number":213,"context_line":"               \u0027include the corresponding rows, if any, that are removed \u0027"},{"line_number":214,"context_line":"               \u0027from the API database for deleted instances.\u0027)"},{"line_number":215,"context_line":"    def purge(self, age_in_days: int, max_rows: Optional[int] \u003d None) -\u003e None:"},{"line_number":216,"context_line":"        \"\"\"Purge deleted rows older than a given age from cinder tables.\"\"\""},{"line_number":217,"context_line":"        age_in_days \u003d int(age_in_days)"},{"line_number":218,"context_line":"        if age_in_days \u003c 0:"}],"source_content_type":"text/x-python","patch_set":9,"id":"32dd3673_f3c5fc57","line":215,"range":{"start_line":215,"start_character":48,"end_line":215,"end_character":68},"in_reply_to":"29dfbe5b_cb13b73e","updated":"2025-11-06 07:32:22.000000000","message":"Before, I had implemented it like you suggested, but some Python check complained. So a few lines later I set max_rows to 1000 if its value is None.","commit_id":"63346a1ad6d2571a11aebfd56271cdbc136923d6"}],"cinder/db/sqlalchemy/api.py":[{"author":{"_account_id":35111,"name":"Johannes Beisiegel","display_name":"jonnyb","email":"johannes.beisiegel@digits.schwarz","username":"jbe","status":"STACKIT"},"change_message_id":"89bb366f2ed7f1616f4044caad3f2a4302040abc","unresolved":true,"context_lines":[{"line_number":8152,"context_line":"                result \u003d context.session.execute(stmt_delete)"},{"line_number":8153,"context_line":"                context.session.commit()"},{"line_number":8154,"context_line":"                deleted \u003d result.rowcount"},{"line_number":8155,"context_line":"                # we query and delete until there are now more matching"},{"line_number":8156,"context_line":"                # entries -\u003e next table"},{"line_number":8157,"context_line":"                if deleted \u003e 0:"},{"line_number":8158,"context_line":"                    total_deleted +\u003d deleted"}],"source_content_type":"text/x-python","patch_set":6,"id":"981736c8_d2c596ae","line":8155,"range":{"start_line":8155,"start_character":54,"end_line":8155,"end_character":57},"updated":"2025-07-10 13:48:32.000000000","message":"```suggestion\n                # we query and delete until there are no more matching\n```","commit_id":"98e4efaa382781df82ef7e0c2110d23261eb9ad7"},{"author":{"_account_id":35111,"name":"Johannes Beisiegel","display_name":"jonnyb","email":"johannes.beisiegel@digits.schwarz","username":"jbe","status":"STACKIT"},"change_message_id":"dbd796ab06a207ad8e2970232662667fa1efd93e","unresolved":false,"context_lines":[{"line_number":8152,"context_line":"                result \u003d context.session.execute(stmt_delete)"},{"line_number":8153,"context_line":"                context.session.commit()"},{"line_number":8154,"context_line":"                deleted \u003d result.rowcount"},{"line_number":8155,"context_line":"                # we query and delete until there are now more matching"},{"line_number":8156,"context_line":"                # entries -\u003e next table"},{"line_number":8157,"context_line":"                if deleted \u003e 0:"},{"line_number":8158,"context_line":"                    total_deleted +\u003d deleted"}],"source_content_type":"text/x-python","patch_set":6,"id":"f469eb80_a1ba36b5","line":8155,"range":{"start_line":8155,"start_character":54,"end_line":8155,"end_character":57},"in_reply_to":"981736c8_d2c596ae","updated":"2025-07-10 13:58:14.000000000","message":"Done","commit_id":"98e4efaa382781df82ef7e0c2110d23261eb9ad7"},{"author":{"_account_id":37049,"name":"Gökhan Kocak","display_name":"Gökhan Kocak","email":"goekhan.kocak@cloudandheat.com","username":"goekhanski"},"change_message_id":"01c1ca54e166e87c6ee49f775f3497b0a64304e7","unresolved":false,"context_lines":[{"line_number":8152,"context_line":"                result \u003d context.session.execute(stmt_delete)"},{"line_number":8153,"context_line":"                context.session.commit()"},{"line_number":8154,"context_line":"                deleted \u003d result.rowcount"},{"line_number":8155,"context_line":"                # we query and delete until there are now more matching"},{"line_number":8156,"context_line":"                # entries -\u003e next table"},{"line_number":8157,"context_line":"                if deleted \u003e 0:"},{"line_number":8158,"context_line":"                    total_deleted +\u003d deleted"}],"source_content_type":"text/x-python","patch_set":6,"id":"1cdfbfe9_dff7dbf7","line":8155,"range":{"start_line":8155,"start_character":54,"end_line":8155,"end_character":57},"in_reply_to":"981736c8_d2c596ae","updated":"2025-07-14 07:27:34.000000000","message":"Fix applied.","commit_id":"98e4efaa382781df82ef7e0c2110d23261eb9ad7"},{"author":{"_account_id":35111,"name":"Johannes Beisiegel","display_name":"jonnyb","email":"johannes.beisiegel@digits.schwarz","username":"jbe","status":"STACKIT"},"change_message_id":"2a4b94379b6da34bace4285a2c22fb4df669b309","unresolved":true,"context_lines":[{"line_number":8152,"context_line":"                result \u003d context.session.execute(stmt_delete)"},{"line_number":8153,"context_line":"                context.session.commit()"},{"line_number":8154,"context_line":"                deleted \u003d result.rowcount"},{"line_number":8155,"context_line":"                # we query and delete until there are now more matching"},{"line_number":8156,"context_line":"                # entries -\u003e next table"},{"line_number":8157,"context_line":"                if deleted \u003e 0:"},{"line_number":8158,"context_line":"                    total_deleted +\u003d deleted"}],"source_content_type":"text/x-python","patch_set":9,"id":"c1263814_0ec8a254","line":8155,"range":{"start_line":8155,"start_character":54,"end_line":8155,"end_character":57},"updated":"2025-07-18 07:49:08.000000000","message":"```suggestion\n                # we query and delete until there are no more matching\n```","commit_id":"63346a1ad6d2571a11aebfd56271cdbc136923d6"},{"author":{"_account_id":37049,"name":"Gökhan Kocak","display_name":"Gökhan Kocak","email":"goekhan.kocak@cloudandheat.com","username":"goekhanski"},"change_message_id":"437707b9236e7c7bc412c3ef062a76e5ea812fb7","unresolved":false,"context_lines":[{"line_number":8152,"context_line":"                result \u003d context.session.execute(stmt_delete)"},{"line_number":8153,"context_line":"                context.session.commit()"},{"line_number":8154,"context_line":"                deleted \u003d result.rowcount"},{"line_number":8155,"context_line":"                # we query and delete until there are now more matching"},{"line_number":8156,"context_line":"                # entries -\u003e next table"},{"line_number":8157,"context_line":"                if deleted \u003e 0:"},{"line_number":8158,"context_line":"                    total_deleted +\u003d deleted"}],"source_content_type":"text/x-python","patch_set":9,"id":"c90313d8_ae42cd25","line":8155,"range":{"start_line":8155,"start_character":54,"end_line":8155,"end_character":57},"in_reply_to":"c1263814_0ec8a254","updated":"2025-11-06 07:32:22.000000000","message":"Fix applied.","commit_id":"63346a1ad6d2571a11aebfd56271cdbc136923d6"}]}
