Skip to content

fix(drivers/github_releases): skip broken repos instead of returning 500#2494

Draft
xrgzs wants to merge 1 commit into
OpenListTeam:mainfrom
xrgzs:fix/github
Draft

fix(drivers/github_releases): skip broken repos instead of returning 500#2494
xrgzs wants to merge 1 commit into
OpenListTeam:mainfrom
xrgzs:fix/github

Conversation

@xrgzs
Copy link
Copy Markdown
Member

@xrgzs xrgzs commented May 21, 2026

Summary / 摘要

When multiple repos are configured and one fails (404, rate limit, etc.), the driver now logs a warning and skips that repo instead of panicking with a nil pointer dereference that caused a 500 error for the entire storage. Added proper error propagation from GetRequest through RequestRelease/RequestReleases/GetOtherFile, and nil checks on all Release/Releases dereferences.

Instead of hiding broken repos entirely, still display them as directory entries in parent listings. Return an error only when the user navigates into a broken repo.

背景

挂载好多个仓库(如下),访问挂载的根目录, 报错 500,也没有报错信息。发现是 uv 有问题,删了 astral-sh 那两个就正常。说明 OpenList 没有跳过错误,在挂载多个仓库时,这样会使其他本来能访问的仓库也无法访问,体验不好。

frp:fatedier/frp
amlogic-s9xxx-armbian:ophub/amlogic-s9xxx-armbian
EasyTier:EasyTier/EasyTier
rclone:rclone/rclone
uv:astral-sh/uv
python-build-standalone:astral-sh/python-build-standalone
FFmpeg-Builds:KarinJS/FFmpeg-Builds
  • This PR has breaking changes.
    / 此 PR 包含破坏性变更。
  • This PR changes public API, config, storage format, or migration behavior.
    / 此 PR 修改了公开 API、配置、存储格式或迁移行为。
  • This PR requires corresponding changes in related repositories.
    / 此 PR 需要关联仓库同步修改。

Related repository PRs / 关联仓库 PR:

  • OpenList-Frontend:
  • OpenList-Docs:

Testing / 测试

  • go test ./...
  • Manual test / 手动测试:

AI 改的,还没测。

测试能够实现预期效果:

image image

Checklist / 检查清单

  • I have read CONTRIBUTING.
    / 我已阅读 CONTRIBUTING
  • I confirm this contribution follows the repository license, contribution policy, and code of conduct.
    / 我确认此贡献符合仓库许可证、贡献规范和行为准则。
  • I have formatted the changed code with gofmt, go fmt, or prettier where applicable.
    / 我已按适用情况使用 gofmtgo fmtprettier 格式化变更代码。
  • I have requested review from relevant maintainers or code owners where applicable.
    / 我已在适用情况下请求相关维护者或代码所有者审查。

AI Disclosure / AI 使用声明

  • This PR includes AI-assisted content.
    / 此 PR 包含 AI 辅助内容。

Tools used / 使用工具:

  • ChatGPT
  • Codex
  • GitHub Copilot
  • Claude
  • Gemini
  • Other (please specify) / 其他(请注明):

Usage scope / 使用范围:

  • Code generation / 代码生成

  • Refactoring / 重构

  • Documentation / 文档

  • Tests / 测试

  • Translation / 翻译

  • Review assistance / 审查辅助

  • I have reviewed and validated all AI-assisted content included in this PR.
    / 我已审核并验证此 PR 中的所有 AI 辅助内容。

  • I have ensured that all AI-assisted commits include Co-Authored-By attribution.
    / 我已确保所有 AI 辅助提交都包含 Co-Authored-By 归属信息。

  • I can reproduce all AI-assisted content included in this PR without any AI tools.
    / 我可以在没有任何 AI 工具的情况下重现此 PR 中包含的所有 AI 辅助内容。

@xrgzs xrgzs force-pushed the fix/github branch 5 times, most recently from bf70efb to a32c66c Compare May 25, 2026 05:07
When multiple repos are configured and one fails (404, rate limit, etc.),
the driver now logs a warning and skips that repo instead of panicking
with a nil pointer dereference that caused a 500 error for the entire
storage. Added proper error propagation from GetRequest through
RequestRelease/RequestReleases/GetOtherFile, and nil checks on all
Release/Releases dereferences.

Instead of hiding broken repos entirely, still display them as directory
entries in parent listings. Return an error only when the user navigates
into a broken repo.

Co-authored-by: Claude Code <noreply@anthropic.com>
Co-authored-by: Mimo <208276378+mimo@users.noreply.github.com>
@xrgzs xrgzs added the Module: Driver Driver-Related Issue/PR label Jun 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Module: Driver Driver-Related Issue/PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant