public void unregisterAppAttempt(boolean waitForStateRunning) throws Exception { final FinishApplicationMasterRequest req = FinishApplicationMasterRequest.newInstance( FinalApplicationStatus.SUCCEEDED, "", ""); unregisterAppAttempt(req, waitForStateRunning); }
@Public @Stable public static FinishApplicationMasterRequest newInstance( FinalApplicationStatus finalAppStatus, String diagnostics, String url) { FinishApplicationMasterRequest request = Records.newRecord(FinishApplicationMasterRequest.class); request.setFinalApplicationStatus(finalAppStatus); request.setDiagnostics(diagnostics); request.setTrackingUrl(url); return request; }
private void finishApplication(FinalApplicationStatus finalStatus) throws YarnException, IOException { LOG.info("Application completed. Signalling finish to RM"); FinishApplicationMasterRequest finishReq = Records.newRecord(FinishApplicationMasterRequest.class); finishReq.setFinalApplicationStatus(finalStatus); if (finalStatus != FinalApplicationStatus.SUCCEEDED) { String diagnostics = "Diagnostics." + " completed=" + numCompletedContainers.get() + ", allocated=" + allocatedContainers.size() + ", failed=" + numFailedContainers.get(); if (!StringUtils.isEmpty(dnmgr.shutdownDiagnosticsMessage)) { diagnostics += "\n"; diagnostics += dnmgr.shutdownDiagnosticsMessage; } // YARN-208 - as of 2.0.1-alpha dropped by the RM finishReq.setDiagnostics(diagnostics); // expected termination of the master process // application status and diagnostics message are set above } LOG.info("diagnostics: " + finishReq.getDiagnostics()); amRmClient.unregisterApplicationMaster(finishReq.getFinalApplicationStatus(), finishReq.getDiagnostics(), null); }
public void finishApplication(String diagnostics, FinalApplicationStatus finishState) throws YarnRemoteException { if (amResourceManager == null) throw new IllegalStateException( "Cannot finish an application without connecting to resource manager!"); FinishApplicationMasterRequest request = Records.newRecord(FinishApplicationMasterRequest.class); request.setAppAttemptId(appAttemptId); request.setDiagnostics(diagnostics); request.setFinishApplicationStatus(finishState); LOG.info("Sending finish application notification " + ", state=" + request.getFinalApplicationStatus() + ", diagnostics=" + request.getDiagnostics()); amResourceManager.finishApplicationMaster(request); } }
@Override public void unregisterApplicationMaster(FinalApplicationStatus appStatus, String appMessage, String appTrackingUrl) throws YarnRemoteException { FinishApplicationMasterRequest request = recordFactory .newRecordInstance(FinishApplicationMasterRequest.class); request.setAppAttemptId(appAttemptId); request.setFinishApplicationStatus(appStatus); if (appMessage != null) { request.setDiagnostics(appMessage); } if (appTrackingUrl != null) { request.setTrackingUrl(appTrackingUrl); } rmClient.finishApplicationMaster(request); }
@Override public void finishApplicationMaster( ApplicationAttemptId applicationAttemptId, FinishApplicationMasterRequest request, FinishApplicationMasterResponse response) { RMApp app = getRmContext().getRMApps().get(applicationAttemptId.getApplicationId()); // For UnmanagedAMs, return true so they don't retry response.setIsUnregistered( app.getApplicationSubmissionContext().getUnmanagedAM()); getRmContext().getDispatcher().getEventHandler().handle( new RMAppAttemptUnregistrationEvent(applicationAttemptId, request .getTrackingUrl(), request.getFinalApplicationStatus(), request .getDiagnostics())); }
finishReq.setFinalApplicationStatus(status); return rmTemplate.finish(finishReq);
/** * This is called by the AMs started on this node to unregister from the RM. * This method does the initial authorization and then forwards the request to * the application instance specific intercepter chain. */ @Override public FinishApplicationMasterResponse finishApplicationMaster( FinishApplicationMasterRequest request) throws YarnException, IOException { LOG.info("Finishing application master. Tracking Url:" + request.getTrackingUrl()); RequestInterceptorChainWrapper pipeline = authorizeAndGetInterceptorChain(); return pipeline.getRootInterceptor().finishApplicationMaster(request); }
@Override public FinishApplicationMasterResponse finishApplicationMaster( FinishApplicationMasterRequest request) throws YarnException, IOException { validateRunning(); ApplicationAttemptId attemptId = getAppIdentifier(); LOG.info("Finishing application attempt: " + attemptId); ApplicationId appId = attemptId.getApplicationId(); if (shouldReRegisterNext) { String message = "AM is not registered, should re-register."; LOG.warn(message); throw new ApplicationMasterNotRegisteredException(message); } synchronized (applicationContainerIdMap) { // Remove the containers that were being tracked for this application Assert.assertTrue("The application id is NOT registered: " + attemptId, applicationContainerIdMap.containsKey(appId)); applicationContainerIdMap.remove(appId); } return FinishApplicationMasterResponse.newInstance( request.getFinalApplicationStatus() == FinalApplicationStatus.SUCCEEDED ? true : false); }
.getTrackingUrl(), request.getFinalApplicationStatus(), request .getDiagnostics()));
finishAMRequest.setFinalApplicationStatus(FinalApplicationStatus.SUCCEEDED);
/** * This is called by the AMs started on this node to unregister from the RM. * This method does the initial authorization and then forwards the request to * the application instance specific intercepter chain. */ @Override public FinishApplicationMasterResponse finishApplicationMaster( FinishApplicationMasterRequest request) throws YarnException, IOException { LOG.info("Finishing application master. Tracking Url:" + request.getTrackingUrl()); RequestInterceptorChainWrapper pipeline = authorizeAndGetInterceptorChain(); return pipeline.getRootInterceptor().finishApplicationMaster(request); }
@Public @Stable public static FinishApplicationMasterRequest newInstance( FinalApplicationStatus finalAppStatus, String diagnostics, String url) { FinishApplicationMasterRequest request = Records.newRecord(FinishApplicationMasterRequest.class); request.setFinalApplicationStatus(finalAppStatus); request.setDiagnostics(diagnostics); request.setTrackingUrl(url); return request; }
private void finishApplicationMaster(RMApp rmApp, MockRM rm, MockNM nm, MockAM am) throws Exception { final FinishApplicationMasterRequest req = FinishApplicationMasterRequest.newInstance( FinalApplicationStatus.SUCCEEDED, "", ""); finishApplicationMaster(rmApp, rm, nm, am, req); }
.getTrackingUrl(), request.getFinalApplicationStatus(), request .getDiagnostics()));
@Public @Stable public static FinishApplicationMasterRequest newInstance( FinalApplicationStatus finalAppStatus, String diagnostics, String url) { FinishApplicationMasterRequest request = Records.newRecord(FinishApplicationMasterRequest.class); request.setFinalApplicationStatus(finalAppStatus); request.setDiagnostics(diagnostics); request.setTrackingUrl(url); return request; }
public void unregisterAppAttempt(boolean waitForStateRunning) throws Exception { final FinishApplicationMasterRequest req = FinishApplicationMasterRequest.newInstance( FinalApplicationStatus.SUCCEEDED, "", ""); unregisterAppAttempt(req, waitForStateRunning); }
@Public @Stable public static FinishApplicationMasterRequest newInstance( FinalApplicationStatus finalAppStatus, String diagnostics, String url) { FinishApplicationMasterRequest request = Records.newRecord(FinishApplicationMasterRequest.class); request.setFinalApplicationStatus(finalAppStatus); request.setDiagnostics(diagnostics); request.setTrackingUrl(url); return request; }
"AppStatus should not be null."); FinishApplicationMasterRequest request = FinishApplicationMasterRequest.newInstance(appStatus, appMessage, appTrackingUrl); try {
Records.newRecord(FinishApplicationMasterRequest.class); finishAMRequest .setFinalApplicationStatus(FinalApplicationStatus.SUCCEEDED); finishAMRequest.setDiagnostics("diagnostics"); finishAMRequest.setTrackingUrl("url"); rmClient.finishApplicationMaster(finishAMRequest);