Thanks David for the reply.
The number of concurrent recoveries defaults to 2 incoming/outgoing (at each node) to ensure your cluster is not overloaded with recoveries. The order in which shards are relocated isn't really defined anywhere, nor is it something on which you should rely as it might change from version to version.
Below is the particular snapshot of shard relocation. we could see hot-1 node is relocating more than 4 (> 2) nodes at a particular instance. does elastic controls this according to cluster health and also can we change the default concurrent recoveries (any property/conf.) ?
index_16 2 p RELOCATING 1250416 530.5mb dev-es-hot-1 -> eogqYqiTTPy11klul6ErKA dev-es-warm-3
index_16 14 r RELOCATING 1249982 529.9mb dev-es-hot-2 -> i0U_2m59Q2GA5zvqfy7QzA dev-es-warm-4
index_16 1 r RELOCATING 1248257 529.1mb dev-es-hot-1 -> Q5OPHgH7Q_SjdW2S20PVyA dev-es-warm-2
index_16 12 r RELOCATING 1247503 530.5mb dev-es-hot-1 -> eogqYqiTTPy11klul6ErKA dev-es-warm-3
index_16 12 p RELOCATING 1247503 530.5mb dev-es-hot-2 -> Q5OPHgH7Q_SjdW2S20PVyA dev-es-warm-2
index_16 4 p RELOCATING 1252275 530.8mb dev-es-hot-1 -> i0U_2m59Q2GA5zvqfy7QzA dev-es-warm-4
It isn't really defined anywhere, nor is it something on which you should rely. Why do you want to know this, out of interest?
i was just wondering if there is any algorithm/strategy which takes care of this movement.
I was going through the below blog:
According to this blog all the new indexing operations are sent to new primary node(target). If we perform any query during this relocation, how does elastic make sure it gives correct result because old primary(source) does not contain the new writes ?
In shard relocation process when the primary node completes the movement, does replica always gets copied from the primary node instead of old replica node(source) ?