Skip to content

Commit cbaed4d

Browse files
author
anton.voskresensky
committed
fix
1 parent bb9c778 commit cbaed4d

File tree

1 file changed

+5
-11
lines changed

1 file changed

+5
-11
lines changed

ARCHITECTURE.md

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ osctl/
8080
- Показываем план создания снапшотов с указанием репозитория для каждой группы
8181
6. **Создание снапшотов (параллельно, с ограничением слотов)**:
8282
- Для всех групп формируем список задач `SnapshotTask` с полями: имя снапшота, список индексов, репозиторий, дата и расчетный размер (`Size`), который используется для приоритизации.
83-
- Задачи сортируются по размеру **по убыванию** (большие снапшоты первыми), чтобы сначала снимать “жирные” индексы.
83+
- Задачи сортируются по размеру **по убыванию** (большие снапшоты первыми).
8484
- Для всех задач запускается worker‑pool через `CreateSnapshotsInParallel`:
8585
- Количество одновременно работающих горутин ограничено конфигом `max-concurrent-snapshots` (по умолчанию 3).
8686
- Каждая горутина (worker) последовательно берет задачи из общего канала и вызывает `CreateSnapshotWithRetry`, передавая свой `workerID` для логов.
@@ -99,9 +99,9 @@ osctl/
9999
- **Проверка существующего снапшота прямо перед созданием**:
100100
- После ожидания слота, но до вызова `CreateSnapshot`, `CreateSnapshotWithRetry` еще раз вызывает `CheckSnapshotStateInRepo` для конкретного снапшота:
101101
- Если снапшот уже в состоянии `SUCCESS` — создание пропускается, задача считается выполненной.
102-
- Если снапшот уже есть в другом состоянии (`IN_PROGRESS`/`FAILED`/`PARTIAL` и т.п.) — вызов `CreateSnapshot` пропускается, дальше запускается только мониторинг этого существующего снапшота (это устраняет 400 `invalid_snapshot_name_exception` и гонки между разными процессами).
103-
- **Проверка статуса и шарды с ошибками**:
104-
- После старта или при “подхвате” уже существующего снапшота `CreateSnapshotWithRetry` опрашивает его статус через `GET /_snapshot/{repo}/*{today}*` (через `GetSnapshots`) с таймаутом видимости 15 минут.
102+
- Если снапшот уже есть в другом состоянии (`IN_PROGRESS`/`FAILED`/`PARTIAL` и т.п.) — вызов `CreateSnapshot` пропускается, дальше запускается только мониторинг этого существующего снапшота (иначе возникает рейс кондишен).
103+
- **Проверка статуса**:
104+
- После старта `CreateSnapshotWithRetry` опрашивает статус через `GET /_snapshot/{repo}/*{today}*` (через `GetSnapshots`) с таймаутом видимости 15 минут.
105105
- Если состояние `IN_PROGRESS`, дополнительно вызывается `GetSnapshotStatusDetail` (`GET /_snapshot/{repo}/{snapshot}/_status`).
106106
- Если в детальном статусе `shards_stats.failed > 0`:
107107
- Снапшот сразу считается невалидным, удаляется через `DeleteSnapshotsWithRetry`.
@@ -127,12 +127,6 @@ osctl/
127127
- Поддерживает переопределение репозитория через `Repository` в конфиге индекса
128128
- Использует общий лимит параллельных снапшотов `max-concurrent-snapshots` (CLI/конфиг), по умолчанию 3
129129

130-
#### Обновления (декабрь 2025)
131-
132-
- Перед каждым фактическим `CreateSnapshot` внутри `CreateSnapshotWithRetry` выполняется дополнительная проверка через `CheckSnapshotStateInRepo`:
133-
- Если снапшот уже в состоянии `SUCCESS` — создание пропускается, задача считается выполненной.
134-
- Если снапшот уже есть в другом состоянии (`IN_PROGRESS`/`FAILED`/`PARTIAL` и т.п.) — мы не вызываем создание, а просто начинаем мониторить существующий снапшот (это устраняет 400 `invalid_snapshot_name_exception` и гонки между процессами).
135-
136130
### 2. **snapshot-manual** - Ручное создание снапшотов
137131

138132
**Алгоритм:**
@@ -619,7 +613,7 @@ osctl/
619613
- Извлекаем базовый паттерн через первую группу захвата regex
620614
- Формируем паттерн: `{base}-*`
621615
- Удаляем дубликаты
622-
4. **Получение существующих patterns**: `GET /{tenant_index}/_search?q=type:index-pattern` из `.kibana` (без `.kibana*`).
616+
4. **Получение существующих patterns**: `GET /{tenant_index}/_search?q=type:index-pattern` из `.kibana`.
623617
5. **Создание недостающих patterns**: Для каждого отсутствующего паттерна создаем через `POST /{tenant_index}/_doc/index-pattern:{uuid}`
624618
6. **Создание extracted_* pattern** (если `--indexpatterns-recoverer-enabled`):
625619
- Создаем паттерн `extracted_*` с ссылкой на data-source через `references`

0 commit comments

Comments
 (0)