Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

[BUG] 115 驱动分片上传丢弃 errCh 真实错误,导致 nil 指针 panic / WebDAV 405

未关闭 适合新手
#3,201 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 3 天内回复

@Suyunmeng 已经在做这个了。

开始于 2026年10月27日。

  • #3312 来自 @Suyunmeng —— 未关闭
  • #3331 来自 @thetapilla —— 未关闭

评估

难度
2/5
预计耗时
1-3 小时
新手友好度
74/100
Issue 类型
缺陷
描述清晰度
描述清楚
活跃度
活跃
技术栈
go
领域
backend

调研方向

从 drivers/115/util.go 中 UploadByMultipart 接收 errCh 的位置开始,然后阅读 drivers/115/driver.go 第 224 行附近的调用方代码,了解它如何使用返回结果。检查相关的上传测试,并添加覆盖用例,验证 chunk 错误会传递到调用方;完成标准是返回实际错误,且 nil 结果不会导致 panic。

由索引模型根据 Issue 内容生成。

描述

请确认以下事项
  • 我已确认阅读并同意 AGPL-3.0 第15条 。
    本程序不提供任何明示或暗示的担保,使用风险由您自行承担。
  • 我已确认阅读并同意 AGPL-3.0 第16条 。
    无论何种情况,版权持有人或其他分发者均不对使用本程序所造成的任何损失承担责任。
  • 我确认我的描述清晰,语法礼貌,能帮助开发者快速定位问题,并符合社区规则。
  • 我已确认阅读了OpenList文档。
  • 我已确认没有重复的问题或讨论。
  • 我已确认是OpenList的问题,而不是其他原因(例如 网络 ,依赖或操作)。
  • 我认为此问题必须由OpenList处理,而非第三方。
  • 我已确认这个问题在最新版本中没有被修复。
  • 我没有阅读这个清单,只是闭眼选中了所有的复选框,请关闭这个 Issue 。
OpenList 版本(必填)

v4.2.7

使用的存储驱动(必填)

115

问题描述(必填)

WebDAV PUT 上传约 5GB 文件,115 驱动分片上传(UploadByMultipart)在约 51 分钟时失败:一次 500 + Go panic,一次 405。

根因(drivers/115/util.go):

case <-errCh: return nil, err

该分支丢弃了 errCh 里的真实分片错误,而 err 是外层 nil——返回 nil 错误 + nil 结果。Put(driver.go:224)对 nil 的 uploadResult.Data.FileID 取值 → panic → 500。第二次正常返回错误,被 WebDAV 层一刀切映射为 405(server/webdav/webdav.go 有 TODO)。

时间吻合:驱动每 50 分钟刷新 OSS token,两次失败都卡在 ~51 分钟。对照:同一文件走单片 OSS 上传一次成功,与文件本身无关。

PR #2892 已把该行列为 pre-existing and left alone,至今未修。建议修复:case e := <-errCh: return nil, e。

日志(必填)
2026/10/16 05:42:27 [Recovery] panic recovered:
runtime error: invalid memory address or nil pointer dereference
/home/runner/work/OpenList/OpenList/drivers/115/driver.go:224 (0x18164ee)
/home/runner/work/OpenList/OpenList/server/webdav/webdav.go:427 (0x1cc949e)

14:27:35 同样 panic,同样定位 driver.go:224。对应 PUT ... 500 | 51m0s 和 PUT ... 405 | 50m50s。

配置文件内容(必填)
{"mount_path": "/", "driver": "115 Cloud",
 "addition": {"cookie": "<redacted>", "page_size": 1000, "limit_rate": 10000, "root_folder_id": "0"}}
复现链接(可选)

No response

AI生成内容
  • 我使用了AI工具生成此内容
  • 我没有使用AI工具生成此内容
AI模型是

Muse

主要语言
Go
星标
25.3k
派生
2.4k
平均合并
3 天 1 小时
30 天内合并 PR
30

环境准备

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

OpenListTeam/OpenList 的其他 Issue

查看 OpenListTeam/OpenList 的全部 Issue

相似的 Issue

更多 Go Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。