From fd676a5846fce5da0eb5113a4329405c4690eb90 Mon Sep 17 00:00:00 2001 From: Brian Warner Date: Sun, 28 Aug 2011 23:32:46 -0700 Subject: [PATCH] Let Uploader retain History instead of passing it into upload(). Fixes #1079. This consistently records all immutable uploads in the Recent Uploads And Downloads page, regardless of code path. Previously, certain webapi upload operations (like PUT /uri/$DIRCAP/newchildname) failed to pass the History object and were left out. --- src/allmydata/client.py | 5 +++-- src/allmydata/immutable/upload.py | 9 +++++---- src/allmydata/nodemaker.py | 2 +- src/allmydata/test/test_web.py | 2 +- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/allmydata/client.py b/src/allmydata/client.py index b030867b..ed0ff9a0 100644 --- a/src/allmydata/client.py +++ b/src/allmydata/client.py @@ -278,7 +278,8 @@ class Client(node.Node, pollmixin.PollMixin): self.history = History(self.stats_provider) self.terminator = Terminator() self.terminator.setServiceParent(self) - self.add_service(Uploader(helper_furl, self.stats_provider)) + self.add_service(Uploader(helper_furl, self.stats_provider, + self.history)) self.init_stub_client() self.init_blacklist() self.init_nodemaker() @@ -513,4 +514,4 @@ class Client(node.Node, pollmixin.PollMixin): def upload(self, uploadable): uploader = self.getServiceNamed("uploader") - return uploader.upload(uploadable, history=self.get_history()) + return uploader.upload(uploadable) diff --git a/src/allmydata/immutable/upload.py b/src/allmydata/immutable/upload.py index 1a573184..013aca97 100644 --- a/src/allmydata/immutable/upload.py +++ b/src/allmydata/immutable/upload.py @@ -1409,9 +1409,10 @@ class Uploader(service.MultiService, log.PrefixingLogMixin): name = "uploader" URI_LIT_SIZE_THRESHOLD = 55 - def __init__(self, helper_furl=None, stats_provider=None): + def __init__(self, helper_furl=None, stats_provider=None, history=None): self._helper_furl = helper_furl self.stats_provider = stats_provider + self._history = history self._helper = None self._all_uploads = weakref.WeakKeyDictionary() # for debugging log.PrefixingLogMixin.__init__(self, facility="tahoe.immutable.upload") @@ -1447,7 +1448,7 @@ class Uploader(service.MultiService, log.PrefixingLogMixin): return (self._helper_furl, bool(self._helper)) - def upload(self, uploadable, history=None): + def upload(self, uploadable): """ Returns a Deferred that will fire with the UploadResults instance. """ @@ -1483,8 +1484,8 @@ class Uploader(service.MultiService, log.PrefixingLogMixin): d2.addCallback(lambda x: uploader.start(eu)) self._all_uploads[uploader] = None - if history: - history.add_upload(uploader.get_upload_status()) + if self._history: + self._history.add_upload(uploader.get_upload_status()) def turn_verifycap_into_read_cap(uploadresults): # Generate the uri from the verifycap plus the key. d3 = uploadable.get_encryption_key() diff --git a/src/allmydata/nodemaker.py b/src/allmydata/nodemaker.py index b70ed601..5d46d893 100644 --- a/src/allmydata/nodemaker.py +++ b/src/allmydata/nodemaker.py @@ -137,7 +137,7 @@ class NodeMaker: convergence = self.secret_holder.get_convergence_secret() packed = pack_children(children, None, deep_immutable=True) uploadable = Data(packed, convergence) - d = self.uploader.upload(uploadable, history=self.history) + d = self.uploader.upload(uploadable) d.addCallback(lambda results: self.create_from_cap(None, results.uri)) d.addCallback(self._create_dirnode) return d diff --git a/src/allmydata/test/test_web.py b/src/allmydata/test/test_web.py index b964c7fe..3a115ba8 100644 --- a/src/allmydata/test/test_web.py +++ b/src/allmydata/test/test_web.py @@ -69,7 +69,7 @@ class FakeNodeMaker(NodeMaker): class FakeUploader(service.Service): name = "uploader" - def upload(self, uploadable, history=None): + def upload(self, uploadable): d = uploadable.get_size() d.addCallback(lambda size: uploadable.read(size)) def _got_data(datav): -- 2.37.2