)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"974fb08a0158b14ebd147e506bf5d5c86972b946","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"fd7ae030_406db74f","updated":"2026-06-22 15:34:15.000000000","message":"Whenever we raise/catch \"Exception(\u0027database is locked\u0027)\" could we use sqlite3.OperationalError instead? That would better convey the intent.\n\nOther than that, I\u0027d love a review from Pranali as she\u0027s more knowledgeable than me on the topic of native threading.","commit_id":"0c4d3405fe450a54721fec5c6c7a93d4f7239a8a"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"4608a0d23e7d8add7fbcc0ead852875bcfbe5af1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"d14724da_c03eee4a","updated":"2026-06-19 13:43:54.000000000","message":"recheck pass 2","commit_id":"0c4d3405fe450a54721fec5c6c7a93d4f7239a8a"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"6f8d52e13347afbcd436c6791ce277a5ab4a3f16","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"dfc2092f_d2a074bd","updated":"2026-06-19 16:49:47.000000000","message":"recheck pass 3","commit_id":"0c4d3405fe450a54721fec5c6c7a93d4f7239a8a"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"70cfdc1bd262ec3bef26a2e0d0cadaa71380c459","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"d9424e1a_dc10c59c","updated":"2026-06-20 03:05:57.000000000","message":"recheck pass 4","commit_id":"0c4d3405fe450a54721fec5c6c7a93d4f7239a8a"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"0465ee5f5164bcd9a38e7d16c9f8de0acc7a2cca","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"2a8bb812_3e247881","updated":"2026-06-20 05:53:37.000000000","message":"recheck pass 5","commit_id":"0c4d3405fe450a54721fec5c6c7a93d4f7239a8a"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"f2a17198ac671b355543e332f4da66c081c3b75d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"d33c2b30_f161823f","updated":"2026-06-20 11:17:00.000000000","message":"recheck pass 6","commit_id":"0c4d3405fe450a54721fec5c6c7a93d4f7239a8a"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"8b5a88aa3eae0aa06179dfe80adbd86fee5fc862","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"49cb7463_6a0cd66d","updated":"2026-06-23 07:18:42.000000000","message":"Thanks for the patch! Added an inline concern.","commit_id":"8d29d94bdd1951ee70d48b13e5d7b92d5ce854af"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"fb5f6c5d58eeff85496e987b7a37c0e90bd3de17","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"86e3ca69_555741cb","updated":"2026-06-23 10:39:06.000000000","message":"Looks good now, Thank you !","commit_id":"978b32f868fa2e1bfb4625bd487d644fb6817139"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"f4f6e9b33906a9ef1768ac945595b46b8d80bf2a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"26e50a01_cd690f1e","updated":"2026-06-23 18:12:11.000000000","message":"recheck","commit_id":"978b32f868fa2e1bfb4625bd487d644fb6817139"}],"glance/common/utils.py":[{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"8b5a88aa3eae0aa06179dfe80adbd86fee5fc862","unresolved":true,"context_lines":[{"line_number":60,"context_line":"    while True:"},{"line_number":61,"context_line":"        try:"},{"line_number":62,"context_line":"            return func()"},{"line_number":63,"context_line":"        except sqlite3.OperationalError as exc:"},{"line_number":64,"context_line":"            if \u0027locked\u0027 not in str(exc).lower():"},{"line_number":65,"context_line":"                raise"},{"line_number":66,"context_line":"            if time.monotonic() \u003e\u003d deadline:"}],"source_content_type":"text/x-python","patch_set":5,"id":"e7fac5d2_bf6c9b90","line":63,"range":{"start_line":63,"start_character":8,"end_line":63,"end_character":47},"updated":"2026-06-23 07:18:42.000000000","message":"this only catches sqlite3.OperationalError, but task_repo.save() and image_repo.save() go through SQLAlchemy, which raises sqlalchemy.exc.OperationalError with exc.orig set to the underlying sqlite3.OperationalError. Since this outer error is not the same type, the retry may never run. Could the task stay stuck in processing even after we call task.fail()?\n\nSame issue at these call sites:","commit_id":"8d29d94bdd1951ee70d48b13e5d7b92d5ce854af"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"20c0e23511e435262d57807aecb3f5df93daaf64","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    while True:"},{"line_number":61,"context_line":"        try:"},{"line_number":62,"context_line":"            return func()"},{"line_number":63,"context_line":"        except sqlite3.OperationalError as exc:"},{"line_number":64,"context_line":"            if \u0027locked\u0027 not in str(exc).lower():"},{"line_number":65,"context_line":"                raise"},{"line_number":66,"context_line":"            if time.monotonic() \u003e\u003d deadline:"}],"source_content_type":"text/x-python","patch_set":5,"id":"aec65fc6_cbdac221","line":63,"range":{"start_line":63,"start_character":8,"end_line":63,"end_character":47},"in_reply_to":"e7fac5d2_bf6c9b90","updated":"2026-06-23 07:34:58.000000000","message":"Sounds good, initially I caught generic Exception for the same purpose but later when changed it to sqlite3.OperationalError I didn\u0027t considered SQLAlchemy flow at all. Making changes so that it will consider both now.","commit_id":"8d29d94bdd1951ee70d48b13e5d7b92d5ce854af"}]}
