Changeset 5bae4a1 in trunk
- Timestamp:
- 2012-03-31T18:39:02Z (13 years ago)
- Branches:
- master
- Children:
- 922ed08c
- Parents:
- 2b8a312
- git-author:
- Brian Warner <warner@…> (2012-03-31 06:56:41)
- git-committer:
- Brian Warner <warner@…> (2012-03-31 18:39:02)
- Location:
- src/allmydata/mutable
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified src/allmydata/mutable/checker.py ¶
r2b8a312 r5bae4a1 4 4 from allmydata.check_results import CheckAndRepairResults, CheckResults 5 5 6 from allmydata.mutable.common import MODE_CHECK, CorruptShareError6 from allmydata.mutable.common import MODE_CHECK, MODE_WRITE, CorruptShareError 7 7 from allmydata.mutable.servermap import ServerMap, ServermapUpdater 8 8 from allmydata.mutable.retrieve import Retrieve # for verifying 9 9 10 10 class MutableChecker: 11 SERVERMAP_MODE = MODE_CHECK 11 12 12 13 def __init__(self, node, storage_broker, history, monitor): … … 27 28 # recoverability, etc, without verifying. 28 29 u = ServermapUpdater(self._node, self._storage_broker, self._monitor, 29 servermap, MODE_CHECK, add_lease=add_lease) 30 servermap, self.SERVERMAP_MODE, 31 add_lease=add_lease) 30 32 if self._history: 31 33 self._history.notify_mapupdate(u.get_status()) … … 242 244 243 245 class MutableCheckAndRepairer(MutableChecker): 246 SERVERMAP_MODE = MODE_WRITE # needed to get the privkey 247 244 248 def __init__(self, node, storage_broker, history, monitor): 245 249 MutableChecker.__init__(self, node, storage_broker, history, monitor) … … 265 269 return 266 270 self.cr_results.repair_attempted = True 267 d = self._node.repair(self.results )271 d = self._node.repair(self.results, monitor=self._monitor) 268 272 def _repair_finished(repair_results): 269 273 self.cr_results.repair_successful = repair_results.get_successful() -
TabularUnified src/allmydata/mutable/common.py ¶
r2b8a312 r5bae4a1 7 7 # creation 8 8 MODE_READ = "MODE_READ" 9 MODE_REPAIR = "MODE_REPAIR" # query all peers, get the privkey 9 10 10 11 class NotWriteableError(Exception): -
TabularUnified src/allmydata/mutable/filenode.py ¶
r2b8a312 r5bae4a1 309 309 # IRepairable 310 310 311 def repair(self, check_results, force=False ):311 def repair(self, check_results, force=False, monitor=None): 312 312 assert ICheckResults(check_results) 313 r = Repairer(self, check_results) 313 r = Repairer(self, check_results, self._storage_broker, 314 self._history, monitor) 314 315 d = r.start(force) 315 316 return d -
TabularUnified src/allmydata/mutable/publish.py ¶
r2b8a312 r5bae4a1 16 16 from foolscap.api import eventually, fireEventually 17 17 18 from allmydata.mutable.common import MODE_WRITE, MODE_CHECK, \18 from allmydata.mutable.common import MODE_WRITE, MODE_CHECK, MODE_REPAIR, \ 19 19 UncoordinatedWriteError, NotEnoughServersError 20 20 from allmydata.mutable.servermap import ServerMap … … 188 188 # serverlist computed by that process instead of computing our own. 189 189 assert self._servermap 190 assert self._servermap.get_last_update()[0] in (MODE_WRITE, MODE_CHECK )190 assert self._servermap.get_last_update()[0] in (MODE_WRITE, MODE_CHECK, MODE_REPAIR) 191 191 # we will push a version that is one larger than anything present 192 192 # in the grid, according to the servermap. … … 374 374 # serverlist computed by that process instead of computing our own. 375 375 if self._servermap: 376 assert self._servermap.get_last_update()[0] in (MODE_WRITE, MODE_CHECK )376 assert self._servermap.get_last_update()[0] in (MODE_WRITE, MODE_CHECK, MODE_REPAIR) 377 377 # we will push a version that is one larger than anything present 378 378 # in the grid, according to the servermap. -
TabularUnified src/allmydata/mutable/repairer.py ¶
r2b8a312 r5bae4a1 4 4 from allmydata.interfaces import IRepairResults, ICheckResults 5 5 from allmydata.mutable.publish import MutableData 6 from allmydata.mutable.common import MODE_REPAIR 7 from allmydata.mutable.servermap import ServerMap, ServermapUpdater 6 8 7 9 class RepairResults: … … 24 26 25 27 class Repairer: 26 def __init__(self, node, check_results ):28 def __init__(self, node, check_results, storage_broker, history, monitor): 27 29 self.node = node 28 30 self.check_results = ICheckResults(check_results) 29 31 assert check_results.storage_index == self.node.get_storage_index() 32 self._storage_broker = storage_broker 33 self._history = history 34 self._monitor = monitor 30 35 31 36 def start(self, force=False): … … 56 61 # bogus shares (bad sigs): replace the bad one with a good one 57 62 58 smap = self.check_results.get_servermap() 63 # first, update the servermap in MODE_REPAIR, which files all shares 64 # and makes sure we get the privkey. 65 u = ServermapUpdater(self.node, self._storage_broker, self._monitor, 66 ServerMap(), MODE_REPAIR) 67 if self._history: 68 self._history.notify_mapupdate(u.get_status()) 69 d = u.update() 70 d.addCallback(self._got_full_servermap, force) 71 return d 59 72 73 def _got_full_servermap(self, smap, force): 60 74 best_version = smap.best_recoverable_version() 61 75 if not best_version: -
TabularUnified src/allmydata/mutable/servermap.py ¶
r2b8a312 r5bae4a1 13 13 from pycryptopp.publickey import rsa 14 14 15 from allmydata.mutable.common import MODE_CHECK, MODE_ANYTHING, MODE_WRITE, MODE_READ,\16 CorruptShareError15 from allmydata.mutable.common import MODE_CHECK, MODE_ANYTHING, MODE_WRITE, \ 16 MODE_READ, MODE_REPAIR, CorruptShareError 17 17 from allmydata.mutable.layout import SIGNED_PREFIX_LENGTH, MDMFSlotReadProxy 18 18 … … 427 427 self._need_privkey = False 428 428 429 if mode == MODE_WRITEand not self._node.get_privkey():429 if mode in (MODE_WRITE, MODE_REPAIR) and not self._node.get_privkey(): 430 430 self._need_privkey = True 431 431 # check+repair: repair requires the privkey, so if we didn't happen … … 498 498 self.num_servers_to_query = k + self.EPSILON 499 499 500 if self.mode == MODE_CHECK:500 if self.mode in (MODE_CHECK, MODE_REPAIR): 501 501 # We want to query all of the servers. 502 502 initial_servers_to_query = list(full_serverlist) … … 1064 1064 return self._done() 1065 1065 1066 if self.mode == MODE_CHECK:1066 if self.mode == (MODE_CHECK, MODE_REPAIR): 1067 1067 # we used self._must_query, and we know there aren't any 1068 1068 # responses still waiting, so that means we must be done
Note: See TracChangeset
for help on using the changeset viewer.