/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.hadoop.mapreduce.v2.app.job; import org.apache.hadoop.classification.InterfaceAudience.Private; /** * TaskAttemptImpl internal state machine states. * */ @Private public enum TaskAttemptStateInternal { NEW, UNASSIGNED, ASSIGNED, RUNNING, COMMIT_PENDING, // Transition into SUCCESS_FINISHING_CONTAINER // After the attempt finishes successfully from // TaskUmbilicalProtocol's point of view, it will transition to // SUCCESS_FINISHING_CONTAINER state. That will give a chance for the // container to exit by itself. In the transition, // the attempt will notify the task via T_ATTEMPT_SUCCEEDED so that // from job point of view, the task is considered succeeded. // Transition out of SUCCESS_FINISHING_CONTAINER // The attempt will transition from SUCCESS_FINISHING_CONTAINER to // SUCCESS_CONTAINER_CLEANUP if it doesn't receive container exit // notification within TASK_EXIT_TIMEOUT; // Or it will transition to SUCCEEDED if it receives container exit // notification from YARN. SUCCESS_FINISHING_CONTAINER, // Transition into FAIL_FINISHING_CONTAINER // After the attempt fails from // TaskUmbilicalProtocol's point of view, it will transition to // FAIL_FINISHING_CONTAINER state. That will give a chance for the container // to exit by itself. In the transition, // the attempt will notify the task via T_ATTEMPT_FAILED so that // from job point of view, the task is considered failed. // Transition out of FAIL_FINISHING_CONTAINER // The attempt will transition from FAIL_FINISHING_CONTAINER to // FAIL_CONTAINER_CLEANUP if it doesn't receive container exit // notification within TASK_EXIT_TIMEOUT; // Or it will transition to FAILED if it receives container exit // notification from YARN. FAIL_FINISHING_CONTAINER, SUCCESS_CONTAINER_CLEANUP, SUCCEEDED, FAIL_CONTAINER_CLEANUP, FAIL_TASK_CLEANUP, FAILED, KILL_CONTAINER_CLEANUP, KILL_TASK_CLEANUP, KILLED, }