Exemple #1
0
        /// <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."
                          );
            }
        }