Skip to content

fix(onedrive): refresh token on drive quota query and retry only once - #3335

Open
Vurliy wants to merge 1 commit into
OpenListTeam:mainfrom
Vurliy:fix/onedrive-drive-token-retry
Open

Vurliy wants to merge 1 commit into
OpenListTeam:mainfrom
Vurliy:fix/onedrive-drive-token-retry

Conversation

@Vurliy

@Vurliy Vurliy commented Oct 31, 2026

Copy link
Copy Markdown

Summary / 摘要

English

Two small fixes to the token refresh in the OneDrive and OneDrive APP drivers.

  • Capacity query did not refresh an expired token. getDrive (used to report storage capacity) was the only request that passed noRetry, so it skipped the InvalidAuthenticationToken refresh. With an expired token, the capacity query failed until some other request happened to refresh the token. It now refreshes like every other request.
  • Retry after a refresh was unbounded. The retry after a successful refresh did not pass noRetry, so a token that stayed invalid recursed without limit. The request is now retried at most once.

No behavior change for requests that succeed, and no config or API change.

Split out of #2950.

中文

修复 OneDrive 和 OneDrive APP 驱动 token 刷新的两个小问题。

  • 容量查询不会刷新过期的 token。 getDrive(用于获取存储容量)是唯一传了 noRetry 的请求,因此跳过了 InvalidAuthenticationToken 时的刷新。token 过期后,容量查询会一直失败,直到其他请求碰巧刷新了 token。现在它和其他请求一样会刷新 token。
  • 刷新后的重试没有次数限制。 刷新成功后的重试没有传 noRetry,如果 token 刷新后仍然无效,会无限递归。现在最多只重试一次。

请求成功时行为不变,也没有配置或 API 变化。

从 #2950 中拆分出来。

  • 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 Issues / 关联 Issue

Relates to #2950

Testing / 测试

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

English

  • go vet and go build pass for drivers/onedrive and drivers/onedrive_app. These packages have no unit tests, and the change was not tested against a live OneDrive account.

中文

  • drivers/onedrive 和 drivers/onedrive_app 的 go vet、go build 通过。这两个包没有单元测试,本次改动未在真实的 OneDrive 账号上测试。

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.
    / 我已按适用情况使用 gofmt、go fmt 或 prettier 格式化变更代码。
  • 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 辅助内容。

Note: The getDrive change first appeared in a Codex-authored commit on #2950. The bounded retry was added during review with Claude. This PR is a single commit that includes Co-Authored-By.

说明:getDrive 的改动最早出现在 #2950 中一个由 Codex 生成的提交里;限制重试次数是在 Claude 辅助审查时加入的。本 PR 只有一个提交,带有 Co-Authored-By。

getDrive (used for storage capacity) was the only request that opted out
of the InvalidAuthenticationToken refresh, so an expired token made the
capacity query fail until another request happened to refresh it. Let it
refresh like every other request.

The retry after a refresh did not pass noRetry, so a token that stayed
invalid after a successful refresh recursed without bound. Retry once.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01U5btuswaVrY7Lp7FWWVEHh
@Vurliy

Vurliy commented Oct 31, 2026

Copy link
Copy Markdown
Author

@pikachuren @jyxjjj 这是从 #2950 拆分出来的 OneDrive 部分,方便时麻烦看一下,谢谢!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant