mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-06-19 07:48:11 +00:00
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:
@ -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)
|
||||||
|
@ -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()
|
||||||
|
@ -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
|
||||||
|
@ -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):
|
||||||
|
Reference in New Issue
Block a user