Skip to content

Commit

Permalink
[launcher] Fix sending run instances for paused nodes
Browse files Browse the repository at this point in the history
We don't initialize paused nodes as result run instances command is not sent
for such nodes. The fix is to initialize all nodes except unprovisioned  and
selects only provisioned for balancing. In this case run instances command with
no instances will be sent to paused, error etc. nodes.

Signed-off-by: Oleksandr Grytsov <[email protected]>
  • Loading branch information
al1img committed Aug 16, 2024
1 parent 479fecb commit 5565be1
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 2 deletions.
2 changes: 1 addition & 1 deletion launcher/launcher.go
Original file line number Diff line number Diff line change
Expand Up @@ -260,7 +260,7 @@ func (launcher *Launcher) initNodes(rebalancing bool) error {
continue
}

if nodeInfo.Status != cloudprotocol.NodeStatusProvisioned {
if nodeInfo.Status == cloudprotocol.NodeStatusUnprovisioned {
log.WithField("nodeID", nodeID).Debug("Skip not provisioned node")

continue
Expand Down
19 changes: 18 additions & 1 deletion launcher/nodehandler.go
Original file line number Diff line number Diff line change
Expand Up @@ -360,7 +360,12 @@ func (node *nodeHandler) getRequestedRAM(
func getNodesByStaticResources(nodes []*nodeHandler,
serviceConfig aostypes.ServiceConfig, instanceInfo cloudprotocol.InstanceInfo,
) ([]*nodeHandler, error) {
resultNodes := getNodeByRunners(nodes, serviceConfig.Runners)
resultNodes := getActiveNodes(nodes)
if len(resultNodes) == 0 {
return resultNodes, aoserrors.Errorf("no active nodes")
}

resultNodes = getNodeByRunners(nodes, serviceConfig.Runners)
if len(resultNodes) == 0 {
return resultNodes, aoserrors.Errorf("no nodes with runner: %s", serviceConfig.Runners)
}
Expand All @@ -378,6 +383,18 @@ func getNodesByStaticResources(nodes []*nodeHandler,
return resultNodes, nil
}

func getActiveNodes(nodes []*nodeHandler) []*nodeHandler {
resultNodes := make([]*nodeHandler, 0)

for _, node := range nodes {
if node.nodeInfo.Status == cloudprotocol.NodeStatusProvisioned {
resultNodes = append(resultNodes, node)
}
}

return resultNodes
}

func getNodesByDevices(nodes []*nodeHandler, desiredDevices []aostypes.ServiceDevice) []*nodeHandler {
if len(desiredDevices) == 0 {
return nodes
Expand Down

0 comments on commit 5565be1

Please sign in to comment.