[#102] netmap: properly process multiple REP

Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
This commit is contained in:
Evgenii Stratonikov 2023-07-10 14:49:40 +03:00 committed by Evgenii Stratonikov
parent c359a7465a
commit 998fe1a7ab
2 changed files with 74 additions and 21 deletions

View file

@ -188,30 +188,16 @@ func (m NetMap) ContainerNodes(p PlacementPolicy, pivot []byte) ([][]NodeInfo, e
for i := range p.replicas {
sName := p.replicas[i].GetSelector()
if sName == "" {
if len(p.selectors) == 0 {
var s netmap.Selector
s.SetCount(p.replicas[i].GetCount())
s.SetFilter(mainFilterName)
var s netmap.Selector
s.SetCount(p.replicas[i].GetCount())
s.SetFilter(mainFilterName)
nodes, err := c.getSelection(s)
if err != nil {
return nil, err
}
result[i] = flattenNodes(nodes)
nodes, err := c.getSelection(s)
if err != nil {
return nil, err
}
for i := range p.selectors {
if p.unique {
nodes, err := c.getSelection(p.selectors[i])
if err != nil {
return nil, err
}
result[i] = append(result[i], flattenNodes(nodes)...)
} else {
result[i] = append(result[i], flattenNodes(c.selections[p.selectors[i].GetName()])...)
}
}
result[i] = append(result[i], flattenNodes(nodes)...)
if p.unique {
c.addUsedNodes(result[i]...)