From c8145d580d0effe581075afc38671cb2b12e8d8b Mon Sep 17 00:00:00 2001 From: Kevan Date: Sat, 14 Jan 2012 12:57:06 -0800 Subject: [PATCH] Add _do_inquiry method; rework readonly check to use _do_inquiry. do_inquiry contacts a storage server (through its tracker instance) asking about existing shares, recording any that it finds to our internal state. In the current codebase, this will be used for the readonly check, but we'll be able to use it later to handle the inquiry tasks given to us by the peer selector. --- src/allmydata/immutable/upload.py | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/src/allmydata/immutable/upload.py b/src/allmydata/immutable/upload.py index c6324046..de6db370 100644 --- a/src/allmydata/immutable/upload.py +++ b/src/allmydata/immutable/upload.py @@ -329,27 +329,35 @@ class Tahoe2ServerSelector(log.PrefixingLogMixin): self._status.set_status("Contacting readonly servers to find " "any existing shares") for tracker in readonly_trackers: - assert isinstance(tracker, ServerTracker) - d = tracker.ask_about_existing_shares() - d.addBoth(self._handle_existing_response, tracker) + d = self._do_inquiry(tracker) ds.append(d) - self.num_servers_contacted += 1 - self.query_count += 1 - self.log("asking server %s for any existing shares" % - (tracker.get_name(),), level=log.NOISY) dl = defer.DeferredList(ds) dl.addCallback(lambda ign: self._loop()) return dl + def _do_inquiry(self, tracker): + """ + I ask a server for its existing shares, then update our internal state + according to the response. + """ + assert isinstance(tracker, ServerTracker) + d = tracker.ask_about_existing_shares() + d.addBoth(self._handle_existing_response, tracker) + self.num_servers_contacted += 1 + self.query_count += 1 + self.log("asking server %s for any existing shares" % + (tracker.get_name(),), level=log.NOISY) + return d + + def _handle_existing_response(self, res, tracker): """ - I handle responses to the queries sent by - Tahoe2ServerSelector._existing_shares. + I handle responses to the queries sent by _do_inquiry. """ serverid = tracker.get_serverid() if isinstance(res, failure.Failure): - self.log("%s got error during existing shares check: %s" + self.log("%s got error during inquiry: %s" % (tracker.get_name(), res), level=log.UNUSUAL) self.error_count += 1 self.bad_query_count += 1 -- 2.45.2