DBAtlas · Атлас эксплуатации баз данных

version_conflict_engine_exception: version_conflict_engine_exception: [_doc][id]: конфликт версий, текущая версия [x] отличается от указанной [y] (HTTP 409)

Elasticsearch

Что это значит?

Запрос на обновление/удаление документа отклонён оптимистичным управлением параллелизмом. Версия документа (или _seq_no/_primary_term) не совпадает с указанной в запросе; то есть кто-то изменил документ после того, как вы его прочитали. Возвращается HTTP 409.

Почему возникает?

Параллельные обновления одного и того же документа, попытка записи с устаревшей версией/seq_no, попытка создать (op_type=create) уже существующий документ или состояние гонки при _bulk.

Как исправить

Перечитайте документ и повторите запрос с текущими _seq_no и _primary_term (или version) (цикл чтение-изменение-запись). Для автоматических повторов используйте параметр retry_on_conflict в запросе _update; в _update_by_query/_delete_by_query передавайте conflicts=proceed, чтобы пропускать конфликтующие документы и продолжать. Если намерение — только создание, конфликт нормален; перехватывайте 409 в приложении и обрабатывайте соответствующим образом (повтор или пропуск).

Открыть в DBAtlas →

Ещё по этой СУБД