From: Brian Warner Date: Tue, 29 Jan 2008 02:05:43 +0000 (-0700) Subject: offloaded: when uploading a file that failed to upload before, ask for the last byte... X-Git-Tag: allmydata-tahoe-0.8.0~212 X-Git-Url: https://git.rkrishnan.org/architecture.txt?a=commitdiff_plain;h=e14dcb92e27dac7f6f3a843f3378a1b7debdb800;p=tahoe-lafs%2Ftahoe-lafs.git offloaded: when uploading a file that failed to upload before, ask for the last byte of ciphertext, so the reader is prepared to give us the plaintext hashes --- diff --git a/src/allmydata/offloaded.py b/src/allmydata/offloaded.py index 7549a4e7..6cb9f98a 100644 --- a/src/allmydata/offloaded.py +++ b/src/allmydata/offloaded.py @@ -164,7 +164,16 @@ class CHKCiphertextFetcher(AskUntilSuccessMixin): if os.path.exists(self._encoding_file): self.log("ciphertext already present, bypassing fetch", level=log.UNUSUAL) - return self._done2() + # we'll still need the plaintext hashes (when + # LocalCiphertextReader.get_plaintext_hashtree_leaves() is + # called), and currently the easiest way to get them is to ask + # the sender for the last byte of ciphertext. That will provoke + # them into reading and hashing (but not sending) everything + # else. + have = os.stat(self._encoding_file)[stat.ST_SIZE] + d = self.call("read_encrypted", have-1, 1) + d.addCallback(lambda ignored: self._done2()) + return # first, find out how large the file is going to be d = self.call("get_size") @@ -256,6 +265,7 @@ class CHKCiphertextFetcher(AskUntilSuccessMixin): return self._done2() def _done2(self): + self.log("done2", level=log.NOISY) self._readers = [] self._done_observers.fire(None)