背景
#68 修复了 web clipper / PDF upload 路径下 fs.InitUserDirs 错误被吞的问题,但 code review 时发现同样的 bug 模式还存在于其它 5 个调用点。下一个 ingestion 路径报 500 时会和 #68 长得一样,但来自不同入口。
受影响调用点
fs.InitUserDirs 返回 error,以下位置没有检查:
backend/api/blog.go:348 (fs.InitUserDirs(h.DataDir, feed.UserID))
backend/api/images.go:59 (fs.InitUserDirs(h.DataDir, userId))
backend/api/newsletter.go:557 (fs.InitUserDirs(h.DataDir, cfg.UserID))
backend/api/rss.go:225 (fs.InitUserDirs(h.DataDir, feed.UserID))
backend/main.go:497 (embedfs.InitUserDirs(dataDir, user.ID),启动时初始化)
参考已修复的位置 backend/api/web.go:1684 / backend/api/raw.go:55:
```go
if err := fs.InitUserDirs(h.DataDir, userId); err != nil {
log.Printf("[xxx] InitUserDirs failed: user=%d dataDir=%s err=%v", userId, h.DataDir, err)
return c.JSON(http.StatusInternalServerError, echo.Map{"error": "failed to initialize user directories"})
}
```
main.go:497 在启动阶段、无 HTTP 上下文,应当 log.Fatalf 或至少 log.Printf 后继续。
建议
可以考虑加一个 helper 比如 mustInitUserDirsForHandler(c, dataDir, userId) error,所有 handler 统一调用,避免再次遗漏。
相关:#68 (CR feedback)
背景
#68 修复了 web clipper / PDF upload 路径下
fs.InitUserDirs错误被吞的问题,但 code review 时发现同样的 bug 模式还存在于其它 5 个调用点。下一个 ingestion 路径报 500 时会和 #68 长得一样,但来自不同入口。受影响调用点
fs.InitUserDirs返回error,以下位置没有检查:backend/api/blog.go:348(fs.InitUserDirs(h.DataDir, feed.UserID))backend/api/images.go:59(fs.InitUserDirs(h.DataDir, userId))backend/api/newsletter.go:557(fs.InitUserDirs(h.DataDir, cfg.UserID))backend/api/rss.go:225(fs.InitUserDirs(h.DataDir, feed.UserID))backend/main.go:497(embedfs.InitUserDirs(dataDir, user.ID),启动时初始化)参考已修复的位置
backend/api/web.go:1684/backend/api/raw.go:55:```go
if err := fs.InitUserDirs(h.DataDir, userId); err != nil {
log.Printf("[xxx] InitUserDirs failed: user=%d dataDir=%s err=%v", userId, h.DataDir, err)
return c.JSON(http.StatusInternalServerError, echo.Map{"error": "failed to initialize user directories"})
}
```
main.go:497在启动阶段、无 HTTP 上下文,应当log.Fatalf或至少log.Printf后继续。建议
可以考虑加一个 helper 比如
mustInitUserDirsForHandler(c, dataDir, userId) error,所有 handler 统一调用,避免再次遗漏。相关:#68 (CR feedback)