[功能建议] Alist/OpenList 启动晚于 MediaWarp 时,AlistClient 初始化失败后增加自动重试机制 #119
Unanswered
WuLongMiTaoLaiYiDa
asked this question in
Q&A
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
[功能建议] Alist/OpenList 启动晚于 MediaWarp 时,AlistClient 初始化失败后增加自动重试机制
环境
v0.2.4http://192.168.31.10:6002http://192.168.31.10:8096问题现象
NAS 重启后,MediaWarp 与 OpenList 都由 Docker 自动启动。
如果 MediaWarp 启动得比 OpenList 更早,MediaWarp 初始化 AlistClient 时会访问:
此时可能出现:
或者:
之后 MediaWarp 本身仍然可以正常启动,容器状态也是
running。但是 AlistClient 没有注册成功,后续播放 AlistStrm 时会出现:
此时 OpenList 实际上已经正常启动并可以访问,但 MediaWarp 不会自动重新注册该 AlistClient。
手动重启 MediaWarp 后,AlistStrm 立即恢复正常。
稳定复现方式
可以不重启整台 NAS,直接模拟启动顺序:
当前临时解决方案
目前我在 Docker Compose 中给 MediaWarp 增加了启动前的 OpenList 健康检查:
已经实际测试:
OpenList 启动并通过
/api/me检测后,MediaWarp 会继续启动,并且 AlistStrm 可以正常工作。优化建议
建议 MediaWarp 内部对 AlistClient 初始化失败增加自动重试机制,而不是初始化阶段失败一次后就永久不再注册。
例如:
或者可以将初始化失败的 AlistClient 放入后台重试队列,周期性重新尝试初始化。
相比要求用户自行在 Docker Compose 中增加启动等待脚本,这种方式可以从 MediaWarp 内部提高容错能力。
这样不仅可以解决 NAS / Docker 启动顺序问题,也可以提高以下场景中的自恢复能力:
期望行为
即使 MediaWarp 启动时 OpenList 暂时不可用:
整个过程不需要用户手动重启 MediaWarp。
补充说明
目前已经通过 Docker 环境稳定复现:
同时,通过在 MediaWarp 启动前循环检测:
确认 OpenList 已经可访问后再执行
/MediaWarp,可以规避该问题。因此推测问题主要发生在 AlistClient 的初始化/注册生命周期:首次初始化失败以后缺少后续重试或重新注册机制。
衷心感谢作者的辛勤付出维护 MediaWarp,非常喜欢这个项目。
顺祝作者万事如意!
All reactions