From: Brian Warner <warner@lothar.com>
Date: Mon, 5 Oct 2009 20:02:52 +0000 (-0700)
Subject: immutable/checker.py: rearrange code a little bit, make it easier to follow
X-Git-Tag: trac-4100~31
X-Git-Url: https://git.rkrishnan.org/components/listings/status?a=commitdiff_plain;h=be951298336cebc4b632975073ae3ae7cbdc7d2f;p=tahoe-lafs%2Ftahoe-lafs.git

immutable/checker.py: rearrange code a little bit, make it easier to follow
---

diff --git a/src/allmydata/immutable/checker.py b/src/allmydata/immutable/checker.py
index d14f66df..83f06065 100644
--- a/src/allmydata/immutable/checker.py
+++ b/src/allmydata/immutable/checker.py
@@ -1,6 +1,6 @@
 from foolscap.api import DeadReferenceError, RemoteException
 from twisted.internet import defer
-from allmydata import hashtree
+from allmydata.hashtree import IncompleteHashTree
 from allmydata.check_results import CheckResults
 from allmydata.immutable import download
 from allmydata.uri import CHKFileVerifierURI
@@ -132,34 +132,20 @@ class Checker(log.PrefixingLogMixin):
         it will not errback -- it will fire normally with the indicated
         results."""
 
-        b = layout.ReadBucketProxy(bucket, serverid, self._verifycap.storage_index)
-        veup = download.ValidatedExtendedURIProxy(b, self._verifycap)
+        vcap = self._verifycap
+        b = layout.ReadBucketProxy(bucket, serverid, vcap.storage_index)
+        veup = download.ValidatedExtendedURIProxy(b, vcap)
         d = veup.start()
 
-        def _errb(f):
-            # We didn't succeed at fetching and verifying all the blocks of
-            # this share. Handle each reason for failure differently.
-
-            if f.check(DeadReferenceError):
-                return (False, sharenum, 'disconnect')
-            elif f.check(RemoteException):
-                return (False, sharenum, 'failure')
-            elif f.check(layout.ShareVersionIncompatible):
-                return (False, sharenum, 'incompatible')
-            elif f.check(layout.LayoutInvalid,
-                         layout.RidiculouslyLargeURIExtensionBlock,
-                         download.BadOrMissingHash,
-                         download.BadURIExtensionHashValue):
-                return (False, sharenum, 'corrupt')
-
-            # if it wasn't one of those reasons, re-raise the error
-            return f
-
         def _got_ueb(vup):
-            self._share_hash_tree = hashtree.IncompleteHashTree(self._verifycap.total_shares)
+            self._share_hash_tree = IncompleteHashTree(vcap.total_shares)
             self._share_hash_tree.set_hashes({0: vup.share_root_hash})
 
-            vrbp = download.ValidatedReadBucketProxy(sharenum, b, self._share_hash_tree, vup.num_segments, vup.block_size, vup.share_size)
+            vrbp = download.ValidatedReadBucketProxy(sharenum, b,
+                                                     self._share_hash_tree,
+                                                     vup.num_segments,
+                                                     vup.block_size,
+                                                     vup.share_size)
 
             ds = []
             for blocknum in range(vup.num_segments):
@@ -180,8 +166,26 @@ class Checker(log.PrefixingLogMixin):
 
             dl.addCallback(_cb)
             return dl
-
         d.addCallback(_got_ueb)
+
+        def _errb(f):
+            # We didn't succeed at fetching and verifying all the blocks of
+            # this share. Handle each reason for failure differently.
+
+            if f.check(DeadReferenceError):
+                return (False, sharenum, 'disconnect')
+            elif f.check(RemoteException):
+                return (False, sharenum, 'failure')
+            elif f.check(layout.ShareVersionIncompatible):
+                return (False, sharenum, 'incompatible')
+            elif f.check(layout.LayoutInvalid,
+                         layout.RidiculouslyLargeURIExtensionBlock,
+                         download.BadOrMissingHash,
+                         download.BadURIExtensionHashValue):
+                return (False, sharenum, 'corrupt')
+
+            # if it wasn't one of those reasons, re-raise the error
+            return f
         d.addErrback(_errb)
 
         return d