DeleteByQuery for state timed out – How to solve related issues

Opster Team

Feb-20, Version: 1.7-8.0

Before you begin reading this guide, we recommend you run Elasticsearch Error Check-Up which analyzes 2 JSON files to detect many errors.

Briefly, this error occurs when Elasticsearch times out when executing a DeleteByQuery request, which is a request to delete documents from an index that match a particular query. The cause of this error can be due to long-running queries or issues with the hardware, like insufficient resources or a slow network. To resolve this error, you can try to optimize the query or increase Elasticsearch’s resource allocation, like memory or CPU. You can also use the scroll API to break the query into smaller pieces and execute it in batches, which can help prevent timeouts.

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 ” DeleteByQuery for state timed out ” to appear. To understand the issues related to this log, read the explanation below about the following Elasticsearch concepts: delete, delete-by-query and plugin.

Log Context

Log “[{}] DeleteByQuery for state timed out” classname is TransportDeleteDataFrameAnalyticsAction.java.
We extracted the following from Elasticsearch source code for those seeking an in-depth context :

 
        // Step 3. Delete the config
        ActionListener deleteStateHandler = ActionListener.wrap(
            bulkByScrollResponse -> {
                if (bulkByScrollResponse.isTimedOut()) {
                    logger.warn("[{}] DeleteByQuery for state timed out"; id);
                }
                if (bulkByScrollResponse.getBulkFailures().isEmpty() == false) {
                    logger.warn("[{}] {} failures and {} conflicts encountered while runnint DeleteByQuery for state"; id;
                        bulkByScrollResponse.getBulkFailures().size(); bulkByScrollResponse.getVersionConflicts());
                    for (BulkItemResponse.Failure failure : bulkByScrollResponse.getBulkFailures()) {




 

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?

Analyze your cluster & get personalized recommendations

Skip to content