Fixed Cancelled Downloads stuck in Download Queue.

- Also some minor Modifications.
This commit is contained in:
jaskaranSM 2019-10-22 18:20:47 +05:30
parent 6ed78411fc
commit fdb49ac62a
2 changed files with 14 additions and 6 deletions

View File

@ -43,6 +43,8 @@ class DownloadHelper:
# Waiting for the actual gid # Waiting for the actual gid
download = self.__get_download() download = self.__get_download()
while download.is_complete != True: # Check every few seconds while download.is_complete != True: # Check every few seconds
status_list = get_download_status_list()
index = get_download_index(status_list, self.__get_download().gid)
download = self.__get_download() download = self.__get_download()
if download.has_failed: if download.has_failed:
self.__listener.onDownloadError(download.error_message, status_list, index) self.__listener.onDownloadError(download.error_message, status_list, index)
@ -55,7 +57,7 @@ class DownloadHelper:
self.__listener.onDownloadProgress(get_download_status_list(), index) self.__listener.onDownloadProgress(get_download_status_list(), index)
except KillThreadException: except KillThreadException:
should_update = False should_update = False
sleep(DOWNLOAD_STATUS_UPDATE_INTERVAL) sleep(DOWNLOAD_STATUS_UPDATE_INTERVAL)
new_gid = self.__get_followed_download_gid() new_gid = self.__get_followed_download_gid()
with download_dict_lock: with download_dict_lock:
download_dict[self.__listener.message.message_id] = DownloadStatus(new_gid, download_dict[self.__listener.message.message_id] = DownloadStatus(new_gid,
@ -65,6 +67,8 @@ class DownloadHelper:
previous = None previous = None
download = self.__get_download() download = self.__get_download()
while not download.is_complete: while not download.is_complete:
status_list = get_download_status_list()
index = get_download_index(status_list, self.__get_download().gid)
if download.has_failed: if download.has_failed:
self.__listener.onDownloadError(self.__get_download().error_message, status_list, index) self.__listener.onDownloadError(self.__get_download().error_message, status_list, index)
return return
@ -72,8 +76,6 @@ class DownloadHelper:
self.__listener.onDownloadError("Download has been canceled", status_list, index) self.__listener.onDownloadError("Download has been canceled", status_list, index)
return return
if should_update: if should_update:
status_list = get_download_status_list()
index = get_download_index(status_list, self.__get_download().gid)
# TODO: Find a better way to differentiate between 2 list of objects # TODO: Find a better way to differentiate between 2 list of objects
progress_str_list = get_download_str() progress_str_list = get_download_str()
if progress_str_list != previous: if progress_str_list != previous:
@ -82,7 +84,7 @@ class DownloadHelper:
except KillThreadException: except KillThreadException:
should_update = False should_update = False
previous = progress_str_list previous = progress_str_list
sleep(DOWNLOAD_STATUS_UPDATE_INTERVAL)
download = self.__get_download() download = self.__get_download()
sleep(DOWNLOAD_STATUS_UPDATE_INTERVAL)
self.__listener.onDownloadComplete(status_list, index) self.__listener.onDownloadComplete(status_list, index)

View File

@ -47,6 +47,7 @@ class MirrorListener(listeners.MirrorListeners):
name = pathlib.PurePath(path).name name = pathlib.PurePath(path).name
with download_dict_lock: with download_dict_lock:
download_dict[self.uid].is_archiving = False download_dict[self.uid].is_archiving = False
LOGGER.info(f"Upload Name : {name}")
download_dict[self.uid].upload_name = name download_dict[self.uid].upload_name = name
gdrive = gdriveTools.GoogleDriveHelper(self) gdrive = gdriveTools.GoogleDriveHelper(self)
with download_dict_lock: with download_dict_lock:
@ -67,7 +68,12 @@ class MirrorListener(listeners.MirrorListeners):
except KeyError: except KeyError:
pass pass
with download_dict_lock: with download_dict_lock:
del download_dict[self.uid] LOGGER.info(f"Deleting {progress_status_list[index].name()} from download_dict.")
try:
del download_dict[self.uid]
except KeyError as e:
LOGGER.info(str(e))
pass
try: try:
fs_utils.clean_download(progress_status_list[index].path()) fs_utils.clean_download(progress_status_list[index].path())
except FileNotFoundError: except FileNotFoundError:
@ -79,7 +85,7 @@ class MirrorListener(listeners.MirrorListeners):
pass pass
def onUploadComplete(self, link: str, progress_status_list: list, index: int): def onUploadComplete(self, link: str, progress_status_list: list, index: int):
msg = f'<a href="{link}">{progress_status_list[index].name()}</a>' msg = f'<a href="{link}">{progress_status_list[index].name()}</a> ({progress_status_list[index].size()})'
with download_dict_lock: with download_dict_lock:
del download_dict[self.message.message_id] del download_dict[self.message.message_id]
try: try: