Ticket #755: 755-fix-for-review.diff

File 755-fix-for-review.diff, 4.4 KB (added by francois, at 2010-11-20T23:42:41Z)
  • src/allmydata/dirnode.py

    diff --git a/src/allmydata/dirnode.py b/src/allmydata/dirnode.py
    index 022a6e0..76f2dc9 100644
    a b class DeepChecker: 
    929929        if self._repair:
    930930            d = node.check_and_repair(self.monitor, self._verify, self._add_lease)
    931931            d.addCallback(self._results.add_check_and_repair, childpath)
     932            d.addErrback(self._results.add_check_and_repair, childpath)
    932933        else:
    933934            d = node.check(self.monitor, self._verify, self._add_lease)
    934935            d.addCallback(self._results.add_check, childpath)
     936            d.addErrback(self._results.add_check, childpath)
    935937        d.addCallback(lambda ignored: self._stats.add_node(node, childpath))
    936938        return d
    937939
  • src/allmydata/immutable/filenode.py

    diff --git a/src/allmydata/immutable/filenode.py b/src/allmydata/immutable/filenode.py
    index ed3785b..94c7d77 100644
    a b class CiphertextFileNode: 
    143143                    crr.post_repair_results = prr
    144144                    return crr
    145145                def _repair_error(f):
    146                     # as with mutable repair, I'm not sure if I want to pass
    147                     # through a failure or not. TODO
     146                    prr = CheckResults(cr.uri, cr.storage_index)
     147                    prr.data = copy.deepcopy(cr.data)
     148                    prr.set_healthy(False)
     149                    prr.set_recoverable(False)
     150                    prr.set_needs_rebalancing(False)
     151                    crr.post_repair_results = prr
     152
    148153                    crr.repair_successful = False
    149154                    crr.repair_failure = f
    150                     return f
     155                    return crr
     156
    151157                r = Repairer(self, storage_broker=sb, secret_holder=sh,
    152158                             monitor=monitor)
    153159                d = r.start()
  • src/allmydata/mutable/checker.py

    diff --git a/src/allmydata/mutable/checker.py b/src/allmydata/mutable/checker.py
    index e5d3c30..3efc75a 100644
    a b class MutableCheckAndRepairer(MutableChecker): 
    312312            self._fill_checker_results(repair_results.servermap, r)
    313313            self.cr_results.repair_results = repair_results # TODO?
    314314        def _repair_error(f):
    315             # I'm not sure if I want to pass through a failure or not.
     315            prr = CheckResults(cr.uri, cr.storage_index)
     316            prr.data = copy.deepcopy(cr.data)
     317            prr.set_healthy(False)
     318            prr.set_recoverable(False)
     319            prr.set_needs_rebalancing(False)
     320            self.cr_results.post_repair_results = prr
     321
    316322            self.cr_results.repair_successful = False
    317             self.cr_results.repair_failure = f # TODO?
    318             #self.cr_results.post_repair_results = ??
    319             return f
     323            self.cr_results.repair_failure = f
    320324        d.addCallbacks(_repair_finished, _repair_error)
    321325        return d
  • src/allmydata/scripts/tahoe_check.py

    diff --git a/src/allmydata/scripts/tahoe_check.py b/src/allmydata/scripts/tahoe_check.py
    index adb0ccc..e716eae 100644
    a b class DeepCheckAndRepairOutput(LineOnlyReceiver): 
    210210            self.repairs_attempted += 1
    211211            if crr["repair-successful"]:
    212212                self.repairs_successful += 1
     213
     214        path = d["path"]
     215        if not path:
     216            path = ["<root>"]
     217        # verbose means also print one line per file
    213218        if self.verbose:
    214             # verbose means also print one line per file
    215             path = d["path"]
    216             if not path:
    217                 path = ["<root>"]
    218219            # we don't seem to have a summary available, so build one
    219220            if was_healthy:
    220221                summary = "healthy"
    221222            else:
    222223                summary = "not healthy"
     224
    223225            print >>stdout, "%s: %s" % (quote_path(path), summary)
    224226
    225227        # always print out corrupt shares
    class DeepCheckAndRepairOutput(LineOnlyReceiver): 
    231233        # always print out repairs
    232234        if crr["repair-attempted"]:
    233235            if crr["repair-successful"]:
    234                 print >>stdout, " repair successful"
     236                print >>stdout, "%s repair successful" % quote_path(path)
    235237            else:
    236                 print >>stdout, " repair failed"
     238                print >>stdout, "%s repair failed" % quote_path(path)
    237239
    238240    def done(self):
    239241        if self.in_error: