snowy-yang
ea346be484
fix: 自动存档几乎永不触发的真 bug——把 dirty 和 unsaved 拆开
顺着验收网页修复时发现:default 牧场根本没写进库,内存里每次
重启都是新档。根因是 session.dirty 一个标志位伺二主:
* Publisher 推送循环每 ~250ms 就把 dirty 清掉(无人在线时直接清,
"没人在看就不做序列化,省 CPU");
* autosave() 每 60s 才看一眼 dirty。
dirty=True 的窗口只有约 250ms,自动存档撞上它的概率约 0.4%——
等于永不存盘。进度只在手动存档/优雅停机时落盘,进程被强杀全丢。
修法:新增 session.unsaved 专管「有变化没落盘」,_on_change / load /
touch / advance_day 置位,只有成功的 save() 清位;autosave() 改看
unsaved;dirty 继续只管推送节流,hub.py 的推送循环一字未动。
两只旧测试直接操纵 dirty 驱动 autosave,固化了被修掉的耦合,改成
unsaved 表达意图;新增回归测试:推送循环清了 dirty 也要照常落盘、
没有新变化不重复写库。
真机验证:0 客户端在线纯 HTTP 种一块地,70 秒内库行更新(金币
120→112,种子钱都对得上)。515 项测试 OK。
2026-09-23 20:54:12 +08:00
..
2026-09-19 12:55:45 +08:00
2026-09-19 17:02:33 +08:00
2026-09-19 17:02:33 +08:00
2026-09-19 19:04:30 +08:00
2026-09-19 17:02:33 +08:00
2026-09-19 12:55:45 +08:00
2026-09-23 20:54:12 +08:00
2026-09-23 20:54:11 +08:00