)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"de36edc76891473fb9a6b999028da68a5e162df3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"128dffee_44065cca","updated":"2025-07-29 13:08:42.000000000","message":"make sense. Thanks!","commit_id":"b11beca8c7965330f00bac7cddccc3402bdd25df"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"af1f3703cb3ed7ef643c102510bd855a83450150","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"5cf6770e_8bc669c1","updated":"2025-08-01 08:40:39.000000000","message":"Hey Mike and Daniel,\n\nAny reason to not having +W this patch?\nIf you are ok with this patch, please can you +W, this way we can consider the bug as fixed. Thanks in advance.","commit_id":"a068372896953fc5e18518ff9ab07ce9698c8806"}],"oslo_db/exception.py":[{"author":{"_account_id":11816,"name":"mike_mp@zzzcomputing.com","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"change_message_id":"32cfeeb2ced083d95db08f7f21b9f7997f5a7e68","unresolved":true,"context_lines":[{"line_number":178,"context_line":"        super().__init__(inner_exception)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"class DBConsistencyError(DBError):"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    \"\"\"Database consistency error."},{"line_number":184,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3779ce08_b3ad141e","line":181,"updated":"2025-07-16 14:47:52.000000000","message":"this seems to overlap with DBDeadlock.    When two transactions try the same operation and one of them \"wins\", that\u0027s what DBDeadlock is for.    We can liberalize the docstring for DBDeadlock to not refer an actual \"lock\".\n\nWe can leave this as a distinct exception and still satisfy that this is the same thing as what DBDeadlock does by making it a subclass of DBDeadlock.\n\n\nThis would then allow that all existing retry decorators that are retrying when a transaction fails due to concurrent write attempts on a row would automatically have this new condition included (maybe even \"partial-bug\" becomes \"bug\" here).","commit_id":"7c10c123f7c98a60c92fbc99de0d9b508f7a9df1"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"91a7b286798dae32c3ac8108dafa7b3ac047d873","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        super().__init__(inner_exception)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"class DBConsistencyError(DBError):"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    \"\"\"Database consistency error."},{"line_number":184,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"2a61b382_0a6d6bd2","line":181,"in_reply_to":"095ebbaa_77d56e4d","updated":"2025-07-18 08:28:18.000000000","message":"Done.","commit_id":"7c10c123f7c98a60c92fbc99de0d9b508f7a9df1"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"9dd03f58a683a5f03839c67d8134cefe288d6bb3","unresolved":true,"context_lines":[{"line_number":178,"context_line":"        super().__init__(inner_exception)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"class DBConsistencyError(DBError):"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    \"\"\"Database consistency error."},{"line_number":184,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"095ebbaa_77d56e4d","line":181,"in_reply_to":"3779ce08_b3ad141e","updated":"2025-07-17 13:45:28.000000000","message":"Good catch. Indeed, I think your observations are really pertinent. By doing that we would tackle this problem in one shot. Will submit a new patch set that follow your suggestions. Thanks Mike.","commit_id":"7c10c123f7c98a60c92fbc99de0d9b508f7a9df1"},{"author":{"_account_id":11816,"name":"mike_mp@zzzcomputing.com","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"change_message_id":"a94d575d98ff0a143cc57a703d449c6497c3c25d","unresolved":true,"context_lines":[{"line_number":192,"context_line":"    transaction."},{"line_number":193,"context_line":"    \"\"\""},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    def __init__(self, inner_exception\u003dNone):"},{"line_number":196,"context_line":"        super().__init__(inner_exception)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"2dbf917b_40792a29","line":195,"updated":"2025-07-29 13:11:10.000000000","message":"nit: constructor here not needed","commit_id":"b11beca8c7965330f00bac7cddccc3402bdd25df"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"a2d7fbeb7e353179adf49c5ecb67cdf33a9db1cd","unresolved":false,"context_lines":[{"line_number":192,"context_line":"    transaction."},{"line_number":193,"context_line":"    \"\"\""},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    def __init__(self, inner_exception\u003dNone):"},{"line_number":196,"context_line":"        super().__init__(inner_exception)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"214d0f0d_e63725e3","line":195,"in_reply_to":"2dbf917b_40792a29","updated":"2025-07-30 08:58:38.000000000","message":"Removed. This module would benefit from an uniformization work, some declare a constructor, some other no, but in all the majority of cases the scenario is identical, no constructors are needed. Will see if I can uniformize all the exceptions in a follow up patch.","commit_id":"b11beca8c7965330f00bac7cddccc3402bdd25df"}]}
