/// <exception cref="System.Exception"/> private void KillApplication(MockRM rm, ApplicationId appId, ApplicationAttemptId appAttemptId, RMAppState rmAppState) { KillApplicationResponse response = rm.KillApp(appId); NUnit.Framework.Assert.IsTrue(response.GetIsKillCompleted() == IsFinalState(rmAppState )); RMApp loadedApp0 = rm.GetRMContext().GetRMApps()[appId]; rm.WaitForState(appId, RMAppState.Killed); if (appAttemptId != null) { rm.WaitForState(appAttemptId, RMAppAttemptState.Killed); } // no new attempt is created. NUnit.Framework.Assert.AreEqual(1, loadedApp0.GetAppAttempts().Count); }
/// <exception cref="Org.Apache.Hadoop.Yarn.Exceptions.YarnException"/> /// <exception cref="System.IO.IOException"/> public override void KillApplication(ApplicationId applicationId) { KillApplicationRequest request = Org.Apache.Hadoop.Yarn.Util.Records.NewRecord <KillApplicationRequest >(); request.SetApplicationId(applicationId); try { int pollCount = 0; long startTime = Runtime.CurrentTimeMillis(); while (true) { KillApplicationResponse response = rmClient.ForceKillApplication(request); if (response.GetIsKillCompleted()) { Log.Info("Killed application " + applicationId); break; } long elapsedMillis = Runtime.CurrentTimeMillis() - startTime; if (EnforceAsyncAPITimeout() && elapsedMillis >= this.asyncApiPollTimeoutMillis) { throw new YarnException("Timed out while waiting for application " + applicationId + " to be killed."); } if (++pollCount % 10 == 0) { Log.Info("Waiting for application " + applicationId + " to be killed."); } Sharpen.Thread.Sleep(asyncApiPollIntervalMillis); } } catch (Exception) { Log.Error("Interrupted while waiting for application " + applicationId + " to be killed." ); } }