Пример #1
0
            /// <exception cref="System.Exception"/>
            public ApplicationReport Run()
            {
                GetApplicationReportRequest request = GetApplicationReportRequest.NewInstance(id);

                return(this._enclosing.appBaseProt.GetApplicationReport(request).GetApplicationReport
                           ());
            }
        /// <exception cref="System.Exception"/>
        private static ApplicationClientProtocol CreateMockRMClient(IList <ApplicationId>
                                                                    finishedApplicaitons, IList <ApplicationId> runningApplications)
        {
            ApplicationClientProtocol mockProtocol = Org.Mockito.Mockito.Mock <ApplicationClientProtocol
                                                                               >();

            if (finishedApplicaitons != null && !finishedApplicaitons.IsEmpty())
            {
                foreach (ApplicationId appId in finishedApplicaitons)
                {
                    GetApplicationReportRequest request = GetApplicationReportRequest.NewInstance(appId
                                                                                                  );
                    GetApplicationReportResponse response = CreateApplicationReportWithFinishedApplication
                                                                ();
                    Org.Mockito.Mockito.When(mockProtocol.GetApplicationReport(request)).ThenReturn(response
                                                                                                    );
                }
            }
            if (runningApplications != null && !runningApplications.IsEmpty())
            {
                foreach (ApplicationId appId in runningApplications)
                {
                    GetApplicationReportRequest request = GetApplicationReportRequest.NewInstance(appId
                                                                                                  );
                    GetApplicationReportResponse response = CreateApplicationReportWithRunningApplication
                                                                ();
                    Org.Mockito.Mockito.When(mockProtocol.GetApplicationReport(request)).ThenReturn(response
                                                                                                    );
                }
            }
            return(mockProtocol);
        }
Пример #3
0
        public virtual AppInfo GetApp(HttpServletRequest req, HttpServletResponse res, string
                                      appId)
        {
            UserGroupInformation callerUGI = GetUser(req);
            ApplicationId        id        = ParseApplicationId(appId);
            ApplicationReport    app       = null;

            try
            {
                if (callerUGI == null)
                {
                    GetApplicationReportRequest request = GetApplicationReportRequest.NewInstance(id);
                    app = appBaseProt.GetApplicationReport(request).GetApplicationReport();
                }
                else
                {
                    app = callerUGI.DoAs(new _PrivilegedExceptionAction_228(this, id));
                }
            }
            catch (Exception e)
            {
                RewrapAndThrowException(e);
            }
            if (app == null)
            {
                throw new NotFoundException("app with id: " + appId + " not found");
            }
            return(new AppInfo(app));
        }
Пример #4
0
        public virtual void TestApplicationNotFound()
        {
            ApplicationId appId = null;

            appId = ApplicationId.NewInstance(0, MaxApps + 1);
            GetApplicationReportRequest request = GetApplicationReportRequest.NewInstance(appId
                                                                                          );

            try
            {
                GetApplicationReportResponse response = clientService.GetApplicationReport(request
                                                                                           );
                NUnit.Framework.Assert.Fail("Exception should have been thrown before we reach here."
                                            );
            }
            catch (ApplicationNotFoundException e)
            {
                //This exception is expected.
                NUnit.Framework.Assert.IsTrue(e.Message.Contains("doesn't exist in the timeline store"
                                                                 ));
            }
            catch (Exception)
            {
                NUnit.Framework.Assert.Fail("Undesired exception caught");
            }
        }
Пример #5
0
        /// <exception cref="System.Exception"/>
        public virtual void TestInvalidatedAMHostPortOnAMRestart()
        {
            MockRM rm1 = new MockRM(conf);

            rm1.Start();
            MockNM nm1 = new MockNM("127.0.0.1:1234", 15120, rm1.GetResourceTrackerService());

            nm1.RegisterNode();
            // a failed app
            RMApp  app2 = rm1.SubmitApp(200);
            MockAM am2  = MockRM.LaunchAndRegisterAM(app2, rm1, nm1);

            nm1.NodeHeartbeat(am2.GetApplicationAttemptId(), 1, ContainerState.Complete);
            am2.WaitForState(RMAppAttemptState.Failed);
            rm1.WaitForState(app2.GetApplicationId(), RMAppState.Accepted);
            // before new attempt is launched, the app report returns the invalid AM
            // host and port.
            GetApplicationReportRequest request1 = GetApplicationReportRequest.NewInstance(app2
                                                                                           .GetApplicationId());
            ApplicationReport report1 = rm1.GetClientRMService().GetApplicationReport(request1
                                                                                      ).GetApplicationReport();

            NUnit.Framework.Assert.AreEqual("N/A", report1.GetHost());
            NUnit.Framework.Assert.AreEqual(-1, report1.GetRpcPort());
        }
Пример #6
0
        /// <exception cref="Org.Apache.Hadoop.Yarn.Exceptions.YarnException"/>
        /// <exception cref="System.IO.IOException"/>
        public override ApplicationReport GetApplicationReport(ApplicationId appId)
        {
            GetApplicationReportRequest request = GetApplicationReportRequest.NewInstance(appId
                                                                                          );
            GetApplicationReportResponse response = ahsClient.GetApplicationReport(request);

            return(response.GetApplicationReport());
        }
Пример #7
0
        /// <exception cref="Org.Apache.Hadoop.Yarn.Exceptions.YarnException"/>
        /// <exception cref="System.IO.IOException"/>
        public virtual ApplicationReport GetApplicationReport(ApplicationId appId)
        {
            ApplicationClientProtocol    client   = GetClientRMService();
            GetApplicationReportResponse response = client.GetApplicationReport(GetApplicationReportRequest
                                                                                .NewInstance(appId));

            return(response.GetApplicationReport());
        }
Пример #8
0
        /// <exception cref="System.Exception"/>
        private void VerifyGetClientAMToken(string submitter, string queueAdmin, string queueName
                                            , bool setupACLs)
        {
            ApplicationId applicationId = SubmitAppAndGetAppId(submitter, queueName, setupACLs
                                                               );
            GetApplicationReportRequest appReportRequest = GetApplicationReportRequest.NewInstance
                                                               (applicationId);
            ApplicationClientProtocol    submitterClient    = GetRMClientForUser(submitter);
            ApplicationClientProtocol    adMinUserClient    = GetRMClientForUser(queueAdmin);
            GetApplicationReportResponse submitterGetReport = submitterClient.GetApplicationReport
                                                                  (appReportRequest);
            GetApplicationReportResponse adMinUserGetReport = adMinUserClient.GetApplicationReport
                                                                  (appReportRequest);

            NUnit.Framework.Assert.AreEqual(submitterGetReport.GetApplicationReport().GetClientToAMToken
                                                (), adMinUserGetReport.GetApplicationReport().GetClientToAMToken());
        }
Пример #9
0
        public virtual void TestApplicationReport()
        {
            ApplicationId appId = null;

            appId = ApplicationId.NewInstance(0, 1);
            GetApplicationReportRequest request = GetApplicationReportRequest.NewInstance(appId
                                                                                          );
            GetApplicationReportResponse response = clientService.GetApplicationReport(request
                                                                                       );
            ApplicationReport appReport = response.GetApplicationReport();

            NUnit.Framework.Assert.IsNotNull(appReport);
            NUnit.Framework.Assert.AreEqual(123, appReport.GetApplicationResourceUsageReport(
                                                ).GetMemorySeconds());
            NUnit.Framework.Assert.AreEqual(345, appReport.GetApplicationResourceUsageReport(
                                                ).GetVcoreSeconds());
            NUnit.Framework.Assert.AreEqual("application_0_0001", appReport.GetApplicationId(
                                                ).ToString());
            NUnit.Framework.Assert.AreEqual("test app type", appReport.GetApplicationType().ToString
                                                ());
            NUnit.Framework.Assert.AreEqual("test queue", appReport.GetQueue().ToString());
        }
            /// <exception cref="System.IO.IOException"/>
            private static bool IsApplicationTerminated(ApplicationId appId, ApplicationClientProtocol
                                                        rmClient)
            {
                ApplicationReport appReport = null;

                try
                {
                    appReport = rmClient.GetApplicationReport(GetApplicationReportRequest.NewInstance
                                                                  (appId)).GetApplicationReport();
                }
                catch (ApplicationNotFoundException)
                {
                    return(true);
                }
                catch (YarnException e)
                {
                    throw new IOException(e);
                }
                YarnApplicationState currentState = appReport.GetYarnApplicationState();

                return(currentState == YarnApplicationState.Failed || currentState == YarnApplicationState
                       .Killed || currentState == YarnApplicationState.Finished);
            }
Пример #11
0
        protected override void Render(HtmlBlock.Block html)
        {
            string webUiType = $(YarnWebParams.WebUiType);
            string aid       = $(YarnWebParams.ApplicationId);

            if (aid.IsEmpty())
            {
                Puts("Bad request: requires Application ID");
                return;
            }
            try
            {
                appID = Apps.ToAppID(aid);
            }
            catch (Exception)
            {
                Puts("Invalid Application ID: " + aid);
                return;
            }
            UserGroupInformation callerUGI = GetCallerUGI();
            ApplicationReport    appReport;

            try
            {
                GetApplicationReportRequest request = GetApplicationReportRequest.NewInstance(appID
                                                                                              );
                if (callerUGI == null)
                {
                    appReport = appBaseProt.GetApplicationReport(request).GetApplicationReport();
                }
                else
                {
                    appReport = callerUGI.DoAs(new _PrivilegedExceptionAction_99(this, request));
                }
            }
            catch (Exception e)
            {
                string message = "Failed to read the application " + appID + ".";
                Log.Error(message, e);
                html.P().(message).();
                return;
            }
            if (appReport == null)
            {
                Puts("Application not found: " + aid);
                return;
            }
            AppInfo app = new AppInfo(appReport);

            SetTitle(StringHelper.Join("Application ", aid));
            if (webUiType != null && webUiType.Equals(YarnWebParams.RmWebUi) && conf.GetBoolean
                    (YarnConfiguration.RmWebappUiActionsEnabled, YarnConfiguration.DefaultRmWebappUiActionsEnabled
                    ))
            {
                // Application Kill
                html.Div().Button().$onclick("confirmAction()").B("Kill Application").().();
                StringBuilder script = new StringBuilder();
                script.Append("function confirmAction() {").Append(" b = confirm(\"Are you sure?\");"
                                                                   ).Append(" if (b == true) {").Append(" $.ajax({").Append(" type: 'PUT',").Append
                    (" url: '/ws/v1/cluster/apps/").Append(aid).Append("/state',").Append(" contentType: 'application/json',"
                                                                                          ).Append(" data: '{\"state\":\"KILLED\"}',").Append(" dataType: 'json'").Append(
                    " }).done(function(data){").Append(" setTimeout(function(){").Append(" location.href = '/cluster/app/"
                                                                                         ).Append(aid).Append("';").Append(" }, 1000);").Append(" }).fail(function(data){"
                                                                                                                                                ).Append(" console.log(data);").Append(" });").Append(" }").Append("}");
                html.Script().$type("text/javascript").(script.ToString()).();
            }
            Info("Application Overview").("User:"******"Name:", app.GetName()).("Application Type:"
                                                                                            , app.GetType()).("Application Tags:", app.GetApplicationTags() == null ? string.Empty
                                 : app.GetApplicationTags()).("YarnApplicationState:", app.GetAppState() == null
                                 ? Unavailable : ClarifyAppState(app.GetAppState())).("FinalStatus Reported by AM:"
                                                                                      , ClairfyAppFinalStatus(app.GetFinalAppStatus())).("Started:", Times.Format(app.
                                                                                                                                                                  GetStartedTime())).("Elapsed:", StringUtils.FormatTime(Times.Elapsed(app.GetStartedTime
                                                                                                                                                                                                                                           (), app.GetFinishedTime()))).("Tracking URL:", app.GetTrackingUrl() == null || app
                                                                                                                                                                                                                                                                         .GetTrackingUrl().Equals(Unavailable) ? null : Root_url(app.GetTrackingUrl()), app
                                                                                                                                                                                                                                                                         .GetTrackingUrl() == null || app.GetTrackingUrl().Equals(Unavailable) ? "Unassigned"
                                 : app.GetAppState() == YarnApplicationState.Finished || app.GetAppState() == YarnApplicationState
                                                                                                                                                                                                                                                                         .Failed || app.GetAppState() == YarnApplicationState.Killed ? "History" : "ApplicationMaster"
                                                                                                                                                                                                                                                                         ).("Diagnostics:", app.GetDiagnosticsInfo() == null ? string.Empty : app.GetDiagnosticsInfo
                                                                                                                                                                                                                                                                                ());
            ICollection <ApplicationAttemptReport> attempts;

            try
            {
                GetApplicationAttemptsRequest request = GetApplicationAttemptsRequest.NewInstance
                                                            (appID);
                if (callerUGI == null)
                {
                    attempts = appBaseProt.GetApplicationAttempts(request).GetApplicationAttemptList(
                        );
                }
                else
                {
                    attempts = callerUGI.DoAs(new _PrivilegedExceptionAction_196(this, request));
                }
            }
            catch (Exception e)
            {
                string message = "Failed to read the attempts of the application " + appID + ".";
                Log.Error(message, e);
                html.P().(message).();
                return;
            }
            CreateApplicationMetricsTable(html);
            html.(typeof(InfoBlock));
            GenerateApplicationTable(html, callerUGI, attempts);
        }