Recover after time elapsed performing state recovery – How to solve this Elasticsearch error

Opster Team

Aug-23, Version: 6.8-8.9

Before you dig into reading this guide, have you tried asking OpsGPT what this log means? You’ll receive a customized analysis of your log.

Try OpsGPT now for step-by-step guidance and tailored insights into your Elasticsearch operation.

Briefly, this error occurs when Elasticsearch takes too long to recover its state after a node restart or a cluster restart. This could be due to a large number of shards, slow disk I/O, or network latency. To resolve this issue, you can increase the timeout settings in the Elasticsearch configuration, reduce the number of shards, or improve the hardware resources such as disk I/O or network speed. Also, ensure that the cluster state is not too large by limiting the number of indices and shards in the cluster.

For a complete solution to your to your search operation, try for free AutoOps for Elasticsearch & OpenSearch . With AutoOps and Opster’s proactive support, you don’t have to worry about your search operation – we take charge of it. Get improved performance & stability with less hardware.

This guide will help you check for common problems that cause the log ” recover_after_time [{}] elapsed. performing state recovery… ” to appear. To understand the issues related to this log, read the explanation below about the following Elasticsearch concepts: .

Log Context

Log “recover_after_time [{}] elapsed. performing state recovery…” classname is GatewayService.java.
We extracted the following from Elasticsearch source code for those seeking an in-depth context :

                    }

                    @Override
                    protected void doRun() {
                        if (recoveryInProgress.compareAndSet(false; true)) {
                            logger.info("recover_after_time [{}] elapsed. performing state recovery..."; recoverAfterTime);
                            runRecovery();
                        }
                    }
                }; recoverAfterTime; ThreadPool.Names.GENERIC);
            }

 

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?