cancel streams on shutdown
This commit is contained in:
parent
89ebed570e
commit
50b51569a3
2 changed files with 20 additions and 5 deletions
|
@ -392,6 +392,11 @@ class Daemon(AuthJSONRPCServer):
|
|||
def _already_shutting_down(sig_num, frame):
|
||||
log.info("Already shutting down")
|
||||
|
||||
def _stop_streams(self):
|
||||
"""stop pending GetStream downloads"""
|
||||
for claim_id, stream in self.streams.iteritems():
|
||||
stream.cancel(reason="daemon shutdown")
|
||||
|
||||
def _shutdown(self):
|
||||
# ignore INT/TERM signals once shutdown has started
|
||||
signal.signal(signal.SIGINT, self._already_shutting_down)
|
||||
|
@ -399,6 +404,9 @@ class Daemon(AuthJSONRPCServer):
|
|||
|
||||
log.info("Closing lbrynet session")
|
||||
log.info("Status at time of shutdown: " + self.startup_status[0])
|
||||
|
||||
self._stop_streams()
|
||||
|
||||
self.looping_call_manager.shutdown()
|
||||
if self.analytics_manager:
|
||||
self.analytics_manager.shutdown()
|
||||
|
|
|
@ -151,9 +151,7 @@ class GetStream(object):
|
|||
|
||||
def fail(self, err):
|
||||
safe_stop_looping_call(self.checker)
|
||||
if not err.check(DownloadDataTimeout):
|
||||
raise err
|
||||
return DownloadCanceledError()
|
||||
raise err
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def _initialize(self, stream_info):
|
||||
|
@ -184,8 +182,7 @@ class GetStream(object):
|
|||
|
||||
log.info("Downloading lbry://%s (%s) --> %s", name, self.sd_hash[:6], self.download_path)
|
||||
self.finished_deferred = self.downloader.start()
|
||||
self.finished_deferred.addCallbacks(lambda result: self.finish(result, name),
|
||||
self.fail)
|
||||
self.finished_deferred.addCallbacks(lambda result: self.finish(result, name), self.fail)
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def start(self, stream_info, name):
|
||||
|
@ -215,3 +212,13 @@ class GetStream(object):
|
|||
raise err
|
||||
|
||||
defer.returnValue((self.downloader, self.finished_deferred))
|
||||
|
||||
def cancel(self, reason=None):
|
||||
if reason:
|
||||
msg = "download stream cancelled: %s" % reason
|
||||
else:
|
||||
msg = "download stream cancelled"
|
||||
if self.finished_deferred and not self.finished_deferred.called:
|
||||
self.finished_deferred.errback(DownloadCanceledError(msg))
|
||||
if self.data_downloading_deferred and not self.data_downloading_deferred.called:
|
||||
self.data_downloading_deferred.errback(DownloadCanceledError(msg))
|
||||
|
|
Loading…
Reference in a new issue