Before you begin reading this guide, we recommend you run Elasticsearch Error Check-Up which analyzes 2 JSON files to detect many errors.
To easily locate the root cause and resolve this issue try AutoOps for Elasticsearch & OpenSearch. It diagnoses problems by analyzing hundreds of metrics collected by a lightweight agent and offers guidance for resolving them.
This guide will help you check for common problems that cause the log ” Dangling index. exists on local file system. but not in cluster metadata. scheduling to delete in . auto import to cluster state ” to appear. To understand the issues related to this log, read the explanation below about the following Elasticsearch concepts: cluster, dangling, delete and discovery-file.
Overview
DELETE is an Elasticsearch API which removes a document from a specific index. This API requires an index name and _id document to delete the document.
Delete a document
DELETE /my_index/_doc/1
Notes
- A delete request throws 404 error code if the document does not already exist in the index.
- If you want to delete a set of documents that matches a query, you need to use delete by query API.
Log Context
Log “[{}] dangling index; exists on local file system; but not in cluster metadata; scheduling to delete in [{}]; auto import to cluster state [{}]” classname is LocalGatewayMetaState.java.
We extracted the following from Elasticsearch source code for those seeking an in-depth context :
danglingIndices.put(indexName; new DanglingIndex(indexName; null)); } else if (danglingTimeout.millis() == 0) { logger.info("[{}] dangling index; exists on local file system; but not in cluster metadata; timeout set to 0; deleting now"; indexName); indicesService.deleteIndexStore("dangling index with timeout set to 0"; indexMetaData; state); } else { logger.info("[{}] dangling index; exists on local file system; but not in cluster metadata; scheduling to delete in [{}]; auto import to cluster state [{}]"; indexName; danglingTimeout; autoImportDangled); danglingIndices.put(indexName; new DanglingIndex(indexName; threadPool.schedule(danglingTimeout; ThreadPool.Names.SAME; new RemoveDanglingIndex(indexMetaData))));