SHA256
Обновить синхронизацию серверов и экран сохранения ключей
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
# Стартовая загрузка `sync_servers` из server PDA
|
||||
|
||||
- Краткое описание:
|
||||
- При запуске сервер читает свой логин из `server.SHiNE.login`, загружает свою server PDA из Solana, достаёт `sync_servers`, затем читает PDA партнёров и сохраняет их `login + server_address + updated_at_ms` в локальную таблицу `sync_servers`.
|
||||
- Что проверять:
|
||||
- В `application.properties` задан `server.SHiNE.login=shineupme`.
|
||||
- После старта сервера в SQLite появилась/обновилась таблица `sync_servers`.
|
||||
- В таблице лежат логины и адреса серверов из `sync_servers` текущего server PDA.
|
||||
- При изменении `sync_servers` или `server_address` в Solana и перезапуске сервера локальная таблица обновляется.
|
||||
- Ожидаемый результат:
|
||||
- Сервер без ручного ввода адресов подтягивает партнёров синхронизации из Solana PDA и хранит их локально для следующих этапов репликации.
|
||||
- Статус:
|
||||
- `pending`
|
||||
@@ -0,0 +1,15 @@
|
||||
# Фоновая one-shot синхронизация `AddBlock` на `sync_servers`
|
||||
|
||||
- Краткое описание:
|
||||
- После успешного локального `AddBlock` сервер в фоне пытается отправить тот же блок всем партнёрам из локальной таблицы `sync_servers`.
|
||||
- Если партнёр отвечает `bad_prev_hash` или `bad_block_number`, сервер один раз делает backfill: читает недостающие блоки из БД по диапазону и досылает их по одному.
|
||||
- Если в процессе возникает новая ошибка, попытка для этого партнёра прерывается без повторов.
|
||||
- Что проверять:
|
||||
- При добавлении нового блока клиент получает быстрый `OK`, не ожидая завершения межсерверной рассылки.
|
||||
- В логах видно попытки отправки на адреса из `sync_servers`.
|
||||
- При отставании партнёра сервер досылает пропущенный хвост блоков по одному.
|
||||
- При ошибке после backfill сервер не зацикливается и не блокирует основной `AddBlock`.
|
||||
- Ожидаемый результат:
|
||||
- Репликация `AddBlock` работает в фоне и не ломает основной путь записи блока.
|
||||
- Статус:
|
||||
- `pending`
|
||||
Reference in New Issue
Block a user