# ClusterBlockException: index [my_index] blocked by: [FORBIDDEN/12/index read-only / allow delete (api)]; disk usage exceeded threshold [95%] on node [node-1]

- **ID:** `elasticsearch/index-blocked-by-disk-threshold`
- **Domain:** elasticsearch
- **Category:** resource_error
- **Error Code:** `DISK_WATERMARK_BLOCK`
- **Verification:** ai_generated
- **Fix Rate:** 85%

## Root Cause

Disk usage on a node exceeded the high watermark (default 95%), causing Elasticsearch to block write operations to protect against data loss.

## Version Compatibility

| Version | Status | Introduced | Deprecated |
|---------|--------|------------|------------|
| Elasticsearch 7.10 | active | — | — |
| Elasticsearch 8.0 | active | — | — |
| Elasticsearch 8.9 | active | — | — |

## Workarounds

1. **Free disk space by deleting old indices or moving data: `POST _reindex {"source": {"index": "old_index"}, "dest": {"index": "new_index"}}` then delete old index** (90% success)
   ```
   Free disk space by deleting old indices or moving data: `POST _reindex {"source": {"index": "old_index"}, "dest": {"index": "new_index"}}` then delete old index
   ```
2. **Increase disk capacity by adding a new node or expanding storage, then rebalance shards: `PUT _cluster/settings {"transient": {"cluster.routing.rebalance.enable": "all"}}`** (85% success)
   ```
   Increase disk capacity by adding a new node or expanding storage, then rebalance shards: `PUT _cluster/settings {"transient": {"cluster.routing.rebalance.enable": "all"}}`
   ```
3. **Temporarily disable the disk allocation decider to allow writes: `PUT _cluster/settings {"transient": {"cluster.routing.allocation.disk.threshold_enabled": false}}` (use with caution)** (70% success)
   ```
   Temporarily disable the disk allocation decider to allow writes: `PUT _cluster/settings {"transient": {"cluster.routing.allocation.disk.threshold_enabled": false}}` (use with caution)
   ```

## Dead Ends

- **Manually removing the index block with `PUT my_index/_settings {"index.blocks.read_only_allow_delete": null}` without freeing disk space** — The block will be reapplied by the cluster when the next disk check runs, as disk usage remains high. (90% fail)
- **Increasing the disk watermark thresholds in elasticsearch.yml (e.g., `cluster.routing.allocation.disk.watermark.high: 98%`)** — This only delays the problem and risks data loss if disk fills completely. (70% fail)
- **Deleting the index entirely to free space** — This is a destructive action that may cause data loss; it should only be a last resort. (50% fail)
