Search in sources :

Example 76 with Node

use of org.objectweb.proactive.core.node.Node in project scheduling by ow2-proactive.

the class RMNodeStarter method killWorkerNodeIfRemovedByUser.

private void killWorkerNodeIfRemovedByUser(Map<String, Node> nodes, String unknownNodeUrl) {
    Node node = nodes.get(unknownNodeUrl);
    if (node == null) {
        logger.warn("The RM has sent back an URL that was not published by the Node: " + unknownNodeUrl);
    } else {
        // The node URL which has been published to the RMCore is unknown.
        // It means the node has been removed by a user
        String nodeName = node.getNodeInformation().getName();
        try {
            // Kill the local worker node
            node.getProActiveRuntime().killNode(nodeName);
        } catch (Exception e) {
            logger.warn("Killing the local node has failed: " + nodeName, e);
        } finally {
            nodes.remove(unknownNodeUrl);
            logger.info("Node " + unknownNodeUrl + " has been removed ");
        }
    }
}
Also used : Node(org.objectweb.proactive.core.node.Node) Throwables.getStackTraceAsString(com.google.common.base.Throwables.getStackTraceAsString) LoginException(javax.security.auth.login.LoginException) ActiveObjectCreationException(org.objectweb.proactive.ActiveObjectCreationException) KeyException(java.security.KeyException) NotConfiguredException(org.objectweb.proactive.extensions.dataspaces.exceptions.NotConfiguredException) NodeException(org.objectweb.proactive.core.node.NodeException) ParseException(org.apache.commons.cli.ParseException) NoSuchAlgorithmException(java.security.NoSuchAlgorithmException) AddingNodesException(org.ow2.proactive.resourcemanager.exception.AddingNodesException) ProActiveRuntimeException(org.objectweb.proactive.core.ProActiveRuntimeException) NotConnectedException(org.ow2.proactive.resourcemanager.exception.NotConnectedException) MalformedURLException(java.net.MalformedURLException) IOException(java.io.IOException) ProActiveException(org.objectweb.proactive.core.ProActiveException)

Example 77 with Node

use of org.objectweb.proactive.core.node.Node in project scheduling by ow2-proactive.

the class RMNodeStarter method createNodes.

private Map<String, Node> createNodes(String nodeName) {
    Map<String, Node> nodes = new HashMap<>(workers);
    List<String> createdNodeNames = getWorkersNodeNames(nodeName, workers);
    for (int nodeIndex = 0; nodeIndex < workers; nodeIndex++) {
        Node node = createLocalNode(createdNodeNames.get(nodeIndex));
        configureForDataSpace(node);
        String nodeUrl = node.getNodeInformation().getURL();
        nodes.put(nodeUrl, node);
        logger.info("URL of node " + nodeIndex + " " + nodeUrl);
    }
    return nodes;
}
Also used : HashMap(java.util.HashMap) Node(org.objectweb.proactive.core.node.Node) Throwables.getStackTraceAsString(com.google.common.base.Throwables.getStackTraceAsString)

Example 78 with Node

use of org.objectweb.proactive.core.node.Node in project scheduling by ow2-proactive.

the class RMFactory method startLocal.

/**
 * Creates and starts a Resource manager on the local host using the given initializer to configure it.
 * Only one RM can be started by JVM.
 *
 * @param initializer Use to configure the Resource Manager before starting it.
 * 		This parameter can be null, if so the Resource Manager will try to start on the JVM properties and
 * 		the "pa.rm.home" property MUST be set to the root of the RM directory.
 * @return a RM authentication that allow you to administer the RM or get its connection URL.
 *
 * @throws NodeException If the RM's node can't be created
 * @throws ActiveObjectCreationException If RMCore cannot be created
 * @throws AlreadyBoundException if a node with the same RMNode's name is already exist.
 * @throws IOException If node and RMCore fails.
 * @throws RMException if the connection to the authentication interface fails.
 */
public static RMAuthentication startLocal(RMInitializer initializer) throws Exception {
    if (rmcore == null) {
        if (initializer != null) {
            // configure application
            configure(initializer);
        }
        configureLog4j();
        Node nodeRM = NodeFactory.createLocalNode(PAResourceManagerProperties.RM_NODE_NAME.getValueAsString(), false, null, null);
        String RMCoreName = RMConstants.NAME_ACTIVE_OBJECT_RMCORE;
        rmcore = (RMCore) // the class to deploy
        PAActiveObject.newActive(// the class to deploy
        RMCore.class.getName(), new Object[] { RMCoreName, nodeRM }, nodeRM);
        logger.debug("New RM core started locally");
        return RMConnection.waitAndJoin(null);
    } else {
        throw new RMException("RM Core already running locally");
    }
}
Also used : RMCore(org.ow2.proactive.resourcemanager.core.RMCore) Node(org.objectweb.proactive.core.node.Node) RMException(org.ow2.proactive.resourcemanager.exception.RMException)

Example 79 with Node

use of org.objectweb.proactive.core.node.Node in project scheduling by ow2-proactive.

the class NodesRecoveryManager method recoverNodes.

protected void recoverNodes(NodeSource nodeSource) {
    // this log line is important for performance tests
    logger.info(START_TO_RECOVER_NODES);
    int lookUpTimeout = PAResourceManagerProperties.RM_NODELOOKUP_TIMEOUT.getValueAsInt();
    String nodeSourceName = nodeSource.getName();
    this.logWarnIfNodeSourceHasNoNode(nodeSource, nodeSourceName);
    Collection<RMNodeData> nodesData = this.rmCore.getDbManager().getNodesByNodeSource(nodeSourceName);
    logger.info("Number of nodes found in database for node source " + nodeSourceName + ": " + nodesData.size());
    List<RMNode> recoveredEligibleNodes = Collections.synchronizedList(new ArrayList<RMNode>());
    Map<NodeState, Integer> recoveredNodeStatesCounter = new HashMap<>();
    // as down node
    for (RMNodeData rmNodeData : nodesData) {
        String nodeUrl = rmNodeData.getNodeUrl();
        Node node = this.tryToLookupNode(nodeSource, lookUpTimeout, nodeUrl);
        RMNode rmnode = this.recoverRMNode(nodeSource, recoveredNodeStatesCounter, rmNodeData, nodeUrl, node);
        if (this.isEligible(rmnode)) {
            recoveredEligibleNodes.add(rmnode);
        }
    }
    this.rmCore.setEligibleNodesToRecover(recoveredEligibleNodes);
    this.logNodeRecoverySummary(nodeSourceName, recoveredNodeStatesCounter, recoveredEligibleNodes.size());
}
Also used : RMNode(org.ow2.proactive.resourcemanager.rmnode.RMNode) NodeState(org.ow2.proactive.resourcemanager.common.NodeState) HashMap(java.util.HashMap) RMNode(org.ow2.proactive.resourcemanager.rmnode.RMNode) Node(org.objectweb.proactive.core.node.Node) RMNodeData(org.ow2.proactive.resourcemanager.db.RMNodeData)

Example 80 with Node

use of org.objectweb.proactive.core.node.Node in project scheduling by ow2-proactive.

the class RamSchedulingPolicy method canRunTaskOnNode.

private boolean canRunTaskOnNode(NodeSet selectedNodes, EligibleTaskDescriptor task, double neededRam) {
    Node n = selectedNodes.get(0);
    try {
        double freeRam = getFreeRamFromNode(n);
        logger.debug("Free Ram for node (" + n.getNodeInformation().getName() + ") : " + freeRam + " , neededRam : " + neededRam);
        if (freeRam >= neededRam) {
            logger.debug("Task " + ((EligibleTaskDescriptorImpl) task).getInternal().getName() + " can execute on " + n);
            n.setProperty(RAM_VARIABLE_NAME, "" + neededRam);
            return true;
        }
    } catch (Exception e) {
        logger.error("Error while setting the property " + RAM_VARIABLE_NAME);
        throw new RuntimeException(e);
    }
    return false;
}
Also used : Node(org.objectweb.proactive.core.node.Node) ActiveObjectCreationException(org.objectweb.proactive.ActiveObjectCreationException) NodeException(org.objectweb.proactive.core.node.NodeException)

Aggregations

Node (org.objectweb.proactive.core.node.Node)80 Test (org.junit.Test)28 RMFunctionalTest (functionaltests.utils.RMFunctionalTest)21 NodeSet (org.ow2.proactive.utils.NodeSet)19 RMNode (org.ow2.proactive.resourcemanager.rmnode.RMNode)18 ResourceManager (org.ow2.proactive.resourcemanager.frontend.ResourceManager)16 HashMap (java.util.HashMap)15 TestNode (functionaltests.utils.TestNode)11 StaticPolicy (org.ow2.proactive.resourcemanager.nodesource.policy.StaticPolicy)11 NodeException (org.objectweb.proactive.core.node.NodeException)9 DefaultInfrastructureManager (org.ow2.proactive.resourcemanager.nodesource.infrastructure.DefaultInfrastructureManager)9 RMDeployingNode (org.ow2.proactive.resourcemanager.rmnode.RMDeployingNode)9 Criteria (org.ow2.proactive.utils.Criteria)8 IOException (java.io.IOException)7 LinkedList (java.util.LinkedList)7 RMNodeEvent (org.ow2.proactive.resourcemanager.common.event.RMNodeEvent)7 RMException (org.ow2.proactive.resourcemanager.exception.RMException)7 BooleanWrapper (org.objectweb.proactive.core.util.wrapper.BooleanWrapper)6 InetAddress (java.net.InetAddress)5 ArrayList (java.util.ArrayList)5