OpenClash icon indicating copy to clipboard operation
OpenClash copied to clipboard

[Bug] 下载超时后提示下载成功,并继续执行内核更新流程

Open trantuan-20048607 opened this issue 10 months ago • 12 comments

Verify Steps

  • [X] Tracker 我已经在 Issue Tracker 中找过我要提出的问题
  • [X] Branch 我知道 OpenClash 的 Dev 分支切换开关位于插件设置-版本更新中,或者我会手动下载并安装 Dev 分支的 OpenClash
  • [X] Latest 我已经使用最新 Dev 版本测试过,问题依旧存在
  • [X] Relevant 我知道 OpenClash 与 内核(Core)、控制面板(Dashboard)、在线订阅转换(Subconverter)等项目之间无直接关系,仅相互调用
  • [X] Definite 这确实是 OpenClash 出现的问题
  • [ ] Contributors 我有能力协助 OpenClash 开发并解决此问题
  • [ ] Meaningless 我提交的是无意义的催促更新或修复请求

OpenClash Version

v0.46.007-beta

Bug on Environment

Official OpenWrt

OpenWrt Version

OpenWrt 22.03.4

Bug on Platform

Linux-amd64(x86-64)

Describe the Bug

当前版本不会检查内核下载是否成功而始终执行更新流程,导致服务无法启动

To Reproduce

在管理面板中打断下载内核的 TCP 连接

OpenClash Log

2024-04-18 18:37:49 OpenClash 开始关闭...
2024-04-18 18:37:48 错误:无法获取 General 部分的转发端口设置, OpenClash 使用原始配置文件启动失败
2024-04-18 18:37:48 错误:无法获取 DNS 部分的运行模式设置, OpenClash 使用原始配置文件启动失败
2024-04-18 18:37:48 错误:无法获取 DNS 部分的监听端口设置, OpenClash 使用原始配置文件启动失败
2024-04-18 18:37:47 错误:OpenClash 启动失败,尝试使用原始配置文件启动...
2024-04-18 18:37:43 启动前调用内核测试配置文件...
2024-04-18 18:37:43 提示:检测到配置了 Meta 内核专属功能,调用 Meta 内核启动...
2024-04-18 18:37:43 错误:OpenClash 启动失败,尝试还原第三方规则并重新启动 Clash 主程序...
2024-04-18 18:37:43 第六步: 等待主程序下载外部文件...
2024-04-18 18:37:40 第五步: 检查内核启动状态...
2024-04-18 18:37:39 启动前调用内核测试配置文件...
2024-04-18 18:37:39 提示:检测到配置了 Meta 内核专属功能,调用 Meta 内核启动...
2024-04-18 18:37:39 第四步: 启动主程序...
2024-04-18 18:37:39 提示:开始运行自定义覆写脚本...
2024-04-18 18:37:39 提示:您为 SOCKS5/HTTP(S) 代理设置的账户密码为【root:********】
2024-04-18 18:37:39 第三步: 修改配置文件...
2024-04-18 18:37:39 提示:由于文件【 /etc/config/openclash 】被修改,暂停快速启动...
2024-04-18 18:37:38 第二步: 组件运行前检查...
2024-04-18 18:37:38 第一步: 获取配置...
2024-04-18 18:37:38 OpenClash 开始启动...
2024-04-18 18:37:38 第六步:删除 OpenClash 残留文件...
2024-04-18 18:37:35 第五步: 重启 Dnsmasq 程序...
2024-04-18 18:37:35 第四步: 关闭 Clash 主程序...
2024-04-18 18:37:35 第三步: 关闭 OpenClash 守护程序...
2024-04-18 18:37:35 第二步: 删除 OpenClash 防火墙规则...
2024-04-18 18:37:35 第一步: 备份当前策略组状态...
2024-04-18 18:37:35 OpenClash 开始关闭...
2024-04-18 18:37:35 OpenClash 重新启动中...
2024-04-18 18:37:35 【Meta】版本内核更新成功!
2024-04-18 18:37:35 【Meta】版本内核下载成功,开始更新...
2024-04-18 18:34:32【/tmp/clash_meta.tar.gz】下载失败:【curl: (28) Operation timed out after 60000 milliseconds with 7360628 out of 7585662 bytes received curl: (28) Operation timed out after 60001 milliseconds with 6162093 out of 7585662 bytes received curl: (28) Operation timed out after 60001 milliseconds with 6059361 out of 7585662 bytes received】

OpenClash Config

No response

Expected Behavior

下载失败后提示、停止更新流程并清理临时文件

Additional Context

No response

trantuan-20048607 avatar Apr 18 '24 10:04 trantuan-20048607

18:37:35 这个时间第一条就是下载成功啊。 看来你只看到了前面那条不成功的信息。

minisind avatar Apr 18 '24 13:04 minisind

18:37:35 这个时间第一条就是下载成功啊。 看来你只看到了前面那条不成功的信息。

下载后启动失败了,文件不完整;不修改配置的情况下手动下载后放进去就又能运行了

trantuan-20048607 avatar Apr 18 '24 13:04 trantuan-20048607

你上面那个日志,下载成功的信息应该不是你手动下载放进去的信息提示吧。

minisind avatar Apr 18 '24 13:04 minisind

你上面那个日志,下载成功的信息应该不是你手动下载放进去的信息提示吧。

所以我的意思是 OpenClash 不会判断下载文件有没有损坏,无视报错地显示下载成功,然后进行后续步骤。后续步骤在规则文件测试就失败了,因为文件根本运行不了;测试失败后还原配置文件自然也没用

trantuan-20048607 avatar Apr 18 '24 14:04 trantuan-20048607

18:37:35 这个时间第一条就是下载成功啊。 看来你只看到了前面那条不成功的信息。

今天又碰到了一次这个问题,下载失败信息的时间是开始下载的时间(下载持续了几分钟都没有完成导致超时),下载失败后立刻提示下载成功并更新了内核,导致无法上网 因为内核损坏后无法上网,目前只能后台镜像一个 OpenClash 的 GitHub 项目,然后手动提取出内核上传,非常麻烦

完整流程:

2024-04-21 10:10:35 第六步:删除 OpenClash 残留文件...
2024-04-21 10:10:33 第五步: 重启 Dnsmasq 程序...
2024-04-21 10:10:33 第四步: 关闭 Clash 主程序...
2024-04-21 10:10:33 第三步: 关闭 OpenClash 守护程序...
2024-04-21 10:10:33 第二步: 删除 OpenClash 防火墙规则...
2024-04-21 10:10:33 第一步: 备份当前策略组状态...
2024-04-21 10:10:33 OpenClash 开始关闭...
2024-04-21 10:10:32 错误:无法获取 General 部分的转发端口设置, OpenClash 使用原始配置文件启动失败
2024-04-21 10:10:32 错误:无法获取 DNS 部分的运行模式设置, OpenClash 使用原始配置文件启动失败
2024-04-21 10:10:32 错误:无法获取 DNS 部分的监听端口设置, OpenClash 使用原始配置文件启动失败
2024-04-21 10:10:31 错误:OpenClash 启动失败,尝试使用原始配置文件启动...
2024-04-21 10:10:27 启动前调用内核测试配置文件...
2024-04-21 10:10:27 提示:检测到配置了 Meta 内核专属功能,调用 Meta 内核启动...
2024-04-21 10:10:27 错误:OpenClash 启动失败,尝试还原第三方规则并重新启动 Clash 主程序...
2024-04-21 10:10:27 第六步: 等待主程序下载外部文件...
2024-04-21 10:10:24 第五步: 检查内核启动状态...
2024-04-21 10:10:23 启动前调用内核测试配置文件...
2024-04-21 10:10:23 提示:检测到配置了 Meta 内核专属功能,调用 Meta 内核启动...
2024-04-21 10:10:23 第四步: 启动主程序...
2024-04-21 10:10:23 提示:开始运行自定义覆写脚本...
2024-04-21 10:10:23 提示:您为 SOCKS5/HTTP(S) 代理设置的账户密码为【root:********】
2024-04-21 10:10:23 第三步: 修改配置文件...
2024-04-21 10:10:23 提示:由于文件【 /etc/config/openclash 】被修改,暂停快速启动...
2024-04-21 10:10:23 第二步: 组件运行前检查...
2024-04-21 10:10:22 第一步: 获取配置...
2024-04-21 10:10:22 OpenClash 开始启动...
2024-04-21 10:10:22 第六步:删除 OpenClash 残留文件...
2024-04-21 10:10:20 第五步: 重启 Dnsmasq 程序...
2024-04-21 10:10:20 第四步: 关闭 Clash 主程序...
2024-04-21 10:10:20 第三步: 关闭 OpenClash 守护程序...
2024-04-21 10:10:20 第二步: 删除 OpenClash 防火墙规则...
2024-04-21 10:10:20 第一步: 备份当前策略组状态...
2024-04-21 10:10:20 OpenClash 开始关闭...
2024-04-21 10:10:20 OpenClash 重新启动中...
2024-04-21 10:10:20 【Meta】版本内核更新成功!
2024-04-21 10:10:20 【Meta】版本内核下载成功,开始更新...
2024-04-21 10:07:17【/tmp/clash_meta.tar.gz】下载失败:【curl: (28) Operation timed out after 60000 milliseconds with 7495151 out of 7584650 bytes received curl: (28) Operation timed out after 60000 milliseconds with 5942661 out of 7584650 bytes received curl: (28) Operation timed out after 60000 milliseconds with 6349477 out of 7584650 bytes received】
2024-04-21 10:07:17 【Meta】版本内核正在下载,如下载失败请尝试手动下载并上传...
2024-04-21 10:07:16 提示:如果下载失败,您可以尝试在覆写设置 - 常规设置 - Github地址修改选项中设置CDN

trantuan-20048607 avatar Apr 21 '24 02:04 trantuan-20048607

18:37:35 这个时间第一条就是下载成功啊。 看来你只看到了前面那条不成功的信息。

今天又碰到了一次这个问题,下载失败信息的时间是开始下载的时间(下载持续了几分钟都没有完成导致超时),下载失败后立刻提示下载成功并更新了内核,导致无法上网 因为内核损坏后无法上网,目前只能后台镜像一个 OpenClash 的 GitHub 项目,然后手动提取出内核上传,非常麻烦

完整流程:

2024-04-21 10:10:35 第六步:删除 OpenClash 残留文件...
2024-04-21 10:10:33 第五步: 重启 Dnsmasq 程序...
2024-04-21 10:10:33 第四步: 关闭 Clash 主程序...
2024-04-21 10:10:33 第三步: 关闭 OpenClash 守护程序...
2024-04-21 10:10:33 第二步: 删除 OpenClash 防火墙规则...
2024-04-21 10:10:33 第一步: 备份当前策略组状态...
2024-04-21 10:10:33 OpenClash 开始关闭...
2024-04-21 10:10:32 错误:无法获取 General 部分的转发端口设置, OpenClash 使用原始配置文件启动失败
2024-04-21 10:10:32 错误:无法获取 DNS 部分的运行模式设置, OpenClash 使用原始配置文件启动失败
2024-04-21 10:10:32 错误:无法获取 DNS 部分的监听端口设置, OpenClash 使用原始配置文件启动失败
2024-04-21 10:10:31 错误:OpenClash 启动失败,尝试使用原始配置文件启动...
2024-04-21 10:10:27 启动前调用内核测试配置文件...
2024-04-21 10:10:27 提示:检测到配置了 Meta 内核专属功能,调用 Meta 内核启动...
2024-04-21 10:10:27 错误:OpenClash 启动失败,尝试还原第三方规则并重新启动 Clash 主程序...
2024-04-21 10:10:27 第六步: 等待主程序下载外部文件...
2024-04-21 10:10:24 第五步: 检查内核启动状态...
2024-04-21 10:10:23 启动前调用内核测试配置文件...
2024-04-21 10:10:23 提示:检测到配置了 Meta 内核专属功能,调用 Meta 内核启动...
2024-04-21 10:10:23 第四步: 启动主程序...
2024-04-21 10:10:23 提示:开始运行自定义覆写脚本...
2024-04-21 10:10:23 提示:您为 SOCKS5/HTTP(S) 代理设置的账户密码为【root:********】
2024-04-21 10:10:23 第三步: 修改配置文件...
2024-04-21 10:10:23 提示:由于文件【 /etc/config/openclash 】被修改,暂停快速启动...
2024-04-21 10:10:23 第二步: 组件运行前检查...
2024-04-21 10:10:22 第一步: 获取配置...
2024-04-21 10:10:22 OpenClash 开始启动...
2024-04-21 10:10:22 第六步:删除 OpenClash 残留文件...
2024-04-21 10:10:20 第五步: 重启 Dnsmasq 程序...
2024-04-21 10:10:20 第四步: 关闭 Clash 主程序...
2024-04-21 10:10:20 第三步: 关闭 OpenClash 守护程序...
2024-04-21 10:10:20 第二步: 删除 OpenClash 防火墙规则...
2024-04-21 10:10:20 第一步: 备份当前策略组状态...
2024-04-21 10:10:20 OpenClash 开始关闭...
2024-04-21 10:10:20 OpenClash 重新启动中...
2024-04-21 10:10:20 【Meta】版本内核更新成功!
2024-04-21 10:10:20 【Meta】版本内核下载成功,开始更新...
2024-04-21 10:07:17【/tmp/clash_meta.tar.gz】下载失败:【curl: (28) Operation timed out after 60000 milliseconds with 7495151 out of 7584650 bytes received curl: (28) Operation timed out after 60000 milliseconds with 5942661 out of 7584650 bytes received curl: (28) Operation timed out after 60000 milliseconds with 6349477 out of 7584650 bytes received】
2024-04-21 10:07:17 【Meta】版本内核正在下载,如下载失败请尝试手动下载并上传...
2024-04-21 10:07:16 提示:如果下载失败,您可以尝试在覆写设置 - 常规设置 - Github地址修改选项中设置CDN

openclash本身应该只下载,不做文档crc校验,自己到mihomo下载手动上传更新了 应该不是很麻烦,就是不是很方便了

yellowsavant avatar Apr 21 '24 02:04 yellowsavant

18:37:35 这个时间第一条就是下载成功啊。 看来你只看到了前面那条不成功的信息。

今天又碰到了一次这个问题,下载失败信息的时间是开始下载的时间(下载持续了几分钟都没有完成导致超时),下载失败后立刻提示下载成功并更新了内核,导致无法上网 因为内核损坏后无法上网,目前只能后台镜像一个 OpenClash 的 GitHub 项目,然后手动提取出内核上传,非常麻烦 完整流程:

2024-04-21 10:10:35 第六步:删除 OpenClash 残留文件...
2024-04-21 10:10:33 第五步: 重启 Dnsmasq 程序...
2024-04-21 10:10:33 第四步: 关闭 Clash 主程序...
2024-04-21 10:10:33 第三步: 关闭 OpenClash 守护程序...
2024-04-21 10:10:33 第二步: 删除 OpenClash 防火墙规则...
2024-04-21 10:10:33 第一步: 备份当前策略组状态...
2024-04-21 10:10:33 OpenClash 开始关闭...
2024-04-21 10:10:32 错误:无法获取 General 部分的转发端口设置, OpenClash 使用原始配置文件启动失败
2024-04-21 10:10:32 错误:无法获取 DNS 部分的运行模式设置, OpenClash 使用原始配置文件启动失败
2024-04-21 10:10:32 错误:无法获取 DNS 部分的监听端口设置, OpenClash 使用原始配置文件启动失败
2024-04-21 10:10:31 错误:OpenClash 启动失败,尝试使用原始配置文件启动...
2024-04-21 10:10:27 启动前调用内核测试配置文件...
2024-04-21 10:10:27 提示:检测到配置了 Meta 内核专属功能,调用 Meta 内核启动...
2024-04-21 10:10:27 错误:OpenClash 启动失败,尝试还原第三方规则并重新启动 Clash 主程序...
2024-04-21 10:10:27 第六步: 等待主程序下载外部文件...
2024-04-21 10:10:24 第五步: 检查内核启动状态...
2024-04-21 10:10:23 启动前调用内核测试配置文件...
2024-04-21 10:10:23 提示:检测到配置了 Meta 内核专属功能,调用 Meta 内核启动...
2024-04-21 10:10:23 第四步: 启动主程序...
2024-04-21 10:10:23 提示:开始运行自定义覆写脚本...
2024-04-21 10:10:23 提示:您为 SOCKS5/HTTP(S) 代理设置的账户密码为【root:********】
2024-04-21 10:10:23 第三步: 修改配置文件...
2024-04-21 10:10:23 提示:由于文件【 /etc/config/openclash 】被修改,暂停快速启动...
2024-04-21 10:10:23 第二步: 组件运行前检查...
2024-04-21 10:10:22 第一步: 获取配置...
2024-04-21 10:10:22 OpenClash 开始启动...
2024-04-21 10:10:22 第六步:删除 OpenClash 残留文件...
2024-04-21 10:10:20 第五步: 重启 Dnsmasq 程序...
2024-04-21 10:10:20 第四步: 关闭 Clash 主程序...
2024-04-21 10:10:20 第三步: 关闭 OpenClash 守护程序...
2024-04-21 10:10:20 第二步: 删除 OpenClash 防火墙规则...
2024-04-21 10:10:20 第一步: 备份当前策略组状态...
2024-04-21 10:10:20 OpenClash 开始关闭...
2024-04-21 10:10:20 OpenClash 重新启动中...
2024-04-21 10:10:20 【Meta】版本内核更新成功!
2024-04-21 10:10:20 【Meta】版本内核下载成功,开始更新...
2024-04-21 10:07:17【/tmp/clash_meta.tar.gz】下载失败:【curl: (28) Operation timed out after 60000 milliseconds with 7495151 out of 7584650 bytes received curl: (28) Operation timed out after 60000 milliseconds with 5942661 out of 7584650 bytes received curl: (28) Operation timed out after 60000 milliseconds with 6349477 out of 7584650 bytes received】
2024-04-21 10:07:17 【Meta】版本内核正在下载,如下载失败请尝试手动下载并上传...
2024-04-21 10:07:16 提示:如果下载失败,您可以尝试在覆写设置 - 常规设置 - Github地址修改选项中设置CDN

openclash本身应该只下载,不做文档crc校验,自己到mihomo下载手动上传更新了 应该不是很麻烦,就是不是很方便了

日志里能写出 curl 的返回值,应该往脚本里加一个判断就可以解决了

trantuan-20048607 avatar Apr 21 '24 02:04 trantuan-20048607

不会检查文件完整性,curl返回成功就是成功

vernesong avatar Apr 23 '24 05:04 vernesong

不会检查文件完整性,curl返回成功就是成功

但是这个日志有点自相矛盾,前脚提示下载失败后脚就下载成功,说明脚本应该比较方便实现在下载失败后停止更新并清理 作者可以考虑加一下,对终端没有梯子的家庭组网很重要(下载失败后所有设备失去梯子,无法从外网下载完整内核,我自己是镜像了一个 OpenClash 的 GitHub 项目从 core 分支提取的)

trantuan-20048607 avatar Apr 23 '24 09:04 trantuan-20048607

curl有重试功能啊

vernesong avatar Apr 23 '24 18:04 vernesong

image 你加CDN

vernesong avatar Apr 23 '24 18:04 vernesong

curl有重试功能啊

我自己测试是只要任何原因打断 curl 发起的那个连接就直接结束了,不会重试。

image 你加CDN

这个虽然可行,但之前加 CDN 之后有些订阅规则就没法更新了

trantuan-20048607 avatar Apr 27 '24 06:04 trantuan-20048607