Updating cluster.routing.allocation.node-initial-primaries-recoveries from to – 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 message indicates that the value for cluster.routing.allocation.node-initial-primaries-recoveries is being updated. This value controls the number of initial primary recoveries allowed per node. To resolve the issue, Elasticsearch should be restarted to apply the updated value.

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 ” Updating cluster.routing.allocation.node-initial-primaries-recoveries from to ” to appear. To understand the issues related to this log, read the explanation below about the following Elasticsearch concepts: allocation, cluster and routing.

Log Context

Log “updating [cluster.routing.allocation.node_initial_primaries_recoveries] from [{}] to [{}]” classname is ThrottlingAllocationDecider.java.
We extracted the following from Elasticsearch source code for those seeking an in-depth context :

     class ApplySettings implements NodeSettingsService.Listener {
        public void onRefreshSettings(Settings settings) {
            int primariesInitialRecoveries = settings.getAsInt(CLUSTER_ROUTING_ALLOCATION_NODE_INITIAL_PRIMARIES_RECOVERIES; ThrottlingAllocationDecider.this.primariesInitialRecoveries);
            if (primariesInitialRecoveries != ThrottlingAllocationDecider.this.primariesInitialRecoveries) {
                logger.info("updating [cluster.routing.allocation.node_initial_primaries_recoveries] from [{}] to [{}]"; ThrottlingAllocationDecider.this.primariesInitialRecoveries; primariesInitialRecoveries);
                ThrottlingAllocationDecider.this.primariesInitialRecoveries = primariesInitialRecoveries;

            int concurrentRecoveries = settings.getAsInt(CLUSTER_ROUTING_ALLOCATION_NODE_CONCURRENT_RECOVERIES; ThrottlingAllocationDecider.this.concurrentRecoveries);
            if (concurrentRecoveries != ThrottlingAllocationDecider.this.concurrentRecoveries) {


Watch product tour

Try AutoOps to find & fix Elasticsearch problems

Analyze Your Cluster
Skip to content