[#1516] traverser: Check for placement vector out of range

Placement vector may contain fewer nodes count than it required by policy
due to the outage of the one of the node.

Signed-off-by: Anton Nikiforov <an.nikiforov@yadro.com>
This commit is contained in:
Anton Nikiforov 2024-11-21 13:17:16 +03:00
parent 2e2c62147d
commit f12f04199e
2 changed files with 49 additions and 2 deletions

View file

@ -114,8 +114,9 @@ func NewTraverser(opts ...Option) (*Traverser, error) {
var unsortedVector []netmap.NodeInfo
var regularVector []netmap.NodeInfo
for i := range rem {
unsortedVector = append(unsortedVector, ns[i][:rem[i]]...)
regularVector = append(regularVector, ns[i][rem[i]:]...)
pivot := min(len(ns[i]), rem[i])
unsortedVector = append(unsortedVector, ns[i][:pivot]...)
regularVector = append(regularVector, ns[i][pivot:]...)
}
rem = []int{-1, -1}