)]}'
{"swift/obj/ssync_receiver.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"51446de205a2d20c96b1bfcbd61e7a85f7083370","unresolved":false,"context_lines":[{"line_number":65,"context_line":"                            wanted; a value of False means the data is not in"},{"line_number":66,"context_line":"                            sync, nothing is wanted but the sender should keep"},{"line_number":67,"context_line":"                            the data and try again later; a value of True means"},{"line_number":68,"context_line":"                            the sender should send the data."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    The decoder for this line is"},{"line_number":71,"context_line":"    :py:func:`~swift.obj.ssync_sender.decode_wanted`"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a1a9d01_c56366dc","line":68,"updated":"2015-10-02 17:09:44.000000000","message":"I\u0027m not a big fan of this tri-state approach so if anyone can do better please do. I thought of passing an arg with string value [want|later|decline] but not in love with passing strings around either.","commit_id":"eb2ca27736269aaea107be815802231f55ef586f"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"51446de205a2d20c96b1bfcbd61e7a85f7083370","unresolved":false,"context_lines":[{"line_number":265,"context_line":"        try:"},{"line_number":266,"context_line":"            df \u003d self.diskfile_mgr.get_diskfile_from_hash("},{"line_number":267,"context_line":"                self.device, self.partition, object_hash,"},{"line_number":268,"context_line":"                self.policy)"},{"line_number":269,"context_line":"        except exceptions.DiskFileNotExist:"},{"line_number":270,"context_line":"            return {}"},{"line_number":271,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a1a9d01_057f1e67","line":268,"updated":"2015-10-02 17:09:44.000000000","message":"now we open whatever we have and then inspect the frag indexes below","commit_id":"eb2ca27736269aaea107be815802231f55ef586f"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"c8fbddde907fc8f76e373033b3bfbb4fc8ad41c8","unresolved":false,"context_lines":[{"line_number":502,"context_line":"                # non-primary fragment."},{"line_number":503,"context_line":"                subreq.headers[\u0027X-Backend-Ssync-Frag-Index\u0027] \u003d self.node_index"},{"line_number":504,"context_line":"            # else:"},{"line_number":505,"context_line":"                # Conflicts on handoff nodes should be avoided during the"},{"line_number":506,"context_line":"                # missing_check but may occur if another fragment has landed on"},{"line_number":507,"context_line":"                # the local node between missing_check and now. We don\u0027t want"},{"line_number":508,"context_line":"                # multiple fragments on handoffs, so if that happens we\u0027ll get"},{"line_number":509,"context_line":"                # a conflict on this subrequest."}],"source_content_type":"text/x-python","patch_set":12,"id":"7f287b81_5506ac88","line":506,"range":{"start_line":505,"start_character":18,"end_line":506,"end_character":31},"updated":"2017-08-23 20:24:26.000000000","message":"...unless we\u0027re in an upgrade, so the sender doesn\u0027t know how to use the \u0027later\u0027 we gave it... worth carving out an exception for HTTP_CONFLICT down around L516 like we did for HTTP_NOT_FOUND?","commit_id":"05ddd6f0f8581d7176f33dfeb0f0553ce2832467"}],"test/probe/test_reconstructor_revert.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"51446de205a2d20c96b1bfcbd61e7a85f7083370","unresolved":false,"context_lines":[{"line_number":100,"context_line":"            hasher.update(chunk)"},{"line_number":101,"context_line":"        return hasher.hexdigest()"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def print_node_fragments(self, fragments, title\u003d\u0027\u0027):"},{"line_number":104,"context_line":"        if not self.debug_find_fragments:"},{"line_number":105,"context_line":"            return"},{"line_number":106,"context_line":"        print title"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a1a9d01_e5dc6a48","line":103,"updated":"2015-10-02 17:09:44.000000000","message":"I found this helpful to convince myself what was happening, but maybe it does not belong upstream?","commit_id":"eb2ca27736269aaea107be815802231f55ef586f"}]}
