public void markTopoUnsuccess(TopologyDetails topo, Cluster cluster) { unsuccess.add(topo); if (cluster != null) { cluster.setStatus(topo.getId(), "Scheduling Attempted but topology is invalid"); } }
/** * set scheduler status for a topology. */ public void setStatus(TopologyDetails td, String statusMessage) { setStatus(td.getId(), statusMessage); }
private static void markFailedTopology(User u, Cluster c, TopologyDetails td, String message, Throwable t) { c.setStatus(td, message); String realMessage = td.getId() + " " + message; if (t != null) { LOG.error(realMessage, t); } else { LOG.error(realMessage); } u.markTopoUnsuccess(td); }
nodesNeeded); if ((nodesNeeded - nodesFromUsAvailable) > (_maxNodes - _usedNodes)) { _cluster.setStatus(topId, "Max Nodes(" + _maxNodes + ") for this user would be exceeded. " + ((nodesNeeded - nodesFromUsAvailable) - (_maxNodes - _usedNodes)) + " more nodes needed to run topology."); _cluster.setStatus(topId, "Not Enough Nodes Available to Schedule Topology"); return 0; _cluster.setStatus(topId, "Running with fewer slots than requested " + slotsUsed + "/" + origRequest + " on " + allNodes.size() + " node(s) with " + (slotsUsed + slotsFree) + " total slots"); _cluster.setStatus(topId, "Node has partially crashed, if this situation persists rebalance the topology.");
slotsRequested, slotsUsed, slotsFree, slotsAvailable, slotsToUse); if (slotsToUse <= 0) { _cluster.setStatus(topId, "Not Enough Slots Available to Schedule Topology"); return 0; numNewNodes, _usedNodes, _maxNodes); if ((numNewNodes + _usedNodes) > _maxNodes) { _cluster.setStatus(topId, "Max Nodes(" + _maxNodes + ") for this user would be exceeded. " + (numNewNodes - (_maxNodes - _usedNodes)) + " more nodes needed to run topology."); return 0;
_cluster.setStatus(topId, "Scheduled Isolated on " + nc + " Nodes");
if (slotsToUse <= 0) { if (executorsNotRunning > 0) { _cluster.setStatus(topId, "Not fully scheduled (No free slots in default pool) " + executorsNotRunning + " executors not scheduled"); } else { if (slotsUsed < slotsRequested) { _cluster.setStatus(topId, "Running with fewer slots than requested (" + slotsUsed + "/" + origRequest + ")"); } else { //slotsUsed < origRequest _cluster.setStatus(topId, "Fully Scheduled (requested " + origRequest + " slots, but could only use " + slotsUsed + ")"); _cluster.setStatus(topId, "Running with fewer slots than requested (" + afterSchedSlotsUsed + "/" + origRequest + ")"); } else if (afterSchedSlotsUsed < origRequest) { _cluster.setStatus(topId, "Fully Scheduled (requested " + origRequest + " slots, but could only use " + afterSchedSlotsUsed + ")"); } else { _cluster.setStatus(topId, "Fully Scheduled"); _cluster.setStatus(topId, "Fully Scheduled");
if (result.isSuccess()) { cluster.updateFrom(toSchedule); cluster.setStatus(td.getId(), "Running - " + result.getMessage());
public void addTopologyToPendingQueue(TopologyDetails topo, Cluster cluster) { this.pendingQueue.add(topo); if (cluster != null) { cluster.setStatus(topo.getId(), "Scheduling Pending"); } }
public void addTopologyToRunningQueue(TopologyDetails topo, Cluster cluster) { this.runningQueue.add(topo); if (cluster != null) { cluster.setStatus(topo.getId(), "Fully Scheduled"); } }
public void moveTopoFromPendingToRunning(TopologyDetails topo, Cluster cluster) { moveTopology(topo, this.pendingQueue, "pending", this.runningQueue, "running"); if (cluster != null) { cluster.setStatus(topo.getId(), "Fully Scheduled"); } }
public void moveTopoFromPendingToInvalid(TopologyDetails topo, Cluster cluster) { moveTopology(topo, this.pendingQueue, "pending", this.invalidQueue, "invalid"); if (cluster != null) { cluster.setStatus(topo.getId(), "Scheduling Attempted but topology is invalid"); } }
public void moveTopoFromRunningToPending(TopologyDetails topo, Cluster cluster) { moveTopology(topo, this.runningQueue, "running", this.pendingQueue, "pending"); if (cluster != null) { cluster.setStatus(topo.getId(), "Scheduling Pending"); } }
public void moveTopoFromPendingToAttempted(TopologyDetails topo, Cluster cluster) { moveTopology(topo, this.pendingQueue, "pending", this.attemptedQueue, "attempted"); if (cluster != null) { cluster.setStatus(topo.getId(), "Scheduling Attempted but Failed"); } }
nodesNeeded); if ((nodesNeeded - nodesFromUsAvailable) > (_maxNodes - _usedNodes)) { _cluster.setStatus(topId,"Max Nodes("+_maxNodes+") for this user would be exceeded. " + ((nodesNeeded - nodesFromUsAvailable) - (_maxNodes - _usedNodes)) + " more nodes needed to run topology."); _cluster.setStatus(topId, "Not Enough Nodes Available to Schedule Topology"); return 0; _cluster.setStatus(topId, "Running with fewer slots than requested " + slotsUsed + "/" + origRequest + " on " + allNodes.size() + " node(s) with " + (slotsUsed + slotsFree) + " total slots"); } else { _cluster.setStatus(topId, "Node has partially crashed, if this situation persists rebalance the topology.");
slotsRequested, slotsUsed, slotsFree, slotsAvailable, slotsToUse); if (slotsToUse <= 0) { _cluster.setStatus(topId, "Not Enough Slots Available to Schedule Topology"); return 0; numNewNodes, _usedNodes, _maxNodes); if ((numNewNodes + _usedNodes) > _maxNodes) { _cluster.setStatus(topId,"Max Nodes("+_maxNodes+") for this user would be exceeded. " + (numNewNodes - (_maxNodes - _usedNodes)) + " more nodes needed to run topology."); return 0;
_cluster.setStatus(topId,"Scheduled Isolated on "+nc+" Nodes");
if (slotsToUse <= 0) { if (executorsNotRunning > 0) { _cluster.setStatus(topId,"Not fully scheduled (No free slots in default pool) "+executorsNotRunning+" executors not scheduled"); } else { if (slotsUsed < slotsRequested) { _cluster.setStatus(topId,"Running with fewer slots than requested ("+slotsUsed+"/"+origRequest+")"); } else { //slotsUsed < origRequest _cluster.setStatus(topId,"Fully Scheduled (requested "+origRequest+" slots, but could only use "+slotsUsed+")"); _cluster.setStatus(topId,"Running with fewer slots than requested ("+afterSchedSlotsUsed+"/"+origRequest+")"); } else if (afterSchedSlotsUsed < origRequest) { _cluster.setStatus(topId,"Fully Scheduled (requested "+origRequest+" slots, but could only use "+afterSchedSlotsUsed+")"); } else { _cluster.setStatus(topId,"Fully Scheduled"); _cluster.setStatus(topId,"Fully Scheduled");
userMap.get(topologySubmitter).addTopologyToRunningQueue(td); if (cluster.getStatusMap().get(td.getId()) == null || cluster.getStatusMap().get(td.getId()).equals("")) { cluster.setStatus(td.getId(), "Fully Scheduled");
topologySubmitter = cleanup(schedulingState, td); topologySubmitter.moveTopoFromPendingToInvalid(td); this.schedulingState.cluster.setStatus(td.getId(), "Unsuccessful in scheduling - failed to create instance of topology strategy " + td.getConf().get(Config.TOPOLOGY_SCHEDULER_STRATEGY) + ". Please check logs for details"); return; topologySubmitter = cleanup(schedulingState, td); topologySubmitter.moveTopoFromPendingToInvalid(td); this.schedulingState.cluster.setStatus(td.getId(), "Unsuccessful in scheduling - Exception thrown when running strategy {}" + rasStrategy.getClass().getName() + ". Please check logs for details"); if (mkAssignment(td, result.getSchedulingResultMap())) { topologySubmitter.moveTopoFromPendingToRunning(td); this.schedulingState.cluster.setStatus(td.getId(), "Running - " + result.getMessage()); } else { topologySubmitter = this.cleanup(schedulingState, td); topologySubmitter.moveTopoFromPendingToAttempted(td); this.schedulingState.cluster.setStatus(td.getId(), "Unsuccessful in scheduling - Unable to assign executors to nodes. Please check logs for details"); topologySubmitter = cleanup(schedulingState, td); topologySubmitter.moveTopoFromPendingToAttempted(td); this.schedulingState.cluster.setStatus(td.getId(), "Unsuccessful in scheduling - IllegalStateException thrown when attempting to assign executors to nodes. Please check log for details."); topologySubmitter = cleanup(schedulingState, td); topologySubmitter.moveTopoFromPendingToAttempted(td); this.schedulingState.cluster.setStatus(td.getId(), "Not enough resources to schedule - " + result.getErrorMessage()); break; topologySubmitter.moveTopoFromPendingToRunning(td);