download: use hierarchical logging

This commit is contained in:
Brian Warner 2007-11-19 19:07:10 -07:00
parent 3d046d6ac7
commit 869b690378
3 changed files with 43 additions and 11 deletions

View File

@ -141,6 +141,8 @@ class SimpleCHKFileVerifier(download.FileDownloader):
self._size = u.size
self._num_needed_shares = u.needed_shares
self.init_logging()
self._output = VerifyingOutput(self._size)
self._paused = False
self._stopped = False
@ -159,6 +161,18 @@ class SimpleCHKFileVerifier(download.FileDownloader):
"crypttext_hashtree": 0,
}
def init_logging(self):
self._log_prefix = prefix = idlib.b2a(self._storage_index)[:6]
num = self._client.log("SimpleCHKFileVerifier(%s): starting" % prefix)
self._log_number = num
def log(self, msg, parent=None):
if parent is None:
parent = self._log_number
return self._client.log("SimpleCHKFileVerifier(%s): %s"
% (self._log_prefix, msg),
parent=parent)
def start(self):
log.msg("starting download [%s]" % idlib.b2a(self._storage_index)[:6])

View File

@ -301,6 +301,8 @@ class FileDownloader:
self._size = u.size
self._num_needed_shares = u.needed_shares
self.init_logging()
if IConsumer.providedBy(downloadable):
downloadable.registerProducer(self, True)
self._downloadable = downloadable
@ -322,6 +324,18 @@ class FileDownloader:
"crypttext_hashtree": 0,
}
def init_logging(self):
self._log_prefix = prefix = idlib.b2a(self._storage_index)[:6]
num = self._client.log("FileDownloader(%s): starting" % prefix)
self._log_number = num
def log(self, msg, parent=None):
if parent is None:
parent = self._log_number
return self._client.log("FileDownloader(%s): %s" % (self._log_prefix,
msg),
parent=parent)
def pauseProducing(self):
if self._paused:
return
@ -334,11 +348,11 @@ class FileDownloader:
eventually(p.callback, None)
def stopProducing(self):
log.msg("Download.stopProducing")
self.log("Download.stopProducing")
self._stopped = True
def start(self):
log.msg("starting download [%s]" % idlib.b2a(self._storage_index)[:6])
self.log("starting download")
# first step: who should we download from?
d = defer.maybeDeferred(self._get_all_shareholders)
@ -440,7 +454,7 @@ class FileDownloader:
d.addCallback(lambda res: getattr(bucket, methname)(*args))
d.addCallback(validatorfunc, bucket)
def _bad(f):
log.msg("%s from vbucket %s failed: %s" % (name, bucket, f)) # WEIRD
self.log("WEIRD: %s from vbucket %s failed: %s" % (name, bucket, f))
if not sources:
raise NotEnoughPeersError("ran out of peers, last error was %s"
% (f,))
@ -588,7 +602,7 @@ class FileDownloader:
return res
def _download_segment(self, res, segnum):
log.msg("downloading seg#%d of %d (%d%%)"
self.log("downloading seg#%d of %d (%d%%)"
% (segnum, self._total_segments,
100.0 * segnum / self._total_segments))
# memory footprint: when the SegmentDownloader finishes pulling down
@ -622,7 +636,7 @@ class FileDownloader:
return d
def _download_tail_segment(self, res, segnum):
log.msg("downloading seg#%d of %d (%d%%)"
self.log("downloading seg#%d of %d (%d%%)"
% (segnum, self._total_segments,
100.0 * segnum / self._total_segments))
segmentdler = SegmentDownloader(self, segnum, self._num_needed_shares)
@ -647,7 +661,7 @@ class FileDownloader:
return d
def _done(self, res):
log.msg("download done [%s]" % idlib.b2a(self._storage_index)[:6])
self.log("download done")
self._output.close()
if self.check_crypttext_hash:
_assert(self._crypttext_hash == self._output.crypttext_hash,

View File

@ -14,6 +14,10 @@ class LostPeerError(Exception):
def flip_bit(good): # flips the last bit
return good[:-1] + chr(ord(good[-1]) ^ 0x01)
class FakeClient:
def log(self, *args, **kwargs):
pass
class FakeBucketWriterProxy:
implements(IStorageBucketWriter, IStorageBucketReader)
# these are used for both reading and writing
@ -330,7 +334,7 @@ class Roundtrip(unittest.TestCase):
size=file_size)
URI = u.to_string()
client = None
client = FakeClient()
target = download.Data()
fd = download.FileDownloader(client, URI, target)