Search in sources :

Example 26 with JobId

use of org.apache.hyracks.api.job.JobId in project asterixdb by apache.

the class NodeManager method removeDeadNodes.

@Override
public Pair<Collection<String>, Collection<JobId>> removeDeadNodes() throws HyracksException {
    Set<String> deadNodes = new HashSet<>();
    Set<JobId> affectedJobIds = new HashSet<>();
    Iterator<Map.Entry<String, NodeControllerState>> nodeIterator = nodeRegistry.entrySet().iterator();
    while (nodeIterator.hasNext()) {
        Map.Entry<String, NodeControllerState> entry = nodeIterator.next();
        String nodeId = entry.getKey();
        NodeControllerState state = entry.getValue();
        if (state.incrementLastHeartbeatDuration() >= ccConfig.getHeartbeatMaxMisses()) {
            deadNodes.add(nodeId);
            affectedJobIds.addAll(state.getActiveJobIds());
            // Removes the node from node map.
            nodeIterator.remove();
            // Removes the node from IP map.
            removeNodeFromIpAddressMap(nodeId, state);
            // Updates the cluster capacity.
            resourceManager.update(nodeId, new NodeCapacity(0L, 0));
            LOGGER.info(entry.getKey() + " considered dead");
        }
    }
    return Pair.of(deadNodes, affectedJobIds);
}
Also used : NodeCapacity(org.apache.hyracks.api.job.resource.NodeCapacity) NodeControllerState(org.apache.hyracks.control.cc.NodeControllerState) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map) JobId(org.apache.hyracks.api.job.JobId) HashSet(java.util.HashSet)

Example 27 with JobId

use of org.apache.hyracks.api.job.JobId in project asterixdb by apache.

the class NCQueryServiceServlet method executeStatement.

@Override
protected void executeStatement(String statementsText, SessionOutput sessionOutput, IStatementExecutor.ResultDelivery delivery, IStatementExecutor.Stats stats, RequestParameters param, String handleUrl, long[] outExecStartEnd) throws Exception {
    // Running on NC -> send 'execute' message to CC
    INCServiceContext ncCtx = (INCServiceContext) serviceCtx;
    INCMessageBroker ncMb = (INCMessageBroker) ncCtx.getMessageBroker();
    IStatementExecutor.ResultDelivery ccDelivery = delivery == IStatementExecutor.ResultDelivery.IMMEDIATE ? IStatementExecutor.ResultDelivery.DEFERRED : delivery;
    ExecuteStatementResponseMessage responseMsg;
    MessageFuture responseFuture = ncMb.registerMessageFuture();
    try {
        ExecuteStatementRequestMessage requestMsg = new ExecuteStatementRequestMessage(ncCtx.getNodeId(), responseFuture.getFutureId(), queryLanguage, statementsText, sessionOutput.config(), ccDelivery, param.clientContextID, handleUrl);
        outExecStartEnd[0] = System.nanoTime();
        ncMb.sendMessageToCC(requestMsg);
        responseMsg = (ExecuteStatementResponseMessage) responseFuture.get(ExecuteStatementResponseMessage.DEFAULT_TIMEOUT_MILLIS, java.util.concurrent.TimeUnit.MILLISECONDS);
        outExecStartEnd[1] = System.nanoTime();
    } finally {
        ncMb.deregisterMessageFuture(responseFuture.getFutureId());
    }
    Throwable err = responseMsg.getError();
    if (err != null) {
        if (err instanceof Error) {
            throw (Error) err;
        } else if (err instanceof Exception) {
            throw (Exception) err;
        } else {
            throw new Exception(err.toString(), err);
        }
    }
    IStatementExecutor.ResultMetadata resultMetadata = responseMsg.getMetadata();
    if (delivery == IStatementExecutor.ResultDelivery.IMMEDIATE && !resultMetadata.getResultSets().isEmpty()) {
        for (Triple<JobId, ResultSetId, ARecordType> rsmd : resultMetadata.getResultSets()) {
            ResultReader resultReader = new ResultReader(getHyracksDataset(), rsmd.getLeft(), rsmd.getMiddle());
            ResultUtil.printResults(appCtx, resultReader, sessionOutput, stats, rsmd.getRight());
        }
    } else {
        sessionOutput.out().append(responseMsg.getResult());
    }
}
Also used : ResultReader(org.apache.asterix.app.result.ResultReader) ExecuteStatementResponseMessage(org.apache.asterix.app.message.ExecuteStatementResponseMessage) INCMessageBroker(org.apache.asterix.common.messaging.api.INCMessageBroker) ExecuteStatementRequestMessage(org.apache.asterix.app.message.ExecuteStatementRequestMessage) IStatementExecutor(org.apache.asterix.translator.IStatementExecutor) INCServiceContext(org.apache.hyracks.api.application.INCServiceContext) ResultSetId(org.apache.hyracks.api.dataset.ResultSetId) MessageFuture(org.apache.asterix.common.messaging.api.MessageFuture) ARecordType(org.apache.asterix.om.types.ARecordType) JobId(org.apache.hyracks.api.job.JobId)

Example 28 with JobId

use of org.apache.hyracks.api.job.JobId in project asterixdb by apache.

the class APIFramework method executeJobArray.

public void executeJobArray(IHyracksClientConnection hcc, Job[] jobs, PrintWriter out) throws Exception {
    for (Job job : jobs) {
        job.getJobSpec().setMaxReattempts(0);
        long startTime = System.currentTimeMillis();
        try {
            JobId jobId = hcc.startJob(job.getJobSpec());
            if (job.getSubmissionMode() == SubmissionMode.ASYNCHRONOUS) {
                continue;
            }
            hcc.waitForCompletion(jobId);
        } catch (Exception e) {
            e.printStackTrace();
            continue;
        }
        long endTime = System.currentTimeMillis();
        double duration = (endTime - startTime) / 1000.00;
        out.println("<pre>Duration: " + duration + " sec</pre>");
    }
}
Also used : Job(org.apache.asterix.common.utils.Job) JobId(org.apache.hyracks.api.job.JobId) ACIDException(org.apache.asterix.common.exceptions.ACIDException) AlgebricksException(org.apache.hyracks.algebricks.common.exceptions.AlgebricksException) RemoteException(java.rmi.RemoteException) AsterixException(org.apache.asterix.common.exceptions.AsterixException) CompilationException(org.apache.asterix.common.exceptions.CompilationException) IOException(java.io.IOException) HyracksException(org.apache.hyracks.api.exceptions.HyracksException)

Example 29 with JobId

use of org.apache.hyracks.api.job.JobId in project asterixdb by apache.

the class QueryCancellationServlet method delete.

@Override
protected void delete(IServletRequest request, IServletResponse response) throws IOException {
    // gets the parameter client_context_id from the request.
    String clientContextId = request.getParameter(CLIENT_CONTEXT_ID);
    if (clientContextId == null) {
        response.setStatus(HttpResponseStatus.BAD_REQUEST);
        return;
    }
    // Retrieves the corresponding Hyracks job id.
    IStatementExecutorContext runningQueries = (IStatementExecutorContext) ctx.get(ServletConstants.RUNNING_QUERIES_ATTR);
    IHyracksClientConnection hcc = (IHyracksClientConnection) ctx.get(ServletConstants.HYRACKS_CONNECTION_ATTR);
    JobId jobId = runningQueries.getJobIdFromClientContextId(clientContextId);
    if (jobId == null) {
        // response: NOT FOUND
        response.setStatus(HttpResponseStatus.NOT_FOUND);
        return;
    }
    try {
        // Cancels the on-going job.
        hcc.cancelJob(jobId);
        // Removes the cancelled query from the map activeQueries.
        runningQueries.removeJobIdFromClientContextId(clientContextId);
        // response: OK
        response.setStatus(HttpResponseStatus.OK);
    } catch (Exception e) {
        if (LOGGER.isLoggable(Level.WARNING)) {
            LOGGER.log(Level.WARNING, e.getMessage(), e);
        }
        // response: INTERNAL SERVER ERROR
        response.setStatus(HttpResponseStatus.INTERNAL_SERVER_ERROR);
    }
}
Also used : IHyracksClientConnection(org.apache.hyracks.api.client.IHyracksClientConnection) IStatementExecutorContext(org.apache.asterix.translator.IStatementExecutorContext) JobId(org.apache.hyracks.api.job.JobId) IOException(java.io.IOException)

Example 30 with JobId

use of org.apache.hyracks.api.job.JobId in project asterixdb by apache.

the class QueryTranslator method createAndRunJob.

private static void createAndRunJob(IHyracksClientConnection hcc, Mutable<JobId> jId, IStatementCompiler compiler, IMetadataLocker locker, ResultDelivery resultDelivery, IResultPrinter printer, String clientContextId, IStatementExecutorContext ctx) throws Exception {
    locker.lock();
    try {
        final JobSpecification jobSpec = compiler.compile();
        if (jobSpec == null) {
            return;
        }
        final JobId jobId = JobUtils.runJob(hcc, jobSpec, false);
        if (ctx != null && clientContextId != null) {
            // Adds the running job into the context.
            ctx.put(clientContextId, jobId);
        }
        if (jId != null) {
            jId.setValue(jobId);
        }
        if (ResultDelivery.ASYNC == resultDelivery) {
            printer.print(jobId);
            hcc.waitForCompletion(jobId);
        } else {
            hcc.waitForCompletion(jobId);
            printer.print(jobId);
        }
    } finally {
        locker.unlock();
        // No matter the job succeeds or fails, removes it into the context.
        if (ctx != null && clientContextId != null) {
            ctx.removeJobIdFromClientContextId(clientContextId);
        }
    }
}
Also used : JobSpecification(org.apache.hyracks.api.job.JobSpecification) JobId(org.apache.hyracks.api.job.JobId)

Aggregations

JobId (org.apache.hyracks.api.job.JobId)57 JobSpecification (org.apache.hyracks.api.job.JobSpecification)17 IHyracksClientConnection (org.apache.hyracks.api.client.IHyracksClientConnection)13 HyracksConnection (org.apache.hyracks.api.client.HyracksConnection)11 HyracksException (org.apache.hyracks.api.exceptions.HyracksException)10 CmdLineParser (org.kohsuke.args4j.CmdLineParser)9 Test (org.junit.Test)5 IOException (java.io.IOException)4 ArrayList (java.util.ArrayList)4 HashSet (java.util.HashSet)4 Map (java.util.Map)4 NodeControllerState (org.apache.hyracks.control.cc.NodeControllerState)4 INodeManager (org.apache.hyracks.control.cc.cluster.INodeManager)4 Joblet (org.apache.hyracks.control.nc.Joblet)4 ObjectNode (com.fasterxml.jackson.databind.node.ObjectNode)3 HashMap (java.util.HashMap)3 HyracksDataException (org.apache.hyracks.api.exceptions.HyracksDataException)3 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)2 InvocationTargetException (java.lang.reflect.InvocationTargetException)2 RemoteException (java.rmi.RemoteException)2