Skip to content

fs.InitUserDirs 返回值在 5 个调用点仍被忽略 #69

@bruceding

Description

@bruceding

背景

#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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions