private RMAppImpl createAndPopulateNewRMApp( ApplicationSubmissionContext submissionContext, long submitTime, String user) throws YarnException { ApplicationId applicationId = submissionContext.getApplicationId(); validateResourceRequest(submissionContext); // Create RMApp RMAppImpl application = new RMAppImpl( applicationId, rmContext, this.conf, submissionContext.getApplicationName(), user, submissionContext.getQueue(), submissionContext, this.scheduler, this.masterService, submitTime, submissionContext.getApplicationType(), submissionContext.getApplicationTags()); // Concurrent app submissions with same applicationId will fail here // Concurrent app submissions with different applicationIds will not // influence each other if (rmContext.getRMApps().putIfAbsent(applicationId, application) != null) { String message = "Application with id " + applicationId + " is already present! Cannot add a duplicate!"; LOG.warn(message); throw RPCUtil.getRemoteException(message); } // Inform the ACLs Manager this.applicationACLsManager.addApplication( applicationId, submissionContext.getAMContainerSpec().getApplicationACLs()); return application; }
private RMAppImpl createAndPopulateNewRMApp( ApplicationSubmissionContext submissionContext, long submitTime, String user, boolean isRecovery) throws YarnException { ApplicationId applicationId = submissionContext.getApplicationId(); ResourceRequest amReq = validateAndCreateResourceRequest(submissionContext, isRecovery); // Verify and get the update application priority and set back to // submissionContext Priority appPriority = rmContext .getScheduler() .checkAndGetApplicationPriority( submissionContext.getPriority(), user, submissionContext.getQueue(), applicationId); submissionContext.setPriority(appPriority); // Create RMApp RMAppImpl application = new RMAppImpl( applicationId, rmContext, this.conf, submissionContext.getApplicationName(), user, submissionContext.getQueue(), submissionContext, this.scheduler, this.masterService, submitTime, submissionContext.getApplicationType(), submissionContext.getApplicationTags(), amReq); // Concurrent app submissions with same applicationId will fail here // Concurrent app submissions with different applicationIds will not // influence each other if (rmContext.getRMApps().putIfAbsent(applicationId, application) != null) { String message = "Application with id " + applicationId + " is already present! Cannot add a duplicate!"; LOG.warn(message); throw new YarnException(message); } // Inform the ACLs Manager this.applicationACLsManager.addApplication( applicationId, submissionContext.getAMContainerSpec().getApplicationACLs()); String appViewACLs = submissionContext .getAMContainerSpec() .getApplicationACLs() .get(ApplicationAccessType.VIEW_APP); rmContext .getSystemMetricsPublisher() .appACLsUpdated(application, appViewACLs, System.currentTimeMillis()); return application; }