List of usage examples for org.apache.hadoop.yarn.api.records ContainerExitStatus INVALID
int INVALID
To view the source code for org.apache.hadoop.yarn.api.records ContainerExitStatus INVALID.
Click Source Link
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; } }