From e4da61a05dc5c28876bb41bc02b088fc3c7da2aa Mon Sep 17 00:00:00 2001 From: Joseph Schorr Date: Tue, 12 Jan 2016 17:32:55 -0500 Subject: [PATCH] Fix piece hash calculation --- data/model/storage.py | 8 ++++++-- endpoints/v2/blob.py | 14 ++++++++++---- test/data/test.db | Bin 1134592 -> 1134592 bytes 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/data/model/storage.py b/data/model/storage.py index b6a542474..41eca2fd8 100644 --- a/data/model/storage.py +++ b/data/model/storage.py @@ -1,6 +1,6 @@ import logging -from peewee import JOIN_LEFT_OUTER, fn, SQL +from peewee import JOIN_LEFT_OUTER, fn, SQL, IntegrityError from data.model import (config, db_transaction, InvalidImageException, TorrentInfoDoesNotExist, DataModelException, _basequery) @@ -255,7 +255,11 @@ def get_storage_locations(uuid): def save_torrent_info(storage_object, piece_length, pieces): - TorrentInfo.create(storage=storage_object, piece_length=piece_length, pieces=pieces) + try: + TorrentInfo.create(storage=storage_object, piece_length=piece_length, pieces=pieces) + except IntegrityError: + # TorrentInfo already exists for this storage. + pass def get_torrent_info(blob): try: diff --git a/endpoints/v2/blob.py b/endpoints/v2/blob.py index 210e424f8..745adf79a 100644 --- a/endpoints/v2/blob.py +++ b/endpoints/v2/blob.py @@ -224,11 +224,17 @@ def _upload_chunk(namespace, repo_name, upload_uuid): input_fp = wrap_with_handler(input_fp, found.sha_state.update) + # Add a hasher for calculating SHA1s for torrents if this is the first chunk and/or we have + # already calculated hash data for the previous chunk(s). piece_hasher = None - # TODO remove this when all in-progress blob uploads reliably contain piece hashes - if start_offset == 0: - piece_hasher = PieceHasher(app.config['TORRENT_PIECE_SIZE'], start_offset, '', - resumablehashlib.sha1()) + if found.chunk_count == 0 or found.piece_sha_state: + initial_sha1_value = found.piece_sha_state or resumablehashlib.sha1() + initial_sha1_pieces_value = found.piece_hashes or '' + + piece_hasher = PieceHasher(app.config['TORRENT_PIECE_SIZE'], start_offset, + initial_sha1_pieces_value, + initial_sha1_value) + input_fp = wrap_with_handler(input_fp, piece_hasher.update) # If this is the first chunk and we're starting at the 0 offset, add a handler to gunzip the diff --git a/test/data/test.db b/test/data/test.db index e26e28a9b1da8f968bad8eb721f89980e8eb8dc7..1dfcb09e4c0676e4858a32e58a6ecf83c59ff6b3 100644 GIT binary patch delta 50277 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 b!kFokDjc?DJ*gy>eHD2$D&jaI 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