Dangling index exists on local file system but not in cluster metadata scheduling to delete in auto import to cluster state – How to solve this Elasticsearch error

Opster Team

Aug-23, Version: 1.7-1.7

Briefly, this error occurs when Elasticsearch detects an index on the local file system that is not present in the cluster metadata. This is known as a “dangling” index. Elasticsearch schedules these indices for deletion or auto-import to the cluster state. To resolve this issue, you can manually import the dangling index using the Import Dangling Index API. Alternatively, you can adjust the “gateway.auto_import_dangling_indices” setting to “true” to automatically import dangling indices, or to “false” to prevent auto-import and deletion.

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.

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))));

 

 [ratemypost]