diff --git a/CHANGES.txt b/CHANGES.txt
index ed48674..3d4bf9c 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -5,6 +5,9 @@
 
     MAPREDUCE-279
 
+    Fixing the bug which was causing FAILED jobs to be displayed as COMPLETED
+    on the RM UI. (vinodkv)
+
     Fixing broken link to logs for container on NM web UI. (vinodkv)
 
     Miscellaneous UI fixes + source code formatting for
diff --git a/yarn/yarn-server/yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/applicationsmanager/AMLauncher.java b/yarn/yarn-server/yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/applicationsmanager/AMLauncher.java
index 55e4334..55cb3d0 100644
--- a/yarn/yarn-server/yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/applicationsmanager/AMLauncher.java
+++ b/yarn/yarn-server/yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/applicationsmanager/AMLauncher.java
@@ -47,6 +47,7 @@
 import org.apache.hadoop.yarn.api.protocolrecords.StartContainerRequest;
 import org.apache.hadoop.yarn.api.protocolrecords.StopContainerRequest;
 import org.apache.hadoop.yarn.api.records.ApplicationId;
+import org.apache.hadoop.yarn.api.records.ApplicationState;
 import org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext;
 import org.apache.hadoop.yarn.api.records.Container;
 import org.apache.hadoop.yarn.api.records.ContainerId;
@@ -64,6 +65,7 @@
 import org.apache.hadoop.yarn.security.client.ClientToAMSecretManager;
 import org.apache.hadoop.yarn.server.resourcemanager.ResourceManager.RMContext;
 import org.apache.hadoop.yarn.server.resourcemanager.applicationsmanager.events.ASMEvent;
+import org.apache.hadoop.yarn.server.resourcemanager.applicationsmanager.events.ApplicationFinishEvent;
 import org.apache.hadoop.yarn.server.resourcemanager.applicationsmanager.events.ApplicationMasterEvents.AMLauncherEventType;
 import org.apache.hadoop.yarn.server.resourcemanager.applicationsmanager.events.ApplicationMasterEvents.ApplicationEventType;
 
@@ -271,7 +273,8 @@
       } catch(IOException ie) {
         LOG.info("Error cleaning master ", ie);
       }
-      handler.handle(new ASMEvent<ApplicationEventType>(ApplicationEventType.FINISH, master));
+      handler.handle(new ApplicationFinishEvent(master,
+          ApplicationState.COMPLETED)); // Doesn't matter what state you send :) :(
       break;
     default:
       break;
diff --git a/yarn/yarn-server/yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/applicationsmanager/AMTracker.java b/yarn/yarn-server/yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/applicationsmanager/AMTracker.java
index 156af0d..f3ba69a 100644
--- a/yarn/yarn-server/yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/applicationsmanager/AMTracker.java
+++ b/yarn/yarn-server/yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/applicationsmanager/AMTracker.java
@@ -46,6 +46,7 @@
 import org.apache.hadoop.yarn.server.resourcemanager.RMConfig;
 import org.apache.hadoop.yarn.server.resourcemanager.ResourceManager.RMContext;
 import org.apache.hadoop.yarn.server.resourcemanager.applicationsmanager.events.ASMEvent;
+import org.apache.hadoop.yarn.server.resourcemanager.applicationsmanager.events.ApplicationFinishEvent;
 import org.apache.hadoop.yarn.server.resourcemanager.applicationsmanager.events.ApplicationMasterEvents.ApplicationEventType;
 import org.apache.hadoop.yarn.server.resourcemanager.recovery.ApplicationsStore;
 import org.apache.hadoop.yarn.server.resourcemanager.recovery.ApplicationsStore.ApplicationStore;
@@ -261,8 +262,9 @@
     masterInfo.getMaster().setDiagnostics(
         remoteApplicationMaster.getDiagnostics());
 
-    rmContext.getDispatcher().getSyncHandler().handle(new ASMEvent<ApplicationEventType>(
-        ApplicationEventType.FINISH, masterInfo));
+    rmContext.getDispatcher().getSyncHandler().handle(
+        new ApplicationFinishEvent(masterInfo, remoteApplicationMaster
+            .getState()));
   }
 
   public ApplicationMasterInfo get(ApplicationId applicationId) {
diff --git a/yarn/yarn-server/yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/applicationsmanager/ApplicationMasterInfo.java b/yarn/yarn-server/yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/applicationsmanager/ApplicationMasterInfo.java
index b490a56..288ce3a 100644
--- a/yarn/yarn-server/yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/applicationsmanager/ApplicationMasterInfo.java
+++ b/yarn/yarn-server/yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/applicationsmanager/ApplicationMasterInfo.java
@@ -20,6 +20,7 @@
 
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.EnumSet;
 import java.util.List;
 
 import org.apache.commons.logging.Log;
@@ -38,12 +39,14 @@
 import org.apache.hadoop.yarn.factory.providers.RecordFactoryProvider;
 import org.apache.hadoop.yarn.server.resourcemanager.ResourceManager.RMContext;
 import org.apache.hadoop.yarn.server.resourcemanager.applicationsmanager.events.ASMEvent;
+import org.apache.hadoop.yarn.server.resourcemanager.applicationsmanager.events.ApplicationFinishEvent;
 import org.apache.hadoop.yarn.server.resourcemanager.applicationsmanager.events.ApplicationMasterEvents.AMLauncherEventType;
 import org.apache.hadoop.yarn.server.resourcemanager.applicationsmanager.events.ApplicationMasterEvents.ApplicationEventType;
 import org.apache.hadoop.yarn.server.resourcemanager.applicationsmanager.events.ApplicationMasterEvents.ApplicationTrackerEventType;
 import org.apache.hadoop.yarn.server.resourcemanager.applicationsmanager.events.ApplicationMasterEvents.SNEventType;
 import org.apache.hadoop.yarn.server.resourcemanager.recovery.ApplicationsStore.ApplicationStore;
 import org.apache.hadoop.yarn.state.InvalidStateTransitonException;
+import org.apache.hadoop.yarn.state.MultipleArcTransition;
 import org.apache.hadoop.yarn.state.SingleArcTransition;
 import org.apache.hadoop.yarn.state.StateMachine;
 import org.apache.hadoop.yarn.state.StateMachineFactory;
@@ -93,125 +96,108 @@
   <ApplicationMasterInfo, ApplicationState, ApplicationEventType, ASMEvent<ApplicationEventType>>
   (ApplicationState.PENDING)
 
+  // Transitions from PENDING State
   .addTransition(ApplicationState.PENDING, ApplicationState.ALLOCATING,
-  ApplicationEventType.ALLOCATE, allocateTransition)
-  
+      ApplicationEventType.ALLOCATE, allocateTransition)
   .addTransition(ApplicationState.PENDING, ApplicationState.FAILED,
-  ApplicationEventType.FAILED)
-  
-  .addTransition(ApplicationState.PENDING, ApplicationState.KILLED, 
-  ApplicationEventType.KILL)
-
-  .addTransition(ApplicationState.PENDING, ApplicationState.ALLOCATING, 
+      ApplicationEventType.FAILED)
+  .addTransition(ApplicationState.PENDING, ApplicationState.KILLED,
+      ApplicationEventType.KILL)
+  .addTransition(ApplicationState.PENDING, ApplicationState.ALLOCATING,
       ApplicationEventType.RECOVER, allocateTransition)
-    
-  .addTransition(ApplicationState.PENDING, ApplicationState.ALLOCATING, 
-  ApplicationEventType.RELEASED, new ScheduleTransition())
+  .addTransition(ApplicationState.PENDING, ApplicationState.ALLOCATING,
+      ApplicationEventType.RELEASED, new ScheduleTransition())
 
-  .addTransition(ApplicationState.EXPIRED_PENDING, ApplicationState.ALLOCATING, 
-  ApplicationEventType.ALLOCATE, allocateTransition)
-  
-  .addTransition(ApplicationState.EXPIRED_PENDING, ApplicationState.ALLOCATING,
-  ApplicationEventType.RECOVER, allocateTransition)
-  
-  .addTransition(ApplicationState.EXPIRED_PENDING, ApplicationState.FAILED,
-  ApplicationEventType.FAILED_MAX_RETRIES, failedTransition)
-  
-  .addTransition(ApplicationState.EXPIRED_PENDING, ApplicationState.KILLED,
-   ApplicationEventType.KILL, killTransition)
- 
+   // Transitions from ALLOCATING State
   .addTransition(ApplicationState.ALLOCATING, ApplicationState.ALLOCATED,
-  ApplicationEventType.ALLOCATED, new AllocatedTransition())
+      ApplicationEventType.ALLOCATED, new AllocatedTransition())
+  .addTransition(ApplicationState.ALLOCATING,
+      ApplicationState.ALLOCATING, ApplicationEventType.RECOVER,
+      allocateTransition)
+  .addTransition(ApplicationState.ALLOCATING, ApplicationState.KILLED,
+      ApplicationEventType.KILL, new AllocatingKillTransition())
 
-  .addTransition(ApplicationState.ALLOCATING, ApplicationState.ALLOCATING,
-  ApplicationEventType.RECOVER, allocateTransition)
-      
-  .addTransition(ApplicationState.ALLOCATING, ApplicationState.KILLED, 
-  ApplicationEventType.KILL, new AllocatingKillTransition())
-
-  .addTransition(ApplicationState.ALLOCATED, ApplicationState.KILLED, 
-  ApplicationEventType.KILL, killTransition)
-
+  // Transitions from ALLOCATED State
+  .addTransition(ApplicationState.ALLOCATED, ApplicationState.KILLED,
+      ApplicationEventType.KILL, killTransition)
   .addTransition(ApplicationState.ALLOCATED, ApplicationState.LAUNCHING,
-  ApplicationEventType.LAUNCH, launchTransition)
-
+      ApplicationEventType.LAUNCH, launchTransition)
   .addTransition(ApplicationState.ALLOCATED, ApplicationState.LAUNCHING,
-  ApplicationEventType.RECOVER, new RecoverLaunchTransition())
-      
+      ApplicationEventType.RECOVER, new RecoverLaunchTransition())
+
+  // Transitions from LAUNCHING State
   .addTransition(ApplicationState.LAUNCHING, ApplicationState.LAUNCHED,
-  ApplicationEventType.LAUNCHED, launchedTransition)
-  
+      ApplicationEventType.LAUNCHED, launchedTransition)
   .addTransition(ApplicationState.LAUNCHING, ApplicationState.PENDING,
-  ApplicationEventType.LAUNCH_FAILED, failedLaunchTransition)
-  
-  /** we cant say if the application was launched or not on a recovery, so for now 
-   * we assume it was launched and wait for its restart.
-   */
+      ApplicationEventType.LAUNCH_FAILED, failedLaunchTransition)
+  // We cant say if the application was launched or not on a recovery, so
+  // for now we assume it was launched and wait for its restart.
   .addTransition(ApplicationState.LAUNCHING, ApplicationState.LAUNCHED,
-  ApplicationEventType.RECOVER, new RecoverLaunchedTransition())
-  
+      ApplicationEventType.RECOVER, new RecoverLaunchedTransition())
   .addTransition(ApplicationState.LAUNCHING, ApplicationState.KILLED,
-   ApplicationEventType.KILL, killTransition)
-   
-  .addTransition(ApplicationState.LAUNCHED, ApplicationState.CLEANUP, 
-  ApplicationEventType.KILL, killTransition)
-  
+      ApplicationEventType.KILL, killTransition)
+
+  // Transitions from LAUNCHED State
+  .addTransition(ApplicationState.LAUNCHED, ApplicationState.CLEANUP,
+      ApplicationEventType.KILL, killTransition)
   .addTransition(ApplicationState.LAUNCHED, ApplicationState.FAILED,
-  ApplicationEventType.EXPIRE, expireTransition)
-  
-  .addTransition(ApplicationState.LAUNCHED, ApplicationState.RUNNING, 
-  ApplicationEventType.REGISTERED, new RegisterTransition())
-    
-  .addTransition(ApplicationState.LAUNCHED, ApplicationState.LAUNCHED,
-   ApplicationEventType.RECOVER)
-
-  /* for now we assume that acting on expiry is synchronous and we do not 
-   * have to wait for cleanup acks from scheduler negotiator and launcher.
-   */
-  .addTransition(ApplicationState.LAUNCHED, ApplicationState.EXPIRED_PENDING,
       ApplicationEventType.EXPIRE, expireTransition)
-      
-  .addTransition(ApplicationState.RUNNING,  ApplicationState.EXPIRED_PENDING, 
-  ApplicationEventType.EXPIRE, expireTransition)
-  
-  .addTransition(ApplicationState.RUNNING, ApplicationState.COMPLETED,
-  ApplicationEventType.FINISH, new DoneTransition())
+   .addTransition(ApplicationState.LAUNCHED, ApplicationState.RUNNING,
+      ApplicationEventType.REGISTERED, new RegisterTransition())
+  .addTransition(ApplicationState.LAUNCHED, ApplicationState.LAUNCHED,
+      ApplicationEventType.RECOVER)
+  // for now we assume that acting on expiry is synchronous and we do not
+  // have to wait for cleanup acks from scheduler negotiator and launcher.
+  .addTransition(ApplicationState.LAUNCHED,
+      ApplicationState.EXPIRED_PENDING, ApplicationEventType.EXPIRE,
+      expireTransition)
 
+  // Transitions from RUNNING State
+  .addTransition(ApplicationState.RUNNING,
+      ApplicationState.EXPIRED_PENDING, ApplicationEventType.EXPIRE,
+      expireTransition)
+  .addTransition(ApplicationState.RUNNING,
+      EnumSet.of(ApplicationState.COMPLETED, ApplicationState.FAILED),
+      ApplicationEventType.FINISH, new DoneTransition())
+      // TODO: For now, no KILLED above. As all kills come to RM directly.
   .addTransition(ApplicationState.RUNNING, ApplicationState.RUNNING,
-  ApplicationEventType.STATUSUPDATE, statusUpdatetransition)
-
+      ApplicationEventType.STATUSUPDATE, statusUpdatetransition)
   .addTransition(ApplicationState.RUNNING, ApplicationState.KILLED,
-   ApplicationEventType.KILL, killTransition)
-
+      ApplicationEventType.KILL, killTransition)
   .addTransition(ApplicationState.RUNNING, ApplicationState.RUNNING, 
-  ApplicationEventType.RECOVER, new RecoverRunningTransition())
-  
-  .addTransition(ApplicationState.COMPLETED, ApplicationState.COMPLETED, 
-  ApplicationEventType.EXPIRE)
+      ApplicationEventType.RECOVER, new RecoverRunningTransition())
 
+  // Transitions from EXPIRED_PENDING State
+  .addTransition(ApplicationState.EXPIRED_PENDING,
+      ApplicationState.ALLOCATING, ApplicationEventType.ALLOCATE,
+      allocateTransition)
+  .addTransition(ApplicationState.EXPIRED_PENDING,
+      ApplicationState.ALLOCATING, ApplicationEventType.RECOVER,
+      allocateTransition)
+   .addTransition(ApplicationState.EXPIRED_PENDING,
+      ApplicationState.FAILED, ApplicationEventType.FAILED_MAX_RETRIES,
+      failedTransition)
+   .addTransition(ApplicationState.EXPIRED_PENDING,
+      ApplicationState.KILLED, ApplicationEventType.KILL, killTransition)
+
+  // Transitions from COMPLETED State
   .addTransition(ApplicationState.COMPLETED, ApplicationState.COMPLETED,
-  ApplicationEventType.FINISH)
-  
-  .addTransition(ApplicationState.COMPLETED, ApplicationState.COMPLETED,
-   ApplicationEventType.KILL)
-   
-  .addTransition(ApplicationState.COMPLETED, ApplicationState.COMPLETED,
-  ApplicationEventType.RECOVER)
-  
+      EnumSet.of(ApplicationEventType.EXPIRE,
+          ApplicationEventType.FINISH, ApplicationEventType.KILL,
+          ApplicationEventType.RECOVER))
+
+  // Transitions from FAILED State
   .addTransition(ApplicationState.FAILED, ApplicationState.FAILED,
-      ApplicationEventType.RECOVER)
-  .addTransition(ApplicationState.FAILED, ApplicationState.FAILED, 
-     ApplicationEventType.FINISH)
-  
-  .addTransition(ApplicationState.FAILED, ApplicationState.FAILED, ApplicationEventType.KILL)
-  
+      EnumSet.of(ApplicationEventType.RECOVER, 
+           ApplicationEventType.FINISH,
+           ApplicationEventType.KILL))
+
+  // Transitions from KILLED State
   .addTransition(ApplicationState.KILLED, ApplicationState.KILLED, 
-      ApplicationEventType.RECOVER)
-  
-  .addTransition(ApplicationState.KILLED, ApplicationState.KILLED, ApplicationEventType.KILL)
-  
-  .addTransition(ApplicationState.KILLED, ApplicationState.KILLED,
-      ApplicationEventType.FINISH)
+      EnumSet.of(ApplicationEventType.RECOVER,
+           ApplicationEventType.KILL,
+           ApplicationEventType.FINISH))
+
   .installTopology();
 
 
@@ -307,10 +293,10 @@
   
   /* the applicaiton master completed successfully */
   private static class DoneTransition implements 
-    SingleArcTransition<ApplicationMasterInfo, ASMEvent<ApplicationEventType>> {
+    MultipleArcTransition<ApplicationMasterInfo, ASMEvent<ApplicationEventType>, ApplicationState> {
 
     @Override
-    public void transition(ApplicationMasterInfo masterInfo,
+    public ApplicationState transition(ApplicationMasterInfo masterInfo,
     ASMEvent<ApplicationEventType> event) {
       masterInfo.handler.handle(new ASMEvent<SNEventType>(
         SNEventType.CLEANUP, masterInfo));
@@ -318,6 +304,9 @@
         AMLauncherEventType.CLEANUP, masterInfo));
       masterInfo.handler.handle(new ASMEvent<ApplicationTrackerEventType>(
       ApplicationTrackerEventType.REMOVE, masterInfo));
+
+      ApplicationFinishEvent finishEvent = (ApplicationFinishEvent) event;
+      return finishEvent.getFinalApplicationState();
     }
   }
   
diff --git a/yarn/yarn-server/yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/applicationsmanager/events/ApplicationFinishEvent.java b/yarn/yarn-server/yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/applicationsmanager/events/ApplicationFinishEvent.java
new file mode 100644
index 0000000..7776324
--- /dev/null
+++ b/yarn/yarn-server/yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/applicationsmanager/events/ApplicationFinishEvent.java
@@ -0,0 +1,37 @@
+/**
+* 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.yarn.server.resourcemanager.applicationsmanager.events;
+
+import org.apache.hadoop.yarn.api.records.ApplicationState;
+import org.apache.hadoop.yarn.server.resourcemanager.applicationsmanager.AppContext;
+import org.apache.hadoop.yarn.server.resourcemanager.applicationsmanager.events.ApplicationMasterEvents.ApplicationEventType;
+
+public class ApplicationFinishEvent extends ASMEvent<ApplicationEventType> {
+  private final ApplicationState finalState;
+
+  public ApplicationFinishEvent(AppContext context,
+      ApplicationState finalState) {
+    super(ApplicationEventType.FINISH, context);
+    this.finalState = finalState;
+  }
+
+  public ApplicationState getFinalApplicationState() {
+    return this.finalState;
+  }
+}
\ No newline at end of file
diff --git a/yarn/yarn-server/yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/applicationsmanager/events/ApplicationMasterEvents.java b/yarn/yarn-server/yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/applicationsmanager/events/ApplicationMasterEvents.java
index b4e834e..e289cd4 100644
--- a/yarn/yarn-server/yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/applicationsmanager/events/ApplicationMasterEvents.java
+++ b/yarn/yarn-server/yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/applicationsmanager/events/ApplicationMasterEvents.java
@@ -47,21 +47,37 @@
   }
   
   public enum ApplicationEventType {
-    ALLOCATE,
+
+    // Source: ApplicationMasterService -> ASM -> AMTracker-self
     REGISTERED,
-    RELEASED,
-    RECOVER,
-    REMOVE,
     STATUSUPDATE,
-    LAUNCH,
-    LAUNCH_FAILED,
-    LAUNCHED,
-    FAILED,
-    FAILED_MAX_RETRIES,
+    FINISH, // Also by AMLauncher
+
+    // Source: SchedulerNegotiator.
     ALLOCATED,
+    RELEASED,
+
+    // Source: ASM -> AMTracker
+    ALLOCATE, // Also AMTracker->Self
+    FAILED,
+    RECOVER,
+
+    // TODO: Nobody Uses!
+    REMOVE,
     CLEANUP,
-    FINISH, 
+
+    // Source: AMLauncher
+    LAUNCHED,
+    LAUNCH_FAILED,
+
+    // Source: AMTracker: Self-event
+    LAUNCH,
+    FAILED_MAX_RETRIES,
+
+    // Source: AMLivelinessMonitor -> AMTracker
     EXPIRE,
+
+    // Source: ClientRMService -> ASM -> AMTracker
     KILL
   };
 }
diff --git a/yarn/yarn-server/yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/applicationsmanager/TestASMStateMachine.java b/yarn/yarn-server/yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/applicationsmanager/TestASMStateMachine.java
index 241f91b..2e2b7d6 100644
--- a/yarn/yarn-server/yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/applicationsmanager/TestASMStateMachine.java
+++ b/yarn/yarn-server/yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/applicationsmanager/TestASMStateMachine.java
@@ -39,6 +39,7 @@
 import org.apache.hadoop.yarn.server.resourcemanager.ResourceManager;
 import org.apache.hadoop.yarn.server.resourcemanager.ResourceManager.RMContext;
 import org.apache.hadoop.yarn.server.resourcemanager.applicationsmanager.events.ASMEvent;
+import org.apache.hadoop.yarn.server.resourcemanager.applicationsmanager.events.ApplicationFinishEvent;
 import org.apache.hadoop.yarn.server.resourcemanager.applicationsmanager.events.ApplicationMasterEvents.AMLauncherEventType;
 import org.apache.hadoop.yarn.server.resourcemanager.applicationsmanager.events.ApplicationMasterEvents.ApplicationEventType;
 import org.apache.hadoop.yarn.server.resourcemanager.applicationsmanager.events.ApplicationMasterEvents.ApplicationTrackerEventType;
@@ -259,8 +260,8 @@
 
     Assert.assertEquals(ApplicationState.RUNNING, masterInfo.getState());
 
-    handler.handle(
-        new ASMEvent<ApplicationEventType>(ApplicationEventType.FINISH, masterInfo));
+    handler.handle(new ApplicationFinishEvent(masterInfo,
+        ApplicationState.COMPLETED));
     waitForState(ApplicationState.COMPLETED, masterInfo);
     Assert.assertEquals(ApplicationState.COMPLETED, masterInfo.getState());
     /* check if clean up is called for everyone */
diff --git a/yarn/yarn-server/yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/applicationsmanager/TestApplicationMasterLauncher.java b/yarn/yarn-server/yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/applicationsmanager/TestApplicationMasterLauncher.java
index 835fb60..f9e2bc6 100644
--- a/yarn/yarn-server/yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/applicationsmanager/TestApplicationMasterLauncher.java
+++ b/yarn/yarn-server/yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/applicationsmanager/TestApplicationMasterLauncher.java
@@ -26,6 +26,7 @@
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.yarn.api.records.ApplicationId;
+import org.apache.hadoop.yarn.api.records.ApplicationState;
 import org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext;
 import org.apache.hadoop.yarn.event.EventHandler;
 import org.apache.hadoop.yarn.factories.RecordFactory;
@@ -35,6 +36,7 @@
 import org.apache.hadoop.yarn.server.resourcemanager.ResourceManager;
 import org.apache.hadoop.yarn.server.resourcemanager.ResourceManager.RMContext;
 import org.apache.hadoop.yarn.server.resourcemanager.applicationsmanager.events.ASMEvent;
+import org.apache.hadoop.yarn.server.resourcemanager.applicationsmanager.events.ApplicationFinishEvent;
 import org.apache.hadoop.yarn.server.resourcemanager.applicationsmanager.events.ApplicationMasterEvents.AMLauncherEventType;
 import org.apache.hadoop.yarn.server.resourcemanager.applicationsmanager.events.ApplicationMasterEvents.ApplicationEventType;
 import org.apache.hadoop.yarn.server.resourcemanager.recovery.MemStore;
@@ -93,7 +95,8 @@
     }
     public void run() {
       cleanedUp.incrementAndGet();
-      asmHandle.handle(new ASMEvent<ApplicationEventType>(ApplicationEventType.FINISH, null));
+      asmHandle.handle(new ApplicationFinishEvent(null,
+          ApplicationState.COMPLETED));
     }
   }
 
