)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"110f028a72a96f0eb044ba298e18fe2cd5a7ec71","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"cf0909cc_47703795","updated":"2021-11-22 16:17:11.000000000","message":"i\u0027m not sure about the deleted/expired class higharchy - they\u0027re the worst\n\n... but if we catch something we\u0027re not supposed we just loose some logging","commit_id":"f0e0b4eb1e90b4441b57621afc82c22776d16430"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"455d7e480af61a93fe63d1ceb2ad73b4d42c8b02","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"16ed19b7_93bb12b8","updated":"2021-11-24 12:39:38.000000000","message":"+A based on Clay\u0027s - this patchset was just rebased","commit_id":"092d409c4bbe542f6b9f3c217aa05ffd8669c815"}],"swift/obj/reconstructor.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"32fe57bc44d9e50e138d2b085e4ecc665b211d6c","unresolved":true,"context_lines":[{"line_number":988,"context_line":"                                          else df_mgr.commit_window)"},{"line_number":989,"context_line":"                df.purge(timestamps[\u0027ts_data\u0027], frag_index,"},{"line_number":990,"context_line":"                         nondurable_purge_delay)"},{"line_number":991,"context_line":"            except DiskFileNotExist:"},{"line_number":992,"context_line":"                # may have passed reclaim age since being sync\u0027d"},{"line_number":993,"context_line":"                pass"},{"line_number":994,"context_line":"            except DiskFileError:"}],"source_content_type":"text/x-python","patch_set":1,"id":"4ea4a911_cfcb4626","line":991,"range":{"start_line":991,"start_character":19,"end_line":991,"end_character":35},"updated":"2021-11-19 19:09:09.000000000","message":"What about subclasses? I\u0027m not sure DiskFileDeleted / DiskFileExpired should get the same treatment...\n\nSpeaking of, I\u0027m a little surprised this doesn\u0027t include open_expired\u003dTrue. Is it that the call to self.diskfile_cls() can\u0027t raise either of those, so we\u0027re only worried about the\n\n raise DiskFileNotExist()\n\nthat are actually visible directly in get_diskfile_from_hash()?","commit_id":"8b9222d7a68aad9207f0b1baa07d659d16ae71eb"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"9445a03a6f02026ec24190216b42977e98be9a98","unresolved":true,"context_lines":[{"line_number":988,"context_line":"                                          else df_mgr.commit_window)"},{"line_number":989,"context_line":"                df.purge(timestamps[\u0027ts_data\u0027], frag_index,"},{"line_number":990,"context_line":"                         nondurable_purge_delay)"},{"line_number":991,"context_line":"            except DiskFileNotExist:"},{"line_number":992,"context_line":"                # may have passed reclaim age since being sync\u0027d"},{"line_number":993,"context_line":"                pass"},{"line_number":994,"context_line":"            except DiskFileError:"}],"source_content_type":"text/x-python","patch_set":1,"id":"813d49b2_928821ab","line":991,"range":{"start_line":991,"start_character":19,"end_line":991,"end_character":35},"in_reply_to":"4ea4a911_cfcb4626","updated":"2021-11-22 16:15:01.000000000","message":"AFAICT DiskFileDeleted / DiskFileExpired are only raised if DiskFile.open() is called. Similarly, open_expired only has effect when open() is called.","commit_id":"8b9222d7a68aad9207f0b1baa07d659d16ae71eb"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"32fe57bc44d9e50e138d2b085e4ecc665b211d6c","unresolved":true,"context_lines":[{"line_number":989,"context_line":"                df.purge(timestamps[\u0027ts_data\u0027], frag_index,"},{"line_number":990,"context_line":"                         nondurable_purge_delay)"},{"line_number":991,"context_line":"            except DiskFileNotExist:"},{"line_number":992,"context_line":"                # may have passed reclaim age since being sync\u0027d"},{"line_number":993,"context_line":"                pass"},{"line_number":994,"context_line":"            except DiskFileError:"},{"line_number":995,"context_line":"                self.logger.exception("}],"source_content_type":"text/x-python","patch_set":1,"id":"3c6439f0_95cde76e","line":992,"range":{"start_line":992,"start_character":58,"end_line":992,"end_character":62},"updated":"2021-11-19 19:09:09.000000000","message":"Reverted, no?\n\nAnother possibility for how we got here: multiple reconstructors were running (say, one general background process and a targeted, operator-driven foreground process), both of which wanted to do the revert at approximately the same time.","commit_id":"8b9222d7a68aad9207f0b1baa07d659d16ae71eb"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"9445a03a6f02026ec24190216b42977e98be9a98","unresolved":true,"context_lines":[{"line_number":989,"context_line":"                df.purge(timestamps[\u0027ts_data\u0027], frag_index,"},{"line_number":990,"context_line":"                         nondurable_purge_delay)"},{"line_number":991,"context_line":"            except DiskFileNotExist:"},{"line_number":992,"context_line":"                # may have passed reclaim age since being sync\u0027d"},{"line_number":993,"context_line":"                pass"},{"line_number":994,"context_line":"            except DiskFileError:"},{"line_number":995,"context_line":"                self.logger.exception("}],"source_content_type":"text/x-python","patch_set":1,"id":"8b759d60_1c34c881","line":992,"range":{"start_line":992,"start_character":58,"end_line":992,"end_character":62},"in_reply_to":"3c6439f0_95cde76e","updated":"2021-11-22 16:15:01.000000000","message":"hehe - it\u0027s easy to forget that using ssync doesn\u0027t always imply sync\u0027ing\n\nack re alternative scenario","commit_id":"8b9222d7a68aad9207f0b1baa07d659d16ae71eb"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"32fe57bc44d9e50e138d2b085e4ecc665b211d6c","unresolved":true,"context_lines":[{"line_number":991,"context_line":"            except DiskFileNotExist:"},{"line_number":992,"context_line":"                # may have passed reclaim age since being sync\u0027d"},{"line_number":993,"context_line":"                pass"},{"line_number":994,"context_line":"            except DiskFileError:"},{"line_number":995,"context_line":"                self.logger.exception("},{"line_number":996,"context_line":"                    \u0027Unable to purge DiskFile (%r %r %r)\u0027,"},{"line_number":997,"context_line":"                    object_hash, timestamps[\u0027ts_data\u0027], frag_index)"}],"source_content_type":"text/x-python","patch_set":1,"id":"d0df7c63_b8b7e6ed","line":994,"range":{"start_line":994,"start_character":19,"end_line":994,"end_character":32},"updated":"2021-11-19 19:09:09.000000000","message":"What\u0027s left here? Is it just DiskFileDeviceUnavailable?","commit_id":"8b9222d7a68aad9207f0b1baa07d659d16ae71eb"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"9445a03a6f02026ec24190216b42977e98be9a98","unresolved":true,"context_lines":[{"line_number":991,"context_line":"            except DiskFileNotExist:"},{"line_number":992,"context_line":"                # may have passed reclaim age since being sync\u0027d"},{"line_number":993,"context_line":"                pass"},{"line_number":994,"context_line":"            except DiskFileError:"},{"line_number":995,"context_line":"                self.logger.exception("},{"line_number":996,"context_line":"                    \u0027Unable to purge DiskFile (%r %r %r)\u0027,"},{"line_number":997,"context_line":"                    object_hash, timestamps[\u0027ts_data\u0027], frag_index)"}],"source_content_type":"text/x-python","patch_set":1,"id":"cf8933ed_30312d01","line":994,"range":{"start_line":994,"start_character":19,"end_line":994,"end_character":32},"in_reply_to":"d0df7c63_b8b7e6ed","updated":"2021-11-22 16:15:01.000000000","message":"also DiskFileXattrNotSupported, DiskFileBadMetadataChecksum can be raised from the read_metadata function","commit_id":"8b9222d7a68aad9207f0b1baa07d659d16ae71eb"}]}
