07th-mod / 07th-mod/python-patcher

Corrupted/broken .aria2 file can cause install to fail in an unrecoverable manner

Đang mở
#158 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
bug
Ngôn ngữ chính
JavaScript
Star
214
Fork
12
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

(NOTE: unconfirmed - I haven't tried reproducing this myself, but I'm pretty sure this is correct)

We currently have some resume functionality in the installer, provided by aria2. Aria2 uses a `.aria2` file to keep track of the download progress.

If the `.aria2` file becomes corrupted or unreadable, they won't be able to complete the install, even if they retry the whole install process, as aria2 won't automatically clear the `.aria2` file if it is corrupted.

You'll get an error like `errorCode=1 Failed to read from the segment file Umineko Question (Ch. 1-4) Downloads/Umineko-Graphics-1080p-v3.7z.aria2`

If this happens (with the current installer), the only way for the user to currently recover from this situation is to:
- Delete the corrupted `.aria2` file
- Delete the entire downloads folder (like `Umineko Question (Ch. 1-4) Downloads`)
- Start the installer again in another folder to reset all installer state

I'm not sure about how to tackle this (or if to leave it, and just put a note in the wiki). A couple options:

1. It would be nice to have a button which just resets all state related to the installer. We currently have a bit red "force full re-install" button which kind of does this, but this is only available if you already have performed an install - not on the first time you install the mod. So having a button which is always there which is like "clear all installer state and start install" might be a solution.
2. Aria2 may also have a flag which automatically deletes the `.aria2` file if it is corrupted, but I don't know if it exists.
3. We could try to detect this exception from aria2 in the installer itself, then delete the offending file.

Here is an example log file from a user who had this issue:

```log

<<< Status: 4% Downloading: 5.57 GB (total) DL Folder: [Umineko Question (Ch. 1-4) Downloads] URL: [https://07th-mod.com/Beato/1080p/Umineko-Graphics-1080p-v3.7z.meta4] (Attempt: 1/3) >>>
----- BEGIN EXECUTING COMMAND: [./aria2c --file-allocation=none --continue=true --retry-wait=5 -m 0 -x 8 -s 8 -j 1 --auto-file-renaming=false --allow-overwrite=true --follow-metalink=mem --check-integrity=true --disable-ipv6=true -d Umineko Question (Ch. 1-4) Downloads https://07th-mod.com/Beato/1080p/Umineko-Graphics-1080p-v3.7z.meta4] -----

07/11 15:27:46 [NOTICE]
Downloading 1 item(s)

07/11 15:27:46 [NOTICE]
Download complete: [MEMORY]
Umineko-Graphics-1080p-v3.7z.meta4

07/11 15:27:46 [ERROR]
Exception caught
Exception: [RequestGroup.cc:760]
errorCode=1 Download aborted.
-> [DefaultBtProgressInfoFile.cc:240]
errorCode=1 Failed to read from the segment file Umineko Question (Ch. 1-4) Downloads/Umineko-Graphics-1080p-v3.7z.aria2

07/11 15:27:46 [NOTICE]
Download GID#c22be35ae30d97a9 not complete: Umineko Question (Ch. 1-4) Downloads/Umineko-Graphics-1080p-v3.7z

Download Results:
gid |stat|avg speed |path/URI
======+====+===========+=======================================================
86b97b|OK | n/a|[MEMORY]
Umineko-Graphics-1080p-v3.7z.meta4
c22be3|ERR | n/a|Umineko Question (Ch. 1-4) Downloads/Umineko-Graphics-1080p-v3.7z

Status Legend:
(OK):download completed.(ERR):error occurred.

aria2 will resume download if the transfer is restarted.
If there are any errors, then see the log file. See '-l' option in help/man page for details.
--------------- EXECUTION FINISHED ---------------

ERROR - failed to download [https://07th-mod.com/Beato/1080p/Umineko-Graphics-1080p-v3.7z.meta4]. Trying again in 3 seconds...
<<< Status: 4% Downloading: 5.57 GB (total) DL Folder: [Umineko Question (Ch. 1-4) Downloads] URL: [https://07th-mod.com/Beato/1080p/Umineko-Graphics-1080p-v3.7z.meta4] (Attempt: 2/3) >>>
----- BEGIN EXECUTING COMMAND: [./aria2c --file-allocation=none --continue=true --retry-wait=5 -m 0 -x 8 -s 8 -j 1 --auto-file-renaming=false --allow-overwrite=true --follow-metalink=mem --check-integrity=true --disable-ipv6=true -d Umineko Question (Ch. 1-4) Downloads https://07th-mod.com/Beato/1080p/Umineko-Graphics-1080p-v3.7z.meta4] -----

07/11 15:27:49 [NOTICE]
Downloading 1 item(s)

07/11 15:27:50 [NOTICE]
Download complete: [MEMORY]
Umineko-Graphics-1080p-v3.7z.meta4

07/11 15:27:50 [ERROR]
Exception caught
Exception: [RequestGroup.cc:760]
errorCode=1 Download aborted.
-> [DefaultBtProgressInfoFile.cc:240]
errorCode=1 Failed to read from the segment file Umineko Question (Ch. 1-4) Downloads/Umineko-Graphics-1080p-v3.7z.aria2

07/11 15:27:50 [NOTICE]
Download GID#2b2ac9784f531ec6 not complete: Umineko Question (Ch. 1-4) Downloads/Umineko-Graphics-1080p-v3.7z

Download Results:
gid |stat|avg speed |path/URI
======+====+===========+=======================================================
dba9f2|OK | n/a|[MEMORY]
Umineko-Graphics-1080p-v3.7z.meta4
2b2ac9|ERR | n/a|Umineko Question (Ch. 1-4) Downloads/Umineko-Graphics-1080p-v3.7z

Status Legend:
(OK):download completed.(ERR):error occurred.

aria2 will resume download if the transfer is restarted.
If there are any errors, then see the log file. See '-l' option in help/man page for details.
--------------- EXECUTION FINISHED ---------------

ERROR - failed to download [https://07th-mod.com/Beato/1080p/Umineko-Graphics-1080p-v3.7z.meta4]. Trying again in 3 seconds...
<<< Status: 4% Downloading: 5.57 GB (total) DL Folder: [Umineko Question (Ch. 1-4) Downloads] URL: [https://07th-mod.com/Beato/1080p/Umineko-Graphics-1080p-v3.7z.meta4] (Attempt: 3/3) >>>
----- BEGIN EXECUTING COMMAND: [./aria2c --file-allocation=none --continue=true --retry-wait=5 -m 0 -x 8 -s 8 -j 1 --auto-file-renaming=false --allow-overwrite=true --follow-metalink=mem --check-integrity=true --disable-ipv6=true -d Umineko Question (Ch. 1-4) Downloads https://07th-mod.com/Beato/1080p/Umineko-Graphics-1080p-v3.7z.meta4] -----

07/11 15:27:53 [NOTICE]
Downloading 1 item(s)

07/11 15:27:53 [NOTICE]
Download complete: [MEMORY]
Umineko-Graphics-1080p-v3.7z.meta4

07/11 15:27:53 [ERROR]
Exception caught
Exception: [RequestGroup.cc:760]
errorCode=1 Download aborted.
-> [DefaultBtProgressInfoFile.cc:240]
errorCode=1 Failed to read from the segment file Umineko Question (Ch. 1-4) Downloads/Umineko-Graphics-1080p-v3.7z.aria2

07/11 15:27:53 [NOTICE]
Download GID#927551f0cd5ded18 not complete: Umineko Question (Ch. 1-4) Downloads/Umineko-Graphics-1080p-v3.7z

Download Results:
gid |stat|avg speed |path/URI
======+====+===========+=======================================================
393104|OK | n/a|[MEMORY]
Umineko-Graphics-1080p-v3.7z.meta4
927551|ERR | n/a|Umineko Question (Ch. 1-4) Downloads/Umineko-Graphics-1080p-v3.7z

Status Legend:
(OK):download completed.(ERR):error occurred.

aria2 will resume download if the transfer is restarted.
If there are any errors, then see the log file. See '-l' option in help/man page for details.
--------------- EXECUTION FINISHED ---------------

ERROR - failed to download [https://07th-mod.com/Beato/1080p/Umineko-Graphics-1080p-v3.7z.meta4]. Trying again in 3 seconds...
Exception in thread Thread-98:
Traceback (most recent call last):
File "D:\obj\windows-release\37win32_Release\msi_python\zip_win32\threading.py", line 926, in _bootstrap_inner
File "D:\obj\windows-release\37win32_Release\msi_python\zip_win32\threading.py", line 870, in run
File "D:\07th-mod_installer\httpGUI.py", line 667, in errorPrintingInstaller
installerFunction(args)
File "D:\07th-mod_installer\uminekoInstaller.py", line 135, in mainUmineko
downloaderAndExtractor.download()
File "D:\07th-mod_installer\common.py", line 940, in download
raise DownloadAndVerifyError("ERROR - Failed to download [{}] after {} attempts. Check aria2/7z in log for details. Installation Stopped".format(url, attempt + 1))
common.DownloadAndVerifyError: ERROR - Failed to download [https://07th-mod.com/Beato/1080p/Umineko-Graphics-1080p-v3.7z.meta4] after 3 attempts. Check aria2/7z in log for details. Installation Stopped
```

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Hướng nghiên cứu

Xem xét phần xử lý tải xuống của trình cài đặt trong common.py xung quanh dòng 940 và việc thực thi lệnh aria2. Nhật ký lỗi cho thấy tệp .aria2 bị hỏng. Cần tìm nơi aria2 được gọi và quyết định cách sửa chữa: hoặc phát hiện lỗi cụ thể và xóa tệp .aria2, hoặc thêm nút đặt lại hiển thị cho người dùng. Kiểm tra tài liệu aria2 để tìm các cờ xử lý tệp phân đoạn bị hỏng. Việc kiểm tra bao gồm mô phỏng tệp .aria2 bị hỏng và xác minh trình cài đặt phục hồi.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
python
Lĩnh vực
cli, tooling
Loại issue
Lỗi
Độ khó
3/5
Thời gian dự kiến
1-2 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
55/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.