[2026-09-21 04:26:21] taiga-vault: family/documents/vault-sync/2026-09-21-http402-balance-outage.md
This commit is contained in:
1 parent
80c062f3fb
commit
a921c95f6f
1 file changed
+88
@@ -0,0 +1,88 @@
|
|||||||
|
---
|
||||||
|
date: 2026-09-21
|
||||||
|
tags: [vault-sync, cron, incident, deepseek, provider]
|
||||||
|
---
|
||||||
|
|
||||||
|
# 2026-09-21 — простой sync 30 мин из-за HTTP 402: Insufficient Balance (провайдер)
|
||||||
|
|
||||||
|
## Что случилось
|
||||||
|
|
||||||
|
Шесть подряд тиков cron-задачи `sync-vault` (id `29851c413903`) упали с ошибкой
|
||||||
|
провайдера LLM:
|
||||||
|
|
||||||
|
```
|
||||||
|
RuntimeError: HTTP 402: Insufficient Balance
|
||||||
|
```
|
||||||
|
|
||||||
|
Тики: `03:55:11`, `04:00:12`, `04:05:13`, `04:10:14`, `04:15:15`, `04:20:16` UTC.
|
||||||
|
Каждый падал за 3–14 с — это отказ на стороне LLM API, не на стороне git.
|
||||||
|
|
||||||
|
Следствие: `/tmp/vault-sync.log` — дыра `03:50:18 → 04:25:34` (35,3 мин, 7 пропущенных слотов).
|
||||||
|
Последний успешный тик до сбоя: `03:50:10` (completed).
|
||||||
|
|
||||||
|
## Восстановление
|
||||||
|
|
||||||
|
Тик `04:25:18` (ручной прогон `bash /opt/data/sync-vault.sh`) — **completed**, exit 0,
|
||||||
|
все три фазы `Pushed ✓`. Баланс/провайдер к этому моменту снова отвечал.
|
||||||
|
|
||||||
|
Бэклог за время простоя влит одним махом:
|
||||||
|
|
||||||
|
```
|
||||||
|
[2026-09-21 04:25:34] [syncthing] Pushed ✓
|
||||||
|
[main 5e02428] syncthing: family/documents/movies-watchlist.md personal/documents/fly-box.md
|
||||||
|
Merge made by the 'ort' strategy.
|
||||||
|
family/plans/watchlist-cleanup.md | 78 +++++++++++++++++++++++++++++++-----
|
||||||
|
Updating 6d83071..80c062f (Fast-forward)
|
||||||
|
family/documents/movies-watchlist.md | 6 +--
|
||||||
|
personal/documents/fly-box.md | 9 ++++-
|
||||||
|
[2026-09-21 04:25:47] [taiga-vault] Pushed ✓
|
||||||
|
[2026-09-21 04:25:49] [syncthing-out] Pushed ✓
|
||||||
|
```
|
||||||
|
|
||||||
|
Проверка выравнивания (все три SHA равны, рабочие каталоги чистые):
|
||||||
|
|
||||||
|
```
|
||||||
|
bare 80c062f3fbf5a9909cfc1f8b839b7a4abcd4086a
|
||||||
|
/vault 80c062f3fbf5a9909cfc1f8b839b7a4abcd4086a
|
||||||
|
/obsidian-syncthing 80c062f3fbf5a9909cfc1f8b839b7a4abcd4086a
|
||||||
|
git status --porcelain → пусто (оба клона)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Данные не потеряны** — git-синк идемпотентен, следующий удачный тик догнал всё.
|
||||||
|
|
||||||
|
## Причина
|
||||||
|
|
||||||
|
`HTTP 402: Insufficient Balance` — исчерпан баланс аккаунта LLM-провайдера (DeepSeek).
|
||||||
|
Задача `sync-vault` — prompt-задача, каждый тик требует LLM-раунда, поэтому при нулевом
|
||||||
|
балансе скрипт вообще не запускается: падает не git, падает агентский раунд.
|
||||||
|
|
||||||
|
Это **новый, ранее не встречавшийся в таком объёме** режим отказа: до этого в
|
||||||
|
`executions.db` был лишь однократный 402 (в заметке `2026-09-14-cron-api-timeout-sync-outage.md`
|
||||||
|
он упоминался как повод «проверить баланс провайдера»).
|
||||||
|
|
||||||
|
## Статистика окна (executions.db, окно 2026-09-17 11:40 → 2026-09-21 04:25)
|
||||||
|
|
||||||
|
| статус | всего |
|
||||||
|
|---|---|
|
||||||
|
| completed | 979 |
|
||||||
|
| failed | 20 (6 из них — HTTP 402 сегодня) |
|
||||||
|
| unknown | 1 |
|
||||||
|
| running | 1 (текущий) |
|
||||||
|
|
||||||
|
Ошибка 402: ровно 6 записей, окно `03:55:11 → 04:20:16` — единичный эпизод, не серия.
|
||||||
|
|
||||||
|
## Вывод и что делать
|
||||||
|
|
||||||
|
1. Эпизод короткий, самовосстановившийся, потерь данных нет — вмешательство в конфиг
|
||||||
|
sync **не требуется**.
|
||||||
|
2. Но 402 — это про деньги на счёте провайдера, а не про git. Пока баланс пуст, падают
|
||||||
|
**все** cron-задачи Hermes, а не только sync. Стоит проверить баланс DeepSeek и
|
||||||
|
держать запас / настроить авто-пополнение.
|
||||||
|
3. Радикальное устранение самой зависимости от LLM в этой петле — перевод задачи в
|
||||||
|
`--no-agent --script` (см. раздел «Возможное устранение» в скилле
|
||||||
|
`vault-sync-infrastructure`): тогда 402/таймауты провайдера перестанут ронять sync.
|
||||||
|
|
||||||
|
## Связанные заметки
|
||||||
|
|
||||||
|
- `family/documents/vault-sync/2026-09-20-morning-sync-outage.md` — предыдущий эпизод (3 ч 10 мин, таймауты провайдера)
|
||||||
|
- скилл `vault-sync-infrastructure` → разделы «Разрыв >30 мин» и «Exit code 0, но push не случился»
|
||||||
Reference in new issue
Block a user