Cluster.routing.allocation.exclude._name stops working [ES6.1.2]

I'm migrating shards from some old nodes to some new nodes. I excluded the old nodes as follows:

PUT /_cluster/settings?pretty
{
  "transient": {
    "cluster.routing.allocation.exclude._name": "node-1,node-2,node-3,node-4,node-5,node-6,node-7,node-8,node-9"
  }
}

Halfway through, I noticed a config problem on one of the new nodes so I stopped rebalancing as follows:

PUT /_cluster/settings
{
  "transient": {
    "cluster.routing.allocation.cluster_concurrent_rebalance": 0
  }
}

After fixing the node's config (it was not a master node) and restarting it, I re-enabled rebalancing:

PUT /_cluster/settings
{
  "transient": {
    "cluster.routing.allocation.cluster_concurrent_rebalance": -1
  }
}

Well, rebalancing started up, but the exclude list was ignored. Shards got equally distributed among old and new nodes. I verified the transient cluster setting was still in place with

GET _cluster/settings

I re-sent the cluster.routing.allocation.exclude._name cluster setting to no avail. Then I set it to the empty string "" and then re-sent in the "node-1,node-2,node-3,node-4,node-5,node-6,node-7,node-8,node-9" list. This worked!

I'm glad that this worked, but it didn't work as I expected. Did I go about this the wrong way?

What version did you try this on?

6.1.2

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.