Dangling index exists on local file system but not in cluster metadata timeout set to 0 deleting now – 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. It can happen due to abrupt shutdowns or failures during index deletion. To resolve this, you can manually delete the index files from the data directory. Alternatively, you can set the “gateway.local.auto_import_dangled” setting to “yes” to automatically import the dangling index into the cluster. However, be cautious as this could lead to data inconsistency if not handled properly.

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; timeout set to 0; deleting now ” to appear. To understand the issues related to this log, read the explanation below about the following Elasticsearch concepts: cluster, dangling and discovery-file.

Log Context

Log “[{}] dangling index; exists on local file system; but not in cluster metadata; timeout set to 0; deleting now” classname is LocalGatewayMetaState.java.
We extracted the following from Elasticsearch source code for those seeking an in-depth context :

if (indexMetaData != null) {
                                if(autoImportDangled.shouldImport()){
                                    logger.info("[{}] dangling index; exists on local file system; but not in cluster metadata; auto import to cluster state [{}]"; indexName; autoImportDangled);
                                    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;

 

How helpful was this guide?

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?