How To Solve Issues Related to Log – Un-assigning persistent tasks :

Get an Elasticsearch Check-Up

Check if your ES issues are caused from misconfigured settings
(Free 2 min process)

Check-Up

Last update: Jan-20

Elasticsearch Error Guide In Page Navigation (click to jump) :

Troubleshooting Background – start here to get the full picture       
Related Issues – selected resources on related issues  
Log Context – usefull for experts
About Opster – offering a diffrent approach to troubleshoot Elasticsearch

Check Your Elasticsearch Settings for Painfull Mistakes 


Troubleshooting background

To troubleshoot Elasticsearch log “Un-assigning persistent tasks :” it’s important to know common problems related to Elasticsearch concepts: persistent, plugin, upgrade. See below-detailed explanations complete with common problems, examples and useful tips.

Persistent in Elasticsearch

What it is

In Elasticsearch, Persistent refers to cluster settings that persist across cluster restarts. This setting is used in Cluster Update API calls. Persistent settings can also be configured in elasticsearch.yml file.

Examples
## enable shard routing
PUT /_cluster/settings
{
    "persistent" : {
        "cluster.routing.allocation.enable" : "all"
    }
}
## enable rebalancing of shards
PUT /_cluster/settings
{
    "persistent" : {
        "cluster.routing.rebalance.enable" : "all"
    }
}
## limit the heap size for fielddata
PUT /_cluster/settings
{
    "persistent" : {
                 “indices.breaker.fielddata.limit”: "30%"
    }
}

Plugin in Elasticsearch

What it is

Plugins are used to extend the functionality of Elasticsearch. In addition to the core plugins available to you, it is possible to write custom plugins as well. Plugins are generated in a zip format with the mandatory file structure.

Examples:
  • Core Plugins: Xpack for Security and monitoring, Discovery plugins for EC2
  • Adding S3 plugin for storing snapshots on S3
sudo bin/elasticsearch-plugin install repository-s3
  • Adding HDFS plugin for storing snapshots on HDFS
sudo bin/elasticsearch-plugin install repository-hdfs
  • Removing a plugin
sudo bin/elasticsearch-plugin remove repository-hdfs
Notes:
  • Plugins are installed using the Elasticsearch-plugin script, which enables actions such as  listing, removing and installing plugins.
  • Core plugins can be installed simply by providing the name of the plugin to the Elasticsearch-plugin command.
  • You can also download the plugin manually and then install it using the elasticsearch-plugin install command, providing the file name/path of the plugin’s source file.
  • When a plugin is removed, you will need to restart the elasticsearch node(s) in order to complete the removal process.
Common Problems:
  • You need to install the required plugins in your Elasticsearch deployment before moving it to production machines. (as it’s likely your production machines are behind a proxy and it’s very hard to get plugins installed behind a proxy).
  • The same is true when you are going to deploy elasticsearch using Docker images, you will most likely be rebuilding the standard image and including your required plugins in the custom docker build. Make sure the docker build is run on a build machine that is not behind a proxy, otherwise the plugin installation will fail during docker build.

Click here to get to our list of the Most frequent issues caused by Elasticsearch Plugins

Upgrade in Elasticsearch

What is it

Upgrade refers to migrating your Elasticsearch version to a newer version. An upgrade of an existing cluster can be done in two ways: through a rolling upgrade and through a  full cluster restart. The benefit of a rolling upgrade is having zero downtime.

Commos problems and important points
  • The major problem with upgrades is version incompatibility between upgrades. Elasticsearch supports rolling upgrades only between minor versions. You need to make sure to go through the official documentation to see if your cluster can support a rolling upgrade, otherwise a complete reindexing is required.
    Once you upgrade an Elasticsearch node, a rollback can not be done. You need to make sure to take data backups before an upgrade.
  • Elasticsearch continuously removes or deprecates some of the features with every release, so  keep an eye on the change logs of each version before planning an upgrade. 
  • While doing a rolling upgrade, it is important to disable shard allocation before stopping a node and enable the shard allocation when node is upgraded and restarted. This process helps in avoiding unnecessary IO load in the cluster.

Task in Elasticsearch

What it is

A task is equivalent to an Elasticsearch operation, which can be any request performed on an Elasticsearch cluster. For example, a delete by query request, a search request and so on. Elasticsearch provides a dedicated Task API for the task management which includes various actions, from retrieving the status of current running tasks to canceling any long running task.

Examples
Get all currently running tasks on all nodes of the cluster

Apart from other information, the response of the below request contains task IDs of all the tasks which can be used to get detailed information about the particular task in question.

GET _tasks
GET detailed information of a particular task

clQFAL_VRrmnlRyPsu_p8A:1132678759 is the ID of the task in below request.

GET _tasks/clQFAL_VRrmnlRyPsu_p8A:1132678759
Get all the current tasks running on particular nodes
GET _tasks?nodes=nodeId1,nodeId2
Cancel a long-running task

clQFAL_VRrmnlRyPsu_p8A:1132678759 is the ID of the task in the below request.

POST /_tasks/clQFAL_VRrmnlRyPsu_p8A:1132678759/_cancel?pretty
Notes
  • The Task API will be most useful when you want to investigate the spike of resource utilization in the cluster or want to cancel an operation.

To help troubleshoot related issues we have gathered selected Q&A from the community and issues from Github , please review the following for further information :

ElasticSearch: Unassigned Shards, how to fix?
stackoverflow.com/questions/19967472/elasticsearch-unassigned-shards-how-to-fix

Number of Views : 203.11 K  Score on Stackoverflow : 152

How to stop
stackoverflow.com/questions/17191539/how-to-stop-shut-down-an-elasticsearch-node

Number of Views : 91.96 K  Score on Stackoverflow : 75


Log Context

Log ”Un-assigning persistent tasks :” classname is TransportSetUpgradeModeAction.java
We have extracted the following from Elasticsearch source code to get an in-depth context :

<pre class="wp-block-syntaxhighlighter-code">             // We want to always have the same ordering of which tasks we un-allocate first.
            // However; the order in which the distributed tasks handle the un-allocation event is not guaranteed.
            .sorted(Comparator.comparing(PersistentTask::getTaskName))
            .collect(Collectors.toList());

        logger.info("Un-assigning persistent tasks : " +
            datafeedAndJobTasks.stream().map(PersistentTask::getId).collect(Collectors.joining("; "; "[ "; " ]")));

        TypedChainTaskExecutor<PersistentTask<?>> chainTaskExecutor =
            new TypedChainTaskExecutor<>(client.threadPool().executor(executor());
                r -> true;




</pre>

About Opster

Incorporating deep knowledge and broad history of Elasticsearch issues. Opster’s solution identifies and predicts root causes of Elasticsearch problems, provides recommendations and can automatically perform various actions to manage, troubleshoot and prevent issues

We are constantly updating our analysis of Elasticsearch logs, errors, and exceptions. Sharing best practices and providing troubleshooting guides.

Learn more: Glossary | Blog| Troubleshooting guides | Error Repository

Need help with any Elasticsearch issue ? Contact Opster

Did this page help you?