Index: hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/test/java/org/apache/hadoop/mapreduce/v2/app/rm/TestRMContainerAllocator.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/test/java/org/apache/hadoop/mapreduce/v2/app/rm/TestRMContainerAllocator.java (revision af920f138b1f8dcd2417f6af77ab96672f2bc4bc) +++ hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/test/java/org/apache/hadoop/mapreduce/v2/app/rm/TestRMContainerAllocator.java (date 1634300244000) @@ -3622,7 +3622,8 @@ ByteBuffer.wrap("fake_key".getBytes()), Collections.emptyList(), "default", - Collections.emptyList()); + Collections.emptyList(), + Priority.newInstance(0)); } @Override Index: hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/impl/pb/RegisterApplicationMasterResponsePBImpl.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/impl/pb/RegisterApplicationMasterResponsePBImpl.java (revision af920f138b1f8dcd2417f6af77ab96672f2bc4bc) +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/impl/pb/RegisterApplicationMasterResponsePBImpl.java (date 1634297363000) @@ -28,13 +28,16 @@ import org.apache.hadoop.yarn.api.records.ApplicationAccessType; import org.apache.hadoop.yarn.api.records.Container; import org.apache.hadoop.yarn.api.records.NMToken; +import org.apache.hadoop.yarn.api.records.Priority; import org.apache.hadoop.yarn.api.records.Resource; import org.apache.hadoop.yarn.api.records.ResourceTypeInfo; import org.apache.hadoop.yarn.api.records.impl.pb.ContainerPBImpl; import org.apache.hadoop.yarn.api.records.impl.pb.NMTokenPBImpl; +import org.apache.hadoop.yarn.api.records.impl.pb.PriorityPBImpl; import org.apache.hadoop.yarn.api.records.impl.pb.ProtoUtils; import org.apache.hadoop.yarn.api.records.impl.pb.ResourcePBImpl; import org.apache.hadoop.yarn.api.records.impl.pb.ResourceTypeInfoPBImpl; +import org.apache.hadoop.yarn.proto.YarnProtos.PriorityProto; import org.apache.hadoop.yarn.proto.YarnProtos.ResourceProfilesProto; import org.apache.hadoop.yarn.proto.YarnProtos.ResourceProfileEntry; import org.apache.hadoop.yarn.proto.YarnProtos.ApplicationACLMapProto; @@ -66,6 +69,7 @@ private EnumSet schedulerResourceTypes = null; private Map profiles = null; private List resourceTypeInfo = null; + private Priority priority = null; public RegisterApplicationMasterResponsePBImpl() { builder = RegisterApplicationMasterResponseProto.newBuilder(); @@ -295,6 +299,29 @@ } } + @Override + public Priority getPriority() { + RegisterApplicationMasterResponseProtoOrBuilder p = viaProto ? proto : builder; + if (this.priority != null) { + return this.priority; + } + if (!p.hasPriority()) { + return null; + } + this.priority = convertFromProtoFormat(p.getPriority()); + return this.priority; + } + + @Override + public void setPriority(Priority priority) { + maybeInitBuilder(); + if (priority == null) { + builder.clearPriority(); + } else { + builder.setPriority(convertToProtoFormat(priority)); + } + this.priority = priority; + } private void initContainersPreviousAttemptList() { RegisterApplicationMasterResponseProtoOrBuilder p = @@ -530,6 +557,14 @@ return ((ResourceTypeInfoPBImpl) t).getProto(); } + private PriorityPBImpl convertFromProtoFormat(PriorityProto p) { + return new PriorityPBImpl(p); + } + + private PriorityProto convertToProtoFormat(Priority t) { + return ((PriorityPBImpl)t).getProto(); + } + @Override public List getResourceTypes() { initResourceTypeInfosList(); Index: hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/test/java/org/apache/hadoop/yarn/server/uam/TestUnmanagedApplicationManager.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/test/java/org/apache/hadoop/yarn/server/uam/TestUnmanagedApplicationManager.java (revision af920f138b1f8dcd2417f6af77ab96672f2bc4bc) +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/test/java/org/apache/hadoop/yarn/server/uam/TestUnmanagedApplicationManager.java (date 1634300128000) @@ -32,6 +32,7 @@ import org.apache.hadoop.yarn.api.protocolrecords.RegisterApplicationMasterResponse; import org.apache.hadoop.yarn.api.records.ApplicationAttemptId; import org.apache.hadoop.yarn.api.records.ApplicationId; +import org.apache.hadoop.yarn.api.records.Priority; import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.exceptions.YarnException; import org.apache.hadoop.yarn.security.AMRMTokenIdentifier; @@ -57,6 +58,7 @@ private CountingCallback callback; private ApplicationAttemptId attemptId; + private Priority priority = Priority.newInstance(2); @Before public void setup() { @@ -68,7 +70,7 @@ uam = new TestableUnmanagedApplicationManager(conf, attemptId.getApplicationId(), null, "submitter", "appNameSuffix", true, - "rm"); + "rm", priority); } protected void waitForCallBackCountAndCheckZeroPending( @@ -119,8 +121,9 @@ throws YarnException, IOException, InterruptedException { launchUAM(attemptId); - registerApplicationMaster( + RegisterApplicationMasterResponse appMasterResponse = registerApplicationMaster( RegisterApplicationMasterRequest.newInstance(null, 0, null), attemptId); + Assert.assertEquals(priority, appMasterResponse.getPriority()); allocateAsync(AllocateRequest.newInstance(0, 0, null, null, null), callback, attemptId); @@ -130,12 +133,13 @@ MockResourceManagerFacade rmProxy = uam.getRMProxy(); uam = new TestableUnmanagedApplicationManager(conf, attemptId.getApplicationId(), null, "submitter", "appNameSuffix", true, - "rm"); + "rm", priority); uam.setRMProxy(rmProxy); reAttachUAM(null, attemptId); - registerApplicationMaster( + RegisterApplicationMasterResponse reAttachAppMasterResponse = registerApplicationMaster( RegisterApplicationMasterRequest.newInstance(null, 0, null), attemptId); + Assert.assertEquals(priority, reAttachAppMasterResponse.getPriority()); allocateAsync(AllocateRequest.newInstance(0, 0, null, null, null), callback, attemptId); @@ -400,9 +404,9 @@ public TestableUnmanagedApplicationManager(Configuration conf, ApplicationId appId, String queueName, String submitter, String appNameSuffix, boolean keepContainersAcrossApplicationAttempts, - String rmName) { + String rmName, Priority priority) { super(conf, appId, queueName, submitter, appNameSuffix, - keepContainersAcrossApplicationAttempts, rmName); + keepContainersAcrossApplicationAttempts, rmName, priority); } @Override Index: hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/ProtocolHATestBase.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/ProtocolHATestBase.java (revision af920f138b1f8dcd2417f6af77ab96672f2bc4bc) +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/ProtocolHATestBase.java (date 1634300244000) @@ -39,6 +39,7 @@ import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; +import org.apache.hadoop.yarn.api.records.Priority; import org.apache.hadoop.yarn.server.resourcemanager.HATestUtil; import org.junit.Assert; @@ -801,7 +802,7 @@ ByteBuffer key = ByteBuffer.wrap("fake_key".getBytes()); return RegisterApplicationMasterResponse.newInstance(minCapability, maxCapability, acls, key, new ArrayList(), "root", - new ArrayList()); + new ArrayList(), Priority.newInstance(0)); } public FinishApplicationMasterResponse Index: hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/test/java/org/apache/hadoop/yarn/server/MockResourceManagerFacade.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/test/java/org/apache/hadoop/yarn/server/MockResourceManagerFacade.java (revision af920f138b1f8dcd2417f6af77ab96672f2bc4bc) +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/test/java/org/apache/hadoop/yarn/server/MockResourceManagerFacade.java (date 1634299889000) @@ -124,6 +124,7 @@ import org.apache.hadoop.yarn.api.records.NodeId; import org.apache.hadoop.yarn.api.records.NodeLabel; import org.apache.hadoop.yarn.api.records.NodeReport; +import org.apache.hadoop.yarn.api.records.Priority; import org.apache.hadoop.yarn.api.records.ReservationAllocationState; import org.apache.hadoop.yarn.api.records.ReservationId; import org.apache.hadoop.yarn.api.records.ResourceRequest; @@ -186,7 +187,7 @@ private static final Logger LOG = LoggerFactory.getLogger(MockResourceManagerFacade.class); - private HashSet applicationMap = new HashSet<>(); + private HashMap applicationMap = new HashMap<>(); private HashSet keepContainerOnUams = new HashSet<>(); private HashMap> applicationContainerIdMap = new HashMap<>(); @@ -310,7 +311,7 @@ } return RegisterApplicationMasterResponse.newInstance(null, null, null, null, - containersFromPreviousAttempt, request.getHost(), null); + containersFromPreviousAttempt, request.getHost(), null, applicationMap.get(appId)); } @Override @@ -514,11 +515,13 @@ validateRunning(); ApplicationId appId = null; + Priority priority = Priority.newInstance(0); if (request.getApplicationSubmissionContext() != null) { appId = request.getApplicationSubmissionContext().getApplicationId(); + priority = request.getApplicationSubmissionContext().getPriority(); } - LOG.info("Application submitted: " + appId); - applicationMap.add(appId); + LOG.info("Application submitted: " + appId + " , priority: " + priority); + applicationMap.put(appId, priority); if (request.getApplicationSubmissionContext().getUnmanagedAM() || request.getApplicationSubmissionContext() @@ -537,7 +540,7 @@ ApplicationId appId = null; if (request.getApplicationId() != null) { appId = request.getApplicationId(); - if (!applicationMap.remove(appId)) { + if (applicationMap.remove(appId) == null) { throw new ApplicationNotFoundException( "Trying to kill an absent application: " + appId); } Index: hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/amrmproxy/FederationInterceptor.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/amrmproxy/FederationInterceptor.java (revision af920f138b1f8dcd2417f6af77ab96672f2bc4bc) +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/amrmproxy/FederationInterceptor.java (date 1634297398000) @@ -425,7 +425,8 @@ this.attemptId.getApplicationId(), this.amRegistrationResponse.getQueue(), getApplicationContext().getUser(), this.homeSubClusterId.getId(), - entry.getValue(), subClusterId.toString()); + entry.getValue(), subClusterId.toString(), + amRegistrationResponse.getPriority()); this.secondaryRelayers.put(subClusterId.getId(), this.uamPool.getAMRMClientRelayer(subClusterId.getId())); @@ -601,7 +602,8 @@ + YarnConfiguration.DEFAULT_QUEUE_NAME + " for getting AMRMProxyPolicy"); } else { - LOG.info("Application " + appId + " belongs to queue " + queue); + LOG.info("Application " + appId + " belongs to queue " + queue + + " with priority " + amRegistrationResponse.getPriority()); } // Initialize the AMRMProxyPolicy @@ -1004,7 +1006,8 @@ uamPool.reAttachUAM(subClusterId.getId(), config, appId, amRegistrationResponse.getQueue(), getApplicationContext().getUser(), homeSubClusterId.getId(), - amrmToken, subClusterId.toString()); + amrmToken, subClusterId.toString(), + amRegistrationResponse.getPriority()); secondaryRelayers.put(subClusterId.getId(), uamPool.getAMRMClientRelayer(subClusterId.getId())); @@ -1245,7 +1248,8 @@ token = uamPool.launchUAM(subClusterId, config, attemptId.getApplicationId(), amRegistrationResponse.getQueue(), getApplicationContext().getUser(), homeSubClusterId.toString(), - true, subClusterId); + true, subClusterId, + amRegistrationResponse.getPriority()); secondaryRelayers.put(subClusterId, uamPool.getAMRMClientRelayer(subClusterId)); Index: hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/yarn_service_protos.proto IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/yarn_service_protos.proto (revision af920f138b1f8dcd2417f6af77ab96672f2bc4bc) +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/yarn_service_protos.proto (date 1634287120000) @@ -52,6 +52,7 @@ repeated SchedulerResourceTypes scheduler_resource_types = 7; optional ResourceProfilesProto resource_profiles = 8; repeated ResourceTypeInfoProto resource_types = 9; + optional PriorityProto priority = 10; } message FinishApplicationMasterRequestProto { Index: hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/amrmproxy/TestableFederationInterceptor.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/amrmproxy/TestableFederationInterceptor.java (revision af920f138b1f8dcd2417f6af77ab96672f2bc4bc) +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/amrmproxy/TestableFederationInterceptor.java (date 1634297419000) @@ -29,6 +29,7 @@ import org.apache.hadoop.security.token.Token; import org.apache.hadoop.yarn.api.records.ApplicationAttemptId; import org.apache.hadoop.yarn.api.records.ApplicationId; +import org.apache.hadoop.yarn.api.records.Priority; import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.exceptions.YarnException; import org.apache.hadoop.yarn.security.AMRMTokenIdentifier; @@ -205,10 +206,10 @@ public UnmanagedApplicationManager createUAM(Configuration conf, ApplicationId appId, String queueName, String submitter, String appNameSuffix, boolean keepContainersAcrossApplicationAttempts, - String rmId) { + String rmId, Priority priority) { return new TestableUnmanagedApplicationManager(conf, appId, queueName, submitter, appNameSuffix, keepContainersAcrossApplicationAttempts, - rmId); + rmId, priority); } } @@ -222,9 +223,9 @@ public TestableUnmanagedApplicationManager(Configuration conf, ApplicationId appId, String queueName, String submitter, String appNameSuffix, boolean keepContainersAcrossApplicationAttempts, - String rmName) { + String rmName, Priority priority) { super(conf, appId, queueName, submitter, appNameSuffix, - keepContainersAcrossApplicationAttempts, rmName); + keepContainersAcrossApplicationAttempts, rmName, priority); } @Override Index: hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/RegisterApplicationMasterResponse.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/RegisterApplicationMasterResponse.java (revision af920f138b1f8dcd2417f6af77ab96672f2bc4bc) +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/RegisterApplicationMasterResponse.java (date 1634300654000) @@ -31,6 +31,7 @@ import org.apache.hadoop.yarn.api.records.ApplicationAccessType; import org.apache.hadoop.yarn.api.records.Container; import org.apache.hadoop.yarn.api.records.NMToken; +import org.apache.hadoop.yarn.api.records.Priority; import org.apache.hadoop.yarn.api.records.Resource; import org.apache.hadoop.yarn.api.records.ResourceTypeInfo; import org.apache.hadoop.yarn.proto.YarnServiceProtos.SchedulerResourceTypes; @@ -59,7 +60,7 @@ Resource minCapability, Resource maxCapability, Map acls, ByteBuffer key, List containersFromPreviousAttempt, String queue, - List nmTokensFromPreviousAttempts) { + List nmTokensFromPreviousAttempts, Priority priority) { RegisterApplicationMasterResponse response = Records.newRecord(RegisterApplicationMasterResponse.class); response.setMaximumResourceCapability(maxCapability); @@ -68,6 +69,7 @@ response.setContainersFromPreviousAttempts(containersFromPreviousAttempt); response.setNMTokensFromPreviousAttempts(nmTokensFromPreviousAttempts); response.setQueue(queue); + response.setPriority(priority); return response; } @@ -132,7 +134,23 @@ @Public @Stable public abstract void setQueue(String queue); - + + /** + * Get the Priority of the application. + * @return Priority of the application + */ + @Public + @Stable + public abstract Priority getPriority(); + + /** + * Set the Priority of the application. + * @param priority Priority of the application + */ + @Private + @Unstable + public abstract void setPriority(Priority priority); + /** *

* Get the list of running containers as viewed by Index: hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ApplicationMasterService.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ApplicationMasterService.java (revision af920f138b1f8dcd2417f6af77ab96672f2bc4bc) +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ApplicationMasterService.java (date 1634297444000) @@ -292,6 +292,12 @@ RegisterApplicationMasterResponse.class); this.amsProcessingChain.registerApplicationMaster( amrmTokenIdentifier.getApplicationAttemptId(), request, response); + + RMApp rmApp = rmContext.getRMApps().get(appID); + if (rmApp != null) { + response.setPriority(rmApp.getApplicationPriority()); + } + return response; } } Index: hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/uam/UnmanagedAMPoolManager.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/uam/UnmanagedAMPoolManager.java (revision af920f138b1f8dcd2417f6af77ab96672f2bc4bc) +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/uam/UnmanagedAMPoolManager.java (date 1634297388000) @@ -47,6 +47,7 @@ import org.apache.hadoop.yarn.api.protocolrecords.RegisterApplicationMasterResponse; import org.apache.hadoop.yarn.api.records.ApplicationId; import org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext; +import org.apache.hadoop.yarn.api.records.Priority; import org.apache.hadoop.yarn.client.AMRMClientUtils; import org.apache.hadoop.yarn.exceptions.YarnException; import org.apache.hadoop.yarn.security.AMRMTokenIdentifier; @@ -184,7 +185,7 @@ // Launch the UAM in RM launchUAM(appId.toString(), conf, appId, queueName, submitter, - appNameSuffix, keepContainersAcrossApplicationAttempts, rmName); + appNameSuffix, keepContainersAcrossApplicationAttempts, rmName, null); // Register the UAM application registerApplicationMaster(appId.toString(), registerRequest); @@ -214,14 +215,14 @@ public Token launchUAM(String uamId, Configuration conf, ApplicationId appId, String queueName, String submitter, String appNameSuffix, boolean keepContainersAcrossApplicationAttempts, - String rmName) throws YarnException, IOException { + String rmName, Priority priority) throws YarnException, IOException { if (this.unmanagedAppMasterMap.containsKey(uamId)) { throw new YarnException("UAM " + uamId + " already exists"); } UnmanagedApplicationManager uam = createUAM(conf, appId, queueName, submitter, appNameSuffix, keepContainersAcrossApplicationAttempts, - rmName); + rmName, priority); // Put the UAM into map first before initializing it to avoid additional UAM // for the same uamId being created concurrently this.unmanagedAppMasterMap.put(uamId, uam); @@ -257,14 +258,15 @@ */ public void reAttachUAM(String uamId, Configuration conf, ApplicationId appId, String queueName, String submitter, String appNameSuffix, - Token uamToken, String rmName) + Token uamToken, String rmName, Priority priority) throws YarnException, IOException { if (this.unmanagedAppMasterMap.containsKey(uamId)) { throw new YarnException("UAM " + uamId + " already exists"); } UnmanagedApplicationManager uam = createUAM(conf, appId, queueName, - submitter, appNameSuffix, true, rmName); + submitter, appNameSuffix, true, + rmName, priority); // Put the UAM into map first before initializing it to avoid additional UAM // for the same uamId being created concurrently this.unmanagedAppMasterMap.put(uamId, uam); @@ -298,9 +300,9 @@ protected UnmanagedApplicationManager createUAM(Configuration conf, ApplicationId appId, String queueName, String submitter, String appNameSuffix, boolean keepContainersAcrossApplicationAttempts, - String rmName) { + String rmName, Priority priority) { return new UnmanagedApplicationManager(conf, appId, queueName, submitter, - appNameSuffix, keepContainersAcrossApplicationAttempts, rmName); + appNameSuffix, keepContainersAcrossApplicationAttempts, rmName, priority); } /** Index: hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/uam/UnmanagedApplicationManager.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/uam/UnmanagedApplicationManager.java (revision af920f138b1f8dcd2417f6af77ab96672f2bc4bc) +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/uam/UnmanagedApplicationManager.java (date 1634297388000) @@ -50,6 +50,7 @@ import org.apache.hadoop.yarn.api.records.Container; import org.apache.hadoop.yarn.api.records.ContainerLaunchContext; import org.apache.hadoop.yarn.api.records.NMToken; +import org.apache.hadoop.yarn.api.records.Priority; import org.apache.hadoop.yarn.api.records.Resource; import org.apache.hadoop.yarn.api.records.YarnApplicationAttemptState; import org.apache.hadoop.yarn.api.records.YarnApplicationState; @@ -93,6 +94,7 @@ private String appNameSuffix; private Configuration conf; private String queueName; + private Priority priority; private UserGroupInformation userUgi; private RegisterApplicationMasterRequest registerRequest; private ApplicationClientProtocol rmClient; @@ -123,7 +125,8 @@ */ public UnmanagedApplicationManager(Configuration conf, ApplicationId appId, String queueName, String submitter, String appNameSuffix, - boolean keepContainersAcrossApplicationAttempts, String rmName) { + boolean keepContainersAcrossApplicationAttempts, String rmName, + Priority priority) { Preconditions.checkNotNull(conf, "Configuration cannot be null"); Preconditions.checkNotNull(appId, "ApplicationId cannot be null"); Preconditions.checkNotNull(submitter, "App submitter cannot be null"); @@ -150,6 +153,7 @@ DEFAULT_YARN_CLIENT_APPLICATION_CLIENT_PROTOCOL_POLL_INTERVAL_MS); this.keepContainersAcrossApplicationAttempts = keepContainersAcrossApplicationAttempts; + this.priority = priority; } @VisibleForTesting @@ -418,6 +422,9 @@ } else { context.setQueue(this.queueName); } + if(null != priority) { + context.setPriority(priority); + } ContainerLaunchContext amContainer = this.recordFactory.newRecordInstance(ContainerLaunchContext.class); @@ -430,7 +437,8 @@ context.setKeepContainersAcrossApplicationAttempts( this.keepContainersAcrossApplicationAttempts); - LOG.info("Submitting unmanaged application {}", appId); + LOG.info("Submitting unmanaged application {} with priority {}", + appId, priority); this.rmClient.submitApplication(submitRequest); }