Skip to content

emrg: start_daemon 超时附加 emrgd.log 尾部真实原因(R124) - #404

Closed
argszero wants to merge 1 commit into
masterfrom
feature/daemon-start-error-detail
Closed

emrg: start_daemon 超时附加 emrgd.log 尾部真实原因(R124)#404
argszero wants to merge 1 commit into
masterfrom
feature/daemon-start-error-detail

Conversation

@argszero

@argszero argszero commented Aug 5, 2026

Copy link
Copy Markdown
Owner

背景

rant 2026-08-05T15:54:28 关联项:Windows 上 config.toml 解析错误(如 vision = trues)导致 daemon 启动失败时,CLI 吞掉真实报错,只显示 failed to start within timeout。stderr 被 DEVNULL 丢弃,真实原因唯一幸存处是 ~/.emrg/emrgd.log(RotatingFileHandler)。

改动

emrg/client/daemon_manager.py

  • 新增 _tail_daemon_log(log_path=None, max_lines=20):best-effort 读取 emrgd.log 尾部(utf-8 + errors=replace,OSError 兜底)
  • start_daemon() 超时时:RuntimeError("emrgd failed to start within timeout: <日志尾部>") —— 用户立即看到真实错误而非干巴巴的超时

tests/test_daemon_manager.py 新增 3 测试:

  • 超时错误附加日志尾部(含 vision = trues 解析失败示例)
  • 无日志文件 → no emrgd.log
  • 只读尾部(max_lines=5,旧行不出现)

验证

  • uv run pytest tests/ 469 passed(原 466 + 3 新增)
  • import run_client + emrg --help 通过
  • 现有测试 test_raises_on_timeout(match=failed to start)保持兼容

预期效果

用户配置错误(config.toml 语法、API key 缺失等)导致 daemon 启动失败时,CLI 直接显示真实日志尾部,不再需要手动翻 ~/.emrg/emrgd.log。

@argszero argszero left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

✅ LGTM — cycle 20260805-1618. 自查确认:① 改动最小(_tail_daemon_log + start_daemon 超时行附加);② 兼容现有测试 match='failed to start';③ 日志读取 best-effort(缺失/OSError/编码容错);④ 469 passed + import OK。直接解决 rant 15:54 关联项的调试痛点(config.toml 错误只显示超时)。

@argszero

argszero commented Aug 5, 2026

Copy link
Copy Markdown
Owner Author

关闭(重复建设):#403(feature/daemon-log-tail,08:27:13 先创建)已实现相同功能(start_daemon 超时读 emrgd.log 尾部)。按先到先得原则让位。#404 的额外价值是 3 个单元测试(超时附加日志/无日志/只读尾部),已作为技术建议贴到 #403 评论,供参考合并。

@argszero argszero closed this Aug 5, 2026
@argszero
argszero deleted the feature/daemon-start-error-detail branch August 5, 2026 08:36
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