index_read_only_allow_delete: TOO_MANY_REQUESTS/12/disk usage exceeded flood-stage watermark, index has read-only-allow-delete block (legacy: FORBIDDEN/12/index read-only / allow delete (api))
Elasticsearch의미
index.blocks.read_only_allow_delete가 true여서 인덱스가 읽기 전용이다. 새 문서를 쓰거나 갱신할 수 없고 인덱스 삭제만 가능하다. Elasticsearch는 보통 디스크 flood stage watermark를 초과하면 이를 자동으로 설정한다. ES 8.x는 쓰기 요청에 HTTP 429를 반환한다.
원인
디스크 사용량이 flood stage 임계값을 초과해 블록이 자동으로 설정되었거나, 설정을 수동으로 true로 지정함. 디스크 공간을 확보하지 않고 블록을 제거하면 Elasticsearch가 다시 적용한다.
해결 방법
충분한 디스크 공간을 확보한다. 7.4+에서는 자동으로 설정된 블록이 디스크 사용량이 high watermark 아래로 내려가면 스스로 해제된다. 수동으로 설정된 블록이거나 기다리지 않고 해제하려면 블록을 제거한다: PUT /_all/_settings {"index.blocks.read_only_allow_delete": null}. 단일 인덱스의 경우: PUT /index-name/_settings {"index.blocks.read_only_allow_delete": null}. 계속 재발한다면 디스크 용량을 늘리고 ILM 정책을 설정하며 _cat/allocation으로 어느 노드가 차고 있는지 모니터링한다.
같은 데이터베이스의 다른 항목
- cluster_block_exceptionClusterBlockException[blocked by: [TOO_MANY_REQUESTS/12/disk usage exceeded flood-stage watermark, index has read-only-allow-delete block]] (7.x 이전: FORBIDDEN/12/index read-only / allow delete (api))
- high_disk_watermark_exceededhigh disk watermark [90%] exceeded / flood stage disk watermark [95%] exceeded
- circuit_breaking_exceptionCircuitBreakingException[[parent] Data too large, data for [<...>] would be [...], which is larger than the limit of [...]]
- mapper_parsing_exceptionmapper_parsing_exception: failed to parse field [...] of type [...]
- strict_dynamic_mapping_exceptionstrict_dynamic_mapping_exception: mapping set to strict, dynamic introduction of [...] within [...] is not allowed