Example usage for org.apache.hadoop.yarn.api.records ContainerExitStatus INVALID

List of usage examples for org.apache.hadoop.yarn.api.records ContainerExitStatus INVALID

Introduction

In this page you can find the example usage for org.apache.hadoop.yarn.api.records ContainerExitStatus INVALID.

Prototype

int INVALID

To view the source code for org.apache.hadoop.yarn.api.records ContainerExitStatus INVALID.

Click Source Link

Usage

From source file:gobblin.yarn.YarnService.java

License:Apache License

private ImmutableMap.Builder<String, String> buildContainerStatusEventMetadata(
        ContainerStatus containerStatus) {
    ImmutableMap.Builder<String, String> eventMetadataBuilder = new ImmutableMap.Builder<>();
    eventMetadataBuilder.put(GobblinYarnMetricTagNames.CONTAINER_ID,
            containerStatus.getContainerId().toString());
    eventMetadataBuilder.put(GobblinYarnEventConstants.EventMetadata.CONTAINER_STATUS_CONTAINER_STATE,
            containerStatus.getState().toString());
    if (ContainerExitStatus.INVALID != containerStatus.getExitStatus()) {
        eventMetadataBuilder.put(GobblinYarnEventConstants.EventMetadata.CONTAINER_STATUS_EXIT_STATUS,
                containerStatus.getExitStatus() + "");
    }/*ww  w .  j av a 2  s  .c  o m*/
    if (!Strings.isNullOrEmpty(containerStatus.getDiagnostics())) {
        eventMetadataBuilder.put(GobblinYarnEventConstants.EventMetadata.CONTAINER_STATUS_EXIT_DIAGNOSTICS,
                containerStatus.getDiagnostics());
    }

    return eventMetadataBuilder;
}

From source file:org.apache.tez.dag.app.rm.container.AMContainerImpl.java

License:Apache License

private void handleExtraTAAssign(AMContainerEventAssignTA event, TezTaskAttemptID currentTaId) {
    this.inError = true;
    String errorMessage = "AMScheduler Error: Multiple simultaneous " + "taskAttempt allocations to: "
            + this.getContainerId() + ". Attempts: " + currentTaId + ", " + event.getTaskAttemptId()
            + ". Current state: " + this.getState();
    this.maybeSendNodeFailureForFailedAssignment(event.getTaskAttemptId());
    this.sendTerminatingToTaskAttempt(event.getTaskAttemptId(), errorMessage,
            TaskAttemptTerminationCause.FRAMEWORK_ERROR);
    this.sendTerminatingToTaskAttempt(currentTaId, errorMessage, TaskAttemptTerminationCause.FRAMEWORK_ERROR);
    this.registerFailedAttempt(event.getTaskAttemptId());
    LOG.warn(errorMessage);/*  w  ww. ja  v a2s  . co  m*/
    this.logStopped(ContainerExitStatus.INVALID);
    this.sendStopRequestToNM();
    this.unregisterFromTAListener();
    this.unregisterFromContainerListener();
}

From source file:org.apache.tez.dag.app.rm.container.TestAMContainer.java

License:Apache License

@SuppressWarnings("rawtypes")
@Test(timeout = 5000)//  w  w  w.j  a v  a 2s . com
public void testContainerInternallyPreemptedAtRunning() {
    WrappedContainer wc = new WrappedContainer();
    List<Event> outgoingEvents;

    wc.launchContainer();

    wc.assignTaskAttempt(wc.taskAttemptID);
    wc.containerLaunched();
    wc.verifyState(AMContainerState.RUNNING);

    wc.containerCompleted(ContainerExitStatus.INVALID, TaskAttemptTerminationCause.INTERNAL_PREEMPTION);
    wc.verifyState(AMContainerState.COMPLETED);
    verify(wc.tal).registerRunningContainer(wc.containerID);
    verify(wc.tal).unregisterRunningContainer(wc.containerID);
    verify(wc.chh).register(wc.containerID);
    verify(wc.chh).unregister(wc.containerID);

    outgoingEvents = wc.verifyCountAndGetOutgoingEvents(1);
    verifyUnOrderedOutgoingEventTypes(outgoingEvents, TaskAttemptEventType.TA_CONTAINER_TERMINATED_BY_SYSTEM);
    Assert.assertEquals(TaskAttemptTerminationCause.INTERNAL_PREEMPTION,
            ((TaskAttemptEventContainerTerminatedBySystem) outgoingEvents.get(0)).getTerminationCause());

    assertFalse(wc.amContainer.isInErrorState());

    // Pending task complete. (Ideally, container should be dead at this point
    // and this event should not be generated. Network timeout on NM-RM heartbeat
    // can cause it to be genreated)
    wc.taskAttemptSucceeded(wc.taskAttemptID);
    wc.verifyNoOutgoingEvents();
    wc.verifyHistoryStopEvent();

    assertFalse(wc.amContainer.isInErrorState());
}

From source file:org.apache.tez.dag.app.rm.TaskSchedulerEventHandler.java

License:Apache License

@Override
public void preemptContainer(ContainerId containerId) {
    taskScheduler.deallocateContainer(containerId);
    // Inform the Containers about completion.
    sendEvent(new AMContainerEventCompleted(containerId, ContainerExitStatus.INVALID,
            "Container preempted internally", TaskAttemptTerminationCause.INTERNAL_PREEMPTION));
}

From source file:org.apache.tez.dag.app.rm.TaskSchedulerManager.java

License:Apache License

public void preemptContainer(int schedulerId, ContainerId containerId) {
    // TODO Why is this making a call back into the scheduler, when the call is originating from there.
    // An AMContainer instance should already exist if an attempt is being made to preempt it
    AMContainer amContainer = appContext.getAllContainers().get(containerId);
    try {/*from   ww w  .  java2  s. c  o  m*/
        taskSchedulers[amContainer.getTaskSchedulerIdentifier()].deallocateContainer(containerId);
    } catch (Exception e) {
        String msg = "Error in TaskScheduler when preempting container" + ", scheduler="
                + Utils.getTaskSchedulerIdentifierString(amContainer.getTaskSchedulerIdentifier(), appContext)
                + ", containerId=" + containerId;
        LOG.error(msg, e);
        sendEvent(new DAGAppMasterEventUserServiceFatalError(
                DAGAppMasterEventType.TASK_SCHEDULER_SERVICE_FATAL_ERROR, msg, e));
    }
    // Inform the Containers about completion.
    sendEvent(new AMContainerEventCompleted(containerId, ContainerExitStatus.INVALID,
            "Container preempted internally", TaskAttemptTerminationCause.INTERNAL_PREEMPTION));
}

From source file:yarnkit.utils.YarnUtils.java

License:Apache License

public static String getContainerExitStatusMessage(@Nonnull ContainerStatus status) {
    String containerId = status.getContainerId().toString();

    final String msg;
    final int exitStatus = status.getExitStatus();
    switch (exitStatus) {
    case ContainerExitStatus.SUCCESS: {
        msg = String.format("Container %s finished succesfully", containerId);
        break;//  ww  w  .  j  a va  2 s.  c  om
    }
    case ContainerExitStatus.ABORTED: {
        msg = String.format("Container %s aborted", containerId);
        break;
    }
    case ContainerExitStatus.DISKS_FAILED: {
        msg = String.format("Container %s ran out of disk", containerId);
        break;
    }
    case ContainerExitStatus.PREEMPTED: {
        msg = String.format("Container %s preempted", containerId);
        break;
    }
    case ContainerExitStatus.INVALID:
    default: {
        msg = String.format("Container %s exited with an invalid/unknown exit code: %d", containerId,
                exitStatus);
        break;
    }
    }

    String diagnostics = status.getDiagnostics();
    if (exitStatus == ContainerExitStatus.SUCCESS || Strings.isNullOrEmpty(diagnostics)) {
        return msg;
    } else {
        return msg + "\nDiagnostics: " + diagnostics;
    }
}