Безопасность · OpenClaw

OpenClaw на Windows: WAL растёт, а checkpoint не проходит

Проверьте размер state-базы и WAL, соберите диагностику и безопасно выполните обслуживание SQLite через Doctor.

· 2 мин чтения

Коротко

  • На Windows проблема подтверждена в OpenClaw 2026.9.6–2026.10.6; в 2026.10.7 есть сообщение об исправлении.
  • Признак: state/openclaw.sqlite-wal растёт, а checkpointedFrames замирает или lastCompletedAtMs остаётся null.
  • database is locked, таймауты cron и задержки запуска совпадали по времени, но прямая причинная связь не доказана.

Сверено с документацией OpenClaw 2026.10.7, 26 октября 2026.

Checkpoint не переносит страницы из журнала WAL обратно в state/openclaw.sqlite, поэтому база и -wal продолжают расти. На Windows удерживающий читатель может находиться внутри процесса OpenClaw, хотя телеметрия показывает readerCount: 0 и blockingOwner: "unknown".

Как распознать проблему

Ранний отчёт описывал PASSIVE blocked by a reader на OpenClaw 2026.9.7. Поздние наблюдения показали другой отпечаток: busy=0, но checkpointed-фреймы остаются на одном уровне.

  • Состояние из логов: state=blocked, logFrames, checkpointedFrames, consecutiveBlocked, lastCompletedAtMs, never_completed.
  • Дополнительный признак: TRUNCATE remained busy при activeReaders: [], readerCount: 0 и blockingOwner: "unknown".
  • В одном отчёте logFrames вырос с 27 051 до 27 328, а checkpointedFrames остался равным 0.

Что показывают Doctor и диагностика

openclaw doctor проверяет состояние, но диагностика Gateway не называет удерживающий нативный statement. gateway diagnostics export добавляет очищенные логи, статус и снимок состояния.

openclaw gateway diagnostics export
openclaw gateway diagnostics export --output openclaw-diagnostics.zip
openclaw gateway diagnostics export --json
openclaw gateway stability --bundle latest --json

Поздний комментарий связал отпечаток с ошибкой node:sqlite в Node.js 24.16.0–24.18.0, исправленной в 24.18.1. Отдельный отчёт указывает на улучшение в OpenClaw 2026.10.7, но сводка треда требует регрессионной проверки на Windows.

Когда это уже не безобидно

  • WAL продолжает расти после перезапуска, а checkpoint не завершается.
  • В логах появляются database is locked, CLI cleanup timed out: shared-state after 5000ms или cron: isolated agent setup timed out before runner start.
  • В одном случае в WAL накопилось около 2,03 GiB данных, со скоростью роста 100–200 MiB/ч.
  • Диагностика показывает readerCount: 0, но checkpointedFrames не меняется: явный признак blocked by a reader может отсутствовать.

Что проверить у себя

  1. Зафиксируйте размер state/openclaw.sqlite и state/openclaw.sqlite-wal, затем повторите замер через 25 секунд.
  2. Проверьте в логах logFrames, checkpointedFrames, consecutiveBlocked, lastCompletedAtMs, never_completed и TRUNCATE remained busy.
  3. Соберите диагностику командой openclaw gateway diagnostics export.
  4. Проверьте версии OpenClaw, Node.js и Windows. Особое внимание уделите версиям Node.js 24.16.0–24.18.0.
  5. Остановите Gateway и создайте проверенную резервную копию перед обслуживанием SQLite.
  6. Запустите openclaw doctor --state-sqlite compact --json; команда сама проверяет блокировку владения, checkpoint, целостность и отказывается менять занятую базу.
  7. После успешного обслуживания запустите openclaw gateway start и повторно проверьте рост WAL.