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.
This commit is contained in:
Brian Warner
2011-08-28 23:32:46 -07:00
parent 9756146d61
commit fd676a5846
4 changed files with 10 additions and 8 deletions

View File

@ -278,7 +278,8 @@ class Client(node.Node, pollmixin.PollMixin):
self.history = History(self.stats_provider) self.history = History(self.stats_provider)
self.terminator = Terminator() self.terminator = Terminator()
self.terminator.setServiceParent(self) 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_stub_client()
self.init_blacklist() self.init_blacklist()
self.init_nodemaker() self.init_nodemaker()
@ -513,4 +514,4 @@ class Client(node.Node, pollmixin.PollMixin):
def upload(self, uploadable): def upload(self, uploadable):
uploader = self.getServiceNamed("uploader") uploader = self.getServiceNamed("uploader")
return uploader.upload(uploadable, history=self.get_history()) return uploader.upload(uploadable)

View File

@ -1409,9 +1409,10 @@ class Uploader(service.MultiService, log.PrefixingLogMixin):
name = "uploader" name = "uploader"
URI_LIT_SIZE_THRESHOLD = 55 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._helper_furl = helper_furl
self.stats_provider = stats_provider self.stats_provider = stats_provider
self._history = history
self._helper = None self._helper = None
self._all_uploads = weakref.WeakKeyDictionary() # for debugging self._all_uploads = weakref.WeakKeyDictionary() # for debugging
log.PrefixingLogMixin.__init__(self, facility="tahoe.immutable.upload") 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)) 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. 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)) d2.addCallback(lambda x: uploader.start(eu))
self._all_uploads[uploader] = None self._all_uploads[uploader] = None
if history: if self._history:
history.add_upload(uploader.get_upload_status()) self._history.add_upload(uploader.get_upload_status())
def turn_verifycap_into_read_cap(uploadresults): def turn_verifycap_into_read_cap(uploadresults):
# Generate the uri from the verifycap plus the key. # Generate the uri from the verifycap plus the key.
d3 = uploadable.get_encryption_key() d3 = uploadable.get_encryption_key()

View File

@ -137,7 +137,7 @@ class NodeMaker:
convergence = self.secret_holder.get_convergence_secret() convergence = self.secret_holder.get_convergence_secret()
packed = pack_children(children, None, deep_immutable=True) packed = pack_children(children, None, deep_immutable=True)
uploadable = Data(packed, convergence) 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(lambda results: self.create_from_cap(None, results.uri))
d.addCallback(self._create_dirnode) d.addCallback(self._create_dirnode)
return d return d

View File

@ -69,7 +69,7 @@ class FakeNodeMaker(NodeMaker):
class FakeUploader(service.Service): class FakeUploader(service.Service):
name = "uploader" name = "uploader"
def upload(self, uploadable, history=None): def upload(self, uploadable):
d = uploadable.get_size() d = uploadable.get_size()
d.addCallback(lambda size: uploadable.read(size)) d.addCallback(lambda size: uploadable.read(size))
def _got_data(datav): def _got_data(datav):