fix(price_monitor): DB写锁死锁根治 - 统一BEGIN IMMEDIATE + 5次重试指数退避 + emergency WAL checkpoint
- 统一一个BEGIN IMMEDIATE事务包裹所有写操作,替代独立写函数调用 - 5次重试 + 指数退避 (1s,2s,4s,8s,16s),原3次+固定2s - 重试耗尽后自动 emergency WAL checkpoint(TRUNCATE)释放死锁 - try/except确保连接始终释放,修复conn泄漏 - 三副本同步:profile/scripts + MoFin/scripts + MoFin/root
This commit is contained in:
@@ -149,3 +149,38 @@ bash包装器启动bot会绕开systemd管理,导致:
|
||||
- 每日汇总只发一次(16:35 + sent标记防重复)
|
||||
- cron_health_monitor新增数据实体完整性检查
|
||||
- 涉及文件: scripts/technical_analysis.py, scripts/strategy_lifecycle.py, scripts/mofin_health.py, scripts/cron_to_xmpp.py, scripts/cron_health_monitor.py
|
||||
|
||||
## 2026-07-14 — 系统检查:Dad未收到任何消息的诊断
|
||||
|
||||
### 发现问题
|
||||
1. **cron_to_xmpp.py Bug**: body提取`content.split("## Response")`用`parts[1]`取到的是skill内容中的 ## Response(第一个),而不是agent实际回复的 ## Response(最后一个)。导致开盘简报等LLM报告的正文取错,被误判为[SILENT]静默拦截。
|
||||
2. **price_monitor.py SQLite写锁死锁**: 多个cron脚本(price_monitor + mofin_health等)同时BEGIN IMMEDIATE写 mofin.db,进程卡在D状态,WAL文件膨胀到2.7MB,后续全部超时。
|
||||
3. **mofin_db.py版本不同步**: cron版本和MoFin版本有差异(cron版本多了保留full_analysis/reassessed_at的代码)。
|
||||
|
||||
### 修改了什么
|
||||
- `cron_to_xmpp.py` — 改 `parts[1]` → `parts[-1]`(取最后一个Response节)
|
||||
- `mofin_db.py` (MoFin目录) — 同步cron版本的reassessed_at列处理和full_analysis保留逻辑
|
||||
- `price_monitor.py` — 添加debug时序追踪,临时kill D状态进程+WAL checkpoint
|
||||
- `.silent_daily_count.json` — 纠正静默计数(-1因为开盘简报被误拦)
|
||||
|
||||
### 文件
|
||||
- Modified: /home/hmo/.hermes/profiles/position-analyst/scripts/cron_to_xmpp.py
|
||||
- Modified: /home/hmo/MoFin/scripts/mofin_db.py
|
||||
- Modified: /home/hmo/.hermes/profiles/position-analyst/scripts/price_monitor.py
|
||||
|
||||
## 2026-07-14 — price_monitor DB写锁死锁根治(跟进修复)
|
||||
|
||||
### 发现问题
|
||||
上次诊断只做了临时修复(kill D状态进程 + WAL checkpoint),Dad要求直接根治。
|
||||
|
||||
### 修改了什么(三副本同步)
|
||||
- **price_monitor.py** (profile/scripts): 统一 BEGIN IMMEDIATE 包裹所有写操作,替代调用 write_holdings_batch/write_portfolio_summary/write_live_prices。5次重试+指数退避(1s→2s→4s→8s→16s)。重试耗尽后自动 emergency WAL checkpoint。try/except 确保 conn 始终释放。
|
||||
- **MoFin/scripts/price_monitor.py** — 同步修复
|
||||
- **MoFin/price_monitor.py** — 同步修复(保留其 cash_log 优先的现金读取逻辑)
|
||||
- **CHANGELOG.md** — 新增2026-07-14条目
|
||||
|
||||
### 文件
|
||||
- Modified: /home/hmo/.hermes/profiles/position-analyst/scripts/price_monitor.py
|
||||
- Modified: /home/hmo/MoFin/scripts/price_monitor.py
|
||||
- Modified: /home/hmo/MoFin/price_monitor.py
|
||||
- Modified: /home/hmo/MoFin/CHANGELOG.md
|
||||
|
||||
Reference in New Issue
Block a user