Skip to content

refactor(drivers/139): update path handling, put for family/group - #2719

Merged
xrgzs merged 24 commits into
OpenListTeam:mainfrom
xrgzs:fix/139-family
Jul 22, 2026
Merged

refactor(drivers/139): update path handling, put for family/group#2719
xrgzs merged 24 commits into
OpenListTeam:mainfrom
xrgzs:fix/139-family

Conversation

@xrgzs

@xrgzs xrgzs commented Jul 4, 2026

Copy link
Copy Markdown
Member

Summary / 摘要

  1. 修复139家庭云无法新建文件夹、移动、重命名
  2. 优化路径处理
  3. 重构为基于StreamSectionReader的上传,支持分片重试
  4. 支持家庭云、共享群秒传
  5. 家庭云、共享群使用新个人云的上传方式
  6. 增加「使用旧版本流式上传」选项(家庭云、共享群)

说明:

官方网页版家庭云/共享群的上传方法已经改成与(新)个人云的一致,只是域名不同,已预留API URL地址请求函数,但老方法仍能上传,暂未实现新方法。 实测老方法上传大文件会有问题,上传速度可能不如新方法。 故统一为新方法。新方法支持秒传,但不支持流式,因此添加开关,允许用户回退到「旧版本的流式上传」。

出现这个问题是官方家庭云改用 root:/ 前缀,之前不会拼接 root,故产生此问题。由于相关字段中包含 ID,因此使用拼接方法,不将ID直接改为Path,降低迁移成本。

目前官方共享群未使用 root:/ 前缀,后续如果改了,直接改 dirPath 函数即可。

  • 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:

Related Issues / 关联 Issue

Testing / 测试

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

家庭云 上传 复制 移动 删除 重命名 新建文件夹,根目录和子目录均无问题

修改到的新个人云测试上传无问题

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 added bug Module: Driver Driver-Related Issue/PR labels Jul 4, 2026
@xrgzs
xrgzs force-pushed the fix/139-family branch 5 times, most recently from e109087 to d1c2368 Compare July 6, 2026 13:02
@xrgzs xrgzs changed the title fix(drivers/139): update mkdir, move, rename, put for family fix(drivers/139): update path handling, put for family Jul 6, 2026
@xrgzs
xrgzs marked this pull request as ready for review July 6, 2026 13:59
@xrgzs
xrgzs requested a review from j2rong4cn July 6, 2026 14:01
@xrgzs
xrgzs requested a review from jyxjjj July 15, 2026 03:46
@xrgzs
xrgzs removed request for j2rong4cn and jyxjjj July 16, 2026 15:19
@xrgzs
xrgzs marked this pull request as draft July 16, 2026 15:20
xrgzs and others added 12 commits July 16, 2026 23:23
- Wrap stream with LimitedUploadStream before creating StreamSectionReader
- Aligns with the same pattern used in the MetaPersonal/MetaGroup/MetaFamily path

Co-authored-by: GitHub Copilot <[email protected]>
- Check rd.Seek() return value and free the section reader on error
- Call ss.FreeSectionReader(rd) on all error paths within retry.Do closure
- Prevents buffer.Block leak when retrying failed upload chunks

Co-authored-by: GitHub Copilot <[email protected]>
Signed-off-by: MadDogOwner <[email protected]>
- Move ss.GetSectionReader() before retry.Do() so the sequential
  stream section reader is only called once per chunk
- Remove redundant ss.FreeSectionReader() calls from inside the
  retry closure since the reader is now owned by the outer scope
- Fixes 'stream not cached' errors when retrying failed chunk
  uploads during cross-storage WebDAV COPY operations

Co-authored-by: GitHub Copilot <[email protected]>
- Add UseOldStreamUpload option
- Implement newRequest, newPost
- Support rapid upload for PersonalNew and Group/Family

Signed-off-by: MadDogOwner <[email protected]>
@xrgzs
xrgzs marked this pull request as ready for review July 21, 2026 08:19
@jyxjjj

jyxjjj commented Jul 21, 2026

Copy link
Copy Markdown
Member

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: cd91c64340

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread drivers/139/driver.go Outdated
Comment thread drivers/139/driver.go
Comment thread drivers/139/driver.go Outdated
Comment thread drivers/139/util.go Outdated
Comment thread drivers/139/util.go
xrgzs and others added 5 commits July 22, 2026 02:17
- Pass the global partInfos slice instead of the batch subset to
  uploadPersonalParts, so that PartNumber-1 indexing does not go
  out of bounds when a file has more than 100 parts.

Co-authored-by: Codex <[email protected]>
- Save p.Done before each part and reset it inside the retry function
  so that bytes from failed attempts are not counted toward progress.
- Each part is counted exactly once, on the successful attempt.

Co-authored-by: Codex <[email protected]>
- Only validate GroupCloudHost and FamilyCloudHost for MetaGroup
  and MetaFamily storage types, so that personal-only accounts do
  not fail initialization when the route policy omits group/family.

Co-authored-by: Codex <[email protected]>
@xrgzs xrgzs changed the title fix(drivers/139): update path handling, put for family refactor(drivers/139): update path handling, put for family/group Jul 22, 2026
@xrgzs
xrgzs requested a review from jyxjjj July 22, 2026 06:56
@xrgzs
xrgzs merged commit bacd087 into OpenListTeam:main Jul 22, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Module: Driver Driver-Related Issue/PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants