Добавить локальный OpenSearch и возобновляемую загрузку #10
Reference in New Issue
Block a user
Delete Branch "feature/local-opensearch-lab"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Что изменено
Проверка
PYTHONPATH=backend python3 -m unittest discover -s backend -p 'test_*.py' -v— 11 тестов успешно;docker compose -f deploy/local-opensearch/compose.yaml config— успешно;Независимая проверка PR
Статус: требуются изменения перед слиянием.
High
backend/search/minjust_opensearch.py:202-211не сохраняет checkpoint после успешного Bulk-пакета. Для--start-atнет надёжно зафиксированного значения: слишком поздний код пропустит данные, а гарантированно безопасен только повторный проход с начала.request_jsonне повторяет запросы при HTTP 429/5xx, timeout и обрыве соединения. На длительной загрузке временная сетевая ошибка полностью останавливает процесс.errors: trueвыводится только число ошибок без ID и причин. Bulk API может частично принять пакет, поэтому диагностика и безопасное продолжение затруднены.Medium
Проверено
docker compose configуспешно;analysis-icuустановлен;Повторная независимая проверка после
8bf23b3Статус: требуются дополнительные изменения.
High
backend/search/minjust_opensearch.py:240,253: checkpoint не привязан к URL/cluster/index UUID. После пересоздания индекса или запуска против другого кластера с тем же именем--resumeможет пропустить уже отмеченную часть корпуса.backend/search/minjust_opensearch.py:240: checkpoint не фиксирует--limit. Resume с другим--limitможет загрузить иной диапазон и ошибочно пометить неполный индекс как complete.Medium
backend/search/minjust_opensearch.py:211: оборванный или некорректный JSON при HTTP 200 не повторяется, хотя Bulkindexидемпотентен.Подтверждено исправленным
Итог: not ready.
Третья независимая проверка после
daaa252Статус: остался один High blocker.
backend/search/minjust_opensearch.py:93-105:start_atприменяется доLIMIT. Прерванная загрузка--limit 100с checkpoint на документе 50 при resume выберет 100 документов начиная с 50-го, выйдет за исходную первую сотню и пометит расширенный диапазон завершённым. Нужно сначала сформировать исходный ограниченный prefix, затем применять checkpoint внутри него.Остальные прежние замечания исправлены: URL/cluster/index UUID, manifest и limit привязаны к checkpoint; invalid Bulk JSON повторяется; split-document resume и partial errors корректны; production warning добавлен.
Все 11 тестов, Compose и
git diff --checkпроходят.Итог: not ready.
daaa252567to3a4450fcfeФинальная независимая проверка
3a4450fREADY — блокеров и замечаний нет.
Подтверждено:
LIMITсначала формирует исходный упорядоченный prefix, затем применяется inclusive checkpoint; resume не расширяет диапазон;limit;git diff --checkчист.В тестовом выводе остаются только ResourceWarning от mock HTTPError/sqlite cleanup; это не проблема product-кода.
Итог: PR готов к слиянию.