)]}'
{"swift/common/db.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"74650c9bc0ae5a0011d2a96ef0ca1176a6aac397","unresolved":false,"context_lines":[{"line_number":588,"context_line":"            try:"},{"line_number":589,"context_line":"                Timestamp(ts)"},{"line_number":590,"context_line":"            except ValueError:"},{"line_number":591,"context_line":"                self.logger.error(\"Invalid timestamp %r\", ts)"},{"line_number":592,"context_line":"                raise"},{"line_number":593,"context_line":""},{"line_number":594,"context_line":"        with self.get() as conn:"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_9845a373","line":591,"updated":"2020-07-06 18:38:24.000000000","message":"Might want to know which of the three timestamps it was.","commit_id":"3d8d430b587de9a1a071e36277bc1cb21af32851"}],"swift/common/db_replicator.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"74650c9bc0ae5a0011d2a96ef0ca1176a6aac397","unresolved":false,"context_lines":[{"line_number":446,"context_line":"                Timestamp(ts)"},{"line_number":447,"context_line":"            except ValueError:"},{"line_number":448,"context_line":"                self.logger.error(\"Invalid local timestamp %r\", ts)"},{"line_number":449,"context_line":"                raise"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"        sync_args_order \u003d (\u0027max_row\u0027, \u0027hash\u0027, \u0027id\u0027, \u0027created_at\u0027,"},{"line_number":452,"context_line":"                           \u0027put_timestamp\u0027, \u0027delete_timestamp\u0027, \u0027metadata\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_a66de89a","line":449,"updated":"2020-07-06 18:38:24.000000000","message":"Re-raising the ValueError leaves us with a pretty broad exception; I wonder if it\u0027d be better to pass in the broker, too, then call\n\n broker.quarantine(\u0027Invalid local timestamp ...\u0027)\n\nI feel like the sqlite3.DatabaseError that\u0027d get raised will feel more obviously right down in _replicate_object()","commit_id":"3d8d430b587de9a1a071e36277bc1cb21af32851"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"74650c9bc0ae5a0011d2a96ef0ca1176a6aac397","unresolved":false,"context_lines":[{"line_number":600,"context_line":"                                      logger\u003dself.logger)"},{"line_number":601,"context_line":"            broker.reclaim(now - self.reclaim_age,"},{"line_number":602,"context_line":"                           now - (self.reclaim_age * 2))"},{"line_number":603,"context_line":"            info \u003d broker.get_replication_info()"},{"line_number":604,"context_line":"            bpart \u003d self.ring.get_part("},{"line_number":605,"context_line":"                info[\u0027account\u0027], info.get(\u0027container\u0027))"},{"line_number":606,"context_line":"            if bpart !\u003d int(partition):"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_e78cfad8","line":603,"range":{"start_line":603,"start_character":26,"end_line":603,"end_character":46},"updated":"2020-07-06 18:38:24.000000000","message":"I wonder if we should be doing the sanity check in here instead -- the early return inside a loop on repl_nodes feels weird given that it\u0027s an entirely local problem.\n\nAnd if there\u0027s corruption in the timestamps, it casts doubt on *everything* in the info dict -- we don\u0027t even know if account/container values are right :-/","commit_id":"3d8d430b587de9a1a071e36277bc1cb21af32851"},{"author":{"_account_id":25251,"name":"Alexandre Lécuyer","email":"alexandre.lecuyer@corp.ovh.com","username":"alecuyer"},"change_message_id":"a6f916091a22058b5ccaa3144d9f1803346b47f5","unresolved":false,"context_lines":[{"line_number":600,"context_line":"                                      logger\u003dself.logger)"},{"line_number":601,"context_line":"            broker.reclaim(now - self.reclaim_age,"},{"line_number":602,"context_line":"                           now - (self.reclaim_age * 2))"},{"line_number":603,"context_line":"            info \u003d broker.get_replication_info()"},{"line_number":604,"context_line":"            bpart \u003d self.ring.get_part("},{"line_number":605,"context_line":"                info[\u0027account\u0027], info.get(\u0027container\u0027))"},{"line_number":606,"context_line":"            if bpart !\u003d int(partition):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_b8e93ee4","line":603,"range":{"start_line":603,"start_character":26,"end_line":603,"end_character":46},"in_reply_to":"bf51134e_e78cfad8","updated":"2020-09-08 09:07:01.000000000","message":"Is this patch maybe too focused on the original bug report (1823785), and there should be a higher level integrity check?","commit_id":"3d8d430b587de9a1a071e36277bc1cb21af32851"}],"swift/container/replicator.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"74650c9bc0ae5a0011d2a96ef0ca1176a6aac397","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    def _handle_sync_response(self, node, response, info, broker, http,"},{"line_number":67,"context_line":"                              different_region\u003dFalse):"},{"line_number":68,"context_line":"        if is_success(response.status):"},{"line_number":69,"context_line":"            remote_info \u003d json.loads(response.data.decode(\u0027ascii\u0027))"},{"line_number":70,"context_line":"            if incorrect_policy_index(info, remote_info):"},{"line_number":71,"context_line":"                status_changed_at \u003d Timestamp.now()"},{"line_number":72,"context_line":"                broker.set_storage_policy_index("}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_27339215","line":69,"updated":"2020-07-06 18:38:24.000000000","message":"I wonder if we should have our sanity check up here, right after we receive the remote info. IDK that I want to go making storage_policy_index decisions when we haven\u0027t checked for corruption yet...","commit_id":"3d8d430b587de9a1a071e36277bc1cb21af32851"}]}
