DBAtlas · 데이터베이스 운영 아틀라스

version_conflict_engine_exception: version_conflict_engine_exception: [_doc][id]: version conflict, current version [x] is different than the one provided [y] (HTTP 409)

Elasticsearch

의미

문서 갱신/삭제 요청이 낙관적 동시성 제어에 의해 거부되었다. 문서 버전(또는 _seq_no/_primary_term)이 요청의 값과 일치하지 않는다. 즉, 읽은 뒤 다른 누군가가 문서를 수정했다. HTTP 409를 반환한다.

원인

같은 문서에 대한 동시 갱신, 오래된 version/seq_no로 쓰기 시도, 이미 존재하는 문서를 생성(op_type=create)하려는 시도, 또는 _bulk 중 경쟁 조건.

해결 방법

문서를 다시 읽고 현재 _seq_no와 _primary_term(또는 version)으로 요청을 재시도한다(read-modify-write 루프). 자동 재시도에는 _update 요청의 retry_on_conflict 파라미터를 사용한다. _update_by_query/_delete_by_query에서는 conflicts=proceed를 지정해 충돌 문서를 건너뛰고 계속 진행한다. 생성 전용이 의도라면 충돌은 정상이므로 애플리케이션에서 409를 잡아 적절히 처리한다(재시도 또는 건너뛰기).

DBAtlas에서 열기 →

같은 데이터베이스의 다른 항목