[2026-09-25 15:41:48] taiga-vault: family/documents/vault-sync/2026-09-25-http402-balance-outage.md
This commit is contained in:
1 parent
1d5408abe6
commit
a0d298568c
1 file changed
+96
@@ -0,0 +1,96 @@
|
||||
---
|
||||
date: 2026-09-25
|
||||
tags: [vault-sync, cron, incident, deepseek, provider, http402]
|
||||
---
|
||||
|
||||
# 2026-09-25 — простой sync 4 ч 24 мин: HTTP 402 Insufficient Balance, 53 тика подряд
|
||||
|
||||
## Что случилось
|
||||
|
||||
Самый длинный на сегодня эпизод отказа провайдера LLM. Тики cron-задачи `sync-vault`
|
||||
(id `29851c413903`) падали с:
|
||||
|
||||
```
|
||||
RuntimeError: HTTP 402: Insufficient Balance (request_id: …)
|
||||
```
|
||||
|
||||
- Первый упавший тик: `10:45:55` UTC (за 15,0 с)
|
||||
- Последний упавший: `15:05:29` UTC (за 3,1 с)
|
||||
- **Всего 53 failed-тика подряд**, каждый падал за 3–8 с — отказ LLM API, не git
|
||||
- Дыра в `/tmp/vault-sync.log`: `10:45:59 → 15:10:34` = **264,6 мин (4 ч 24,6 мин)**
|
||||
- Последний успешный тик до сбоя: `10:45:55` (лог-строки `10:45:59`, все три фазы `Pushed ✓`)
|
||||
|
||||
Тик `10:45:55` — пограничный: он успел отработать скрипт (10:45:59 три `Pushed ✓`), но
|
||||
финальный LLM-раунд упал с 402. Начиная с `10:50:56` скрипт не запускался вообще.
|
||||
|
||||
## Восстановление
|
||||
|
||||
Баланс был пополнен (внешнее действие, не мной). Тик `15:10:29` — **completed** за 22,1 с,
|
||||
первый же прогон догнал весь бэклог:
|
||||
|
||||
```
|
||||
[2026-09-25 15:10:34] [syncthing] Pushed ✓
|
||||
[main 4b56818] syncthing: personal/creative/aphorisms.md (правка с телефона, ждала ~4 ч 25 мин)
|
||||
Merge made by the 'ort' strategy.
|
||||
work/projects/cpm-web-extension-breakage-validation.md | 14 ++--
|
||||
work/tech-design/coredata-code-defined-models.md | 79 +++++++++++++++++
|
||||
Updating 9d78fa0..dec30c1 (Fast-forward)
|
||||
[2026-09-25 15:10:47] [taiga-vault] Pushed ✓
|
||||
[2026-09-25 15:10:49] [syncthing-out] Pushed ✓
|
||||
```
|
||||
|
||||
Дальше каденция ровная: `15:15`, `15:20`, `15:25`, `15:30`, `15:35`, `15:40` — все
|
||||
`completed`, три фазы `Pushed ✓` на каждом.
|
||||
|
||||
## Проверка после восстановления (2026-09-25 15:41 UTC)
|
||||
|
||||
```
|
||||
bare 1d5408abe6cab694a53214a155b7b97559b8ffa7
|
||||
/vault 1d5408abe6cab694a53214a155b7b97559b8ffa7
|
||||
/obsidian-syncthing 1d5408abe6cab694a53214a155b7b97559b8ffa7
|
||||
git status --porcelain → пусто (оба клона)
|
||||
маркеров конфликта (^<<<<<<< / ^>>>>>>>) → 0
|
||||
ошибок хука post-receive (host-путь) → 0
|
||||
лога 19640 строк
|
||||
```
|
||||
|
||||
Бэклог влит полностью, потерь нет — git-синк идемпотентен.
|
||||
|
||||
## Статистика окна (executions.db)
|
||||
|
||||
Таблица обрезается до последних ~1001 записи; окно на момент разбора:
|
||||
`2026-09-22 04:20 → 2026-09-25 15:40` UTC.
|
||||
|
||||
| статус | всего |
|
||||
|---|---|
|
||||
| completed | 946 |
|
||||
| failed | 54 (53 из них — 402 сегодня + 1 × 503 от 09-23 07:35) |
|
||||
| running | 1 (текущий) |
|
||||
|
||||
## Вывод: это уже второй 402-эпизод, и он на порядок длиннее
|
||||
|
||||
| эпизод | тиков | длительность |
|
||||
|---|---|---|
|
||||
| 2026-09-21 03:55 → 04:20 | 6 | 35,3 мин |
|
||||
| **2026-09-25 10:45 → 15:05** | **53** | **4 ч 24,6 мин** |
|
||||
|
||||
Тренд плохой: 402 — это про деньги на счёте провайдера, а не про git. Пока баланс пуст,
|
||||
падают **все** prompt-задачи Hermes (включая sync-vault), потому что каждый тик требует
|
||||
LLM-раунда. Сегодня четыре с половиной часа не синхронизировался телефон.
|
||||
|
||||
Что стоит сделать (решение владельца, я это не меняю молча):
|
||||
|
||||
1. **Держать запас на балансе DeepSeek / включить авто-пополнение.** Минимальное действие,
|
||||
снимает 402-эпизоды целиком.
|
||||
2. **Убрать LLM из петли sync:** `hermes cron edit 29851c413903 --no-agent --script <path>`.
|
||||
Тогда таймауты и 402 провайдера перестанут ронять синхронизацию. Ловушка известна:
|
||||
`--script` ждёт файл под `~/.hermes/scripts/`, а `/root/.hermes` в контейнере не
|
||||
существует и не переживает рекреацию — нужен персистентный путь (симлинк на `/opt/data/`).
|
||||
3. Альтернатива/дополнение — пин модели или провайдера (`--model` / `--provider`), чтобы
|
||||
деградация одного провайдера не роняла задачу.
|
||||
|
||||
## Связанные заметки
|
||||
|
||||
- `family/documents/vault-sync/2026-09-21-http402-balance-outage.md` — первый 402-эпизод (6 тиков, 35 мин)
|
||||
- `family/documents/vault-sync/2026-09-20-morning-sync-outage.md` — эпизод таймаутов провайдера (3 ч 10 мин)
|
||||
- скилл `vault-sync-infrastructure` → разделы «Разрыв >30 мин» и «Возможное устранение»
|
||||
Reference in new issue
Block a user