From ec21efe3a7bd991158b04370c998194541e9bbe8 Mon Sep 17 00:00:00 2001 From: Taiga Date: Mon, 14 Sep 2026 21:42:11 +0000 Subject: [PATCH] [2026-09-14 21:42:11] taiga-vault: family/documents/vault-sync/2026-09-14-cron-api-timeout-sync-outage.md --- ...2026-09-14-cron-api-timeout-sync-outage.md | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 family/documents/vault-sync/2026-09-14-cron-api-timeout-sync-outage.md diff --git a/family/documents/vault-sync/2026-09-14-cron-api-timeout-sync-outage.md b/family/documents/vault-sync/2026-09-14-cron-api-timeout-sync-outage.md new file mode 100644 index 00000000..833b871f --- /dev/null +++ b/family/documents/vault-sync/2026-09-14-cron-api-timeout-sync-outage.md @@ -0,0 +1,68 @@ +--- +tags: [vault-sync, incident, cron, deepseek, api-timeout, taiga] +created: 2026-09-14 +updated: 2026-09-14 +status: resolved 2026-09-14 21:40 UTC — sync прогнан вручную, все три фазы Pushed ✓, данные целы; причина (LLM timeout в cron-задаче) не устранена на уровне конфига +--- + +# Incident 2026-09-14: 3-часовой разрыв в vault-sync — cron-задача блокировалась API-таймаутами deepseek + +**Контекст:** cron-задача Hermes `sync-vault` (id `29851c413903`, `*/5 * * * *`, prompt = `bash /opt/data/sync-vault.sh >> /tmp/vault-sync.log 2>&1`) за 2026-09-14 не отработала **три часа подряд**. + +## Симптом + +В `/tmp/vault-sync.log` разрыв между тиками: + +``` +[2026-09-14 18:30:16] [syncthing-out] Pushed ✓ +[2026-09-14 21:30:52] [syncthing] Pushed ✓ +``` + +GAP 18:30:16 → 21:30:52 = **180.6 мин**. Остальные разрывы за сутки — штатные 9–10 мин (пропущенные тики диспетчера). + +## Корень: не диспетчер, а LLM-вызовы внутри задачи + +В `/opt/data/cron/executions.db` по job_id `29851c413903` за сутки: **258 запусков, 252 completed, 6 failed**. Пять из шести падений приходятся на окно разрыва: + +| claimed_at (UTC) | finished_at (UTC) | длит. | ошибка | +|---|---|---|---| +| 18:35:09 | 19:05:21 | 30.2 мин | `RuntimeError: Non-streaming API call timed out after 600s with no response` | +| 19:10:15 | 19:40:29 | 30.2 мин | то же | +| 19:45:23 | 20:42:25 | 57.0 мин | то же | +| 20:45:37 | 21:15:50 | 30.2 мин | то же | +| 09:55:39 | 09:55:42 | 3 с | `RuntimeError: HTTP 402: Insufficient Balance` (deepseek) | + +**Механика:** prompt задачи — bash-команда, но её исполняет агент, т.е. каждый тик = LLM-раунд. Когда провайдер (deepseek-v4-flash) не отвечает, вызов висит до порога 600 с, повторные попытки растягивают один запуск до 30–57 мин, и **последующие 5-минутные тики не запускаются** — `next_run_at`/claim занят. Sync в это время стоит (в логе — ничего). Это не проблема `sync-vault.sh` и не «пропущенный тик» из [[vault-sync-infrastructure]], а блокировка очереди зависшим LLM-вызовом. + +Дополнительно: в 09:55 UTC deepseek отдал **HTTP 402 Insufficient Balance** — стоит проверить баланс провайдера. + +## Проверка целостности (после ручного прогона 21:40:52) + +```bash +bash /opt/data/sync-vault.sh >> /tmp/vault-sync.log 2>&1 # exit 0 +``` + +- Лог: `Pushed ✓` по всем трём фазам (syncthing, taiga-vault, syncthing-out), `Already up to date.` +- Все три репозитория на одном коммите: `/vault` = `/obsidian-syncthing` = bare = `512353df` (`[2026-09-14] eagle: family/plans/t610-home-automation.md`), рабочие деревья чистые (`git status --porcelain` пусто). +- Коммиты Eagle (вплоть до 23:32 +0600) доехали до всех клонов. **Потерь нет** — git-синк идемпотентен, следующий удачный тик догоняет всё. + +## Что можно сделать (не сделано, требует решения Алексея) + +1. **Убрать LLM из петли:** `hermes cron edit 29851c413903 --no-agent --script