Troubleshooting
Каноничный порядок bootstrap и включения расписаний описан в docs/operations/deployment.md (раздел Каноничный порядок заполнения таблиц (bootstrap + schedules)). При инцидентах с пустыми таблицами/аномальным quarantine сверяйтесь в первую очередь с этим runbook.
Worker не стартует
Проверьте:
Не запускается SyncExchangesWorkflow
Проверьте регистрацию workflow и доступность CoinGecko:
docker compose exec -T temporal temporal workflow start \
--address temporal:7233 --namespace default --task-queue default \
--type SyncExchangesWorkflow --workflow-id sync-exchanges-debug-$(date +%s)
Не запускается SyncNetworksCatalogWorkflow
Проверьте регистрацию workflow, доступность CoinGecko/chainid.network/DefiLlama и ручной запуск:
docker compose exec -T temporal temporal workflow start \
--address temporal:7233 --namespace default --task-queue default \
--type SyncNetworksCatalogWorkflow \
--workflow-id sync-networks-catalog-debug-$(date +%s) \
--input '{"force_full_refresh":false,"soft_delete_grace_days":30,"metrics_required":false}'
Проблемы с BingX scraping
Проверьте наличие Playwright браузера в контейнере/окружении и логи:
- ScrapeBingXLaunchpoolWorkflow / SyncBingXLaunchpoolWorkflow
- ScrapeBingXXPoolWorkflow / SyncBingXXPoolWorkflow
Ручной запуск ingestion workflow:
docker compose exec -T temporal temporal workflow start \
--address temporal:7233 --namespace default --task-queue default \
--type SyncBingXLaunchpoolWorkflow \
--workflow-id sync-bingx-launchpool-debug-$(date +%s) \
--input '{"include_details":true}'
Ручной запуск BingX XPool ingestion workflow:
docker compose exec -T temporal temporal workflow start \
--address temporal:7233 --namespace default --task-queue default \
--type SyncBingXXPoolWorkflow \
--workflow-id sync-bingx-xpool-debug-$(date +%s) \
--input '{"include_details":true}'
Не запускается SyncExchangeCoinsWorkflow
Проверьте регистрацию workflow, а также ручной запуск:
docker compose exec -T temporal temporal workflow start \
--address temporal:7233 --namespace default --task-queue default \
--type SyncExchangeCoinsWorkflow \
--workflow-id sync-exchange-coins-debug-$(date +%s) \
--input '{"force_full_refresh":false,"soft_delete_grace_days":30}'
Приватные биржи помечаются skipped
Для Bybit/Binance/BingX/OKX/MEXC нужны ключи в env (*_API_KEY, *_API_SECRET, для OKX также OKX_API_PASSPHRASE).
Если ключей нет, run не падает, но в asset_mapping_quarantine появится причина missing_credentials.
Для KuCoin (как и для Gate/Bitget) ключи не требуются: используется public endpoint.
Много записей в asset_mapping_quarantine
Частые причины:
- missing_network_mapping — локальная сеть биржи не сопоставилась с networks_catalog.network_key;
- missing_contract — у актива нет контрактного адреса, conservative mapping не склеивает такие активы автоматически;
- api_error — upstream API вернул ошибку, биржа обработана в partial failure режиме.
Не запускается SyncGateLaunchpoolWorkflow
Проверьте регистрацию workflow и ручной запуск:
docker compose exec -T temporal temporal workflow start \
--address temporal:7233 --namespace default --task-queue default \
--type SyncGateLaunchpoolWorkflow \
--workflow-id sync-gate-launchpool-debug-$(date +%s) \
--input '{"page":1,"page_size":1000,"status":0}'
gate_access_denied в Gate Launchpool
gate_access_denied считается fatal ошибкой: workflow run падает и не переводится в skip/quarantine-only режим.
Проверьте:
- доступность https://www.gate.com/apiw/v2/earn/launch-pool/project-list;
- наличие блокировок по IP/ASN;
- что endpoint не блокируется на вашей сети (в коде используется hardcoded URL Gate).
Диагностика последних падений:
После squashed migrations сервис падает на migration
Проект поддерживает только fresh-install:
Старые БД/данные до squash не поддерживаются.