diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ApplicationPriority.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ApplicationPriority.java
new file mode 100644
index 0000000..492807d
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ApplicationPriority.java
@@ -0,0 +1,65 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.yarn.api.records;
+
+import org.apache.hadoop.classification.InterfaceAudience.Public;
+import org.apache.hadoop.classification.InterfaceStability.Unstable;
+import org.apache.hadoop.yarn.util.Records;
+
+/**
+ * The priority assigned to an Application
+ *
+ */
+@Public
+@Unstable
+public abstract class ApplicationPriority implements
+ Comparable
ApplicationId of the submitted application.
* @return ApplicationId of the submitted application
@@ -245,6 +261,7 @@ public static ApplicationSubmissionContext newInstance(
*/
@Public
@Stable
+ @Deprecated
public abstract Priority getPriority();
/**
@@ -253,6 +270,7 @@ public static ApplicationSubmissionContext newInstance(
*/
@Private
@Unstable
+ @Deprecated
public abstract void setPriority(Priority priority);
/**
@@ -532,4 +550,22 @@ public abstract void setLogAggregationContext(
@Public
@Unstable
public abstract void setReservationID(ReservationId reservationID);
+
+ /**
+ * Get the ApplicationPriority of the application.
+ *
+ * @return Priority of the application
+ */
+ @Public
+ @Unstable
+ public abstract ApplicationPriority getApplicationPriority();
+
+ /**
+ * Set the ApplicationPriority of the application.
+ *
+ * @param priority Priority of the application
+ */
+ @Private
+ @Unstable
+ public abstract void setApplicationPriority(ApplicationPriority priority);
}
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/yarn_protos.proto b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/yarn_protos.proto
index c4e756d..1c688c5 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/yarn_protos.proto
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/yarn_protos.proto
@@ -72,6 +72,10 @@ message PriorityProto {
optional int32 priority = 1;
}
+message ApplicationPriorityProto {
+ optional string app_priority = 1;
+}
+
enum ContainerStateProto {
C_NEW = 1;
C_RUNNING = 2;
@@ -303,6 +307,7 @@ message ApplicationSubmissionContextProto {
optional ReservationIdProto reservation_id = 15;
optional string node_label_expression = 16;
optional ResourceRequestProto am_container_resource_request = 17;
+ optional ApplicationPriorityProto application_priority = 18;
}
message LogAggregationContextProto {
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ApplicationPriorityPBImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ApplicationPriorityPBImpl.java
new file mode 100644
index 0000000..3336341
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ApplicationPriorityPBImpl.java
@@ -0,0 +1,98 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.yarn.api.records.impl.pb;
+
+import org.apache.hadoop.yarn.proto.YarnProtos.ApplicationPriorityProto;
+import org.apache.hadoop.yarn.proto.YarnProtos.ApplicationPriorityProtoOrBuilder;
+
+import org.apache.hadoop.classification.InterfaceAudience.Private;
+import org.apache.hadoop.classification.InterfaceStability.Unstable;
+import org.apache.hadoop.yarn.api.records.ApplicationPriority;
+
+import com.google.protobuf.TextFormat;
+
+@Private
+@Unstable
+public class ApplicationPriorityPBImpl extends ApplicationPriority {
+ ApplicationPriorityProto proto = ApplicationPriorityProto
+ .getDefaultInstance();
+ ApplicationPriorityProto.Builder builder = null;
+ boolean viaProto = false;
+
+ public ApplicationPriorityPBImpl() {
+ builder = ApplicationPriorityProto.newBuilder();
+ }
+
+ public ApplicationPriorityPBImpl(ApplicationPriorityProto proto) {
+ this.proto = proto;
+ viaProto = true;
+ }
+
+ public ApplicationPriorityProto getProto() {
+ proto = viaProto ? proto : builder.build();
+ viaProto = true;
+ return proto;
+ }
+
+ private void maybeInitBuilder() {
+ if (viaProto || builder == null) {
+ builder = ApplicationPriorityProto.newBuilder(proto);
+ }
+ viaProto = false;
+ }
+
+ @Override
+ public String getApplicationPriority() {
+ ApplicationPriorityProtoOrBuilder p = viaProto ? proto : builder;
+ if (!p.hasAppPriority()) {
+ return null;
+ }
+ return (p.getAppPriority());
+ }
+
+ @Override
+ public void setApplicationPriority(String appPriority) {
+ maybeInitBuilder();
+ if (appPriority == null) {
+ builder.clearAppPriority();
+ return;
+ }
+ builder.setAppPriority(appPriority);
+ }
+
+ @Override
+ public int hashCode() {
+ return getProto().hashCode();
+ }
+
+ @Override
+ public boolean equals(Object other) {
+ if (other == null)
+ return false;
+ if (other.getClass().isAssignableFrom(this.getClass())) {
+ return this.getProto().equals(this.getClass().cast(other).getProto());
+ }
+ return false;
+ }
+
+ @Override
+ public String toString() {
+ return TextFormat.shortDebugString(getProto());
+ }
+}
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ApplicationSubmissionContextPBImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ApplicationSubmissionContextPBImpl.java
index 303b437..f155091 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ApplicationSubmissionContextPBImpl.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ApplicationSubmissionContextPBImpl.java
@@ -24,6 +24,7 @@
import org.apache.hadoop.classification.InterfaceAudience.Private;
import org.apache.hadoop.classification.InterfaceStability.Unstable;
import org.apache.hadoop.yarn.api.records.ApplicationId;
+import org.apache.hadoop.yarn.api.records.ApplicationPriority;
import org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext;
import org.apache.hadoop.yarn.api.records.ContainerLaunchContext;
import org.apache.hadoop.yarn.api.records.LogAggregationContext;
@@ -33,6 +34,7 @@
import org.apache.hadoop.yarn.api.records.ResourceRequest;
import org.apache.hadoop.yarn.conf.YarnConfiguration;
import org.apache.hadoop.yarn.proto.YarnProtos.ApplicationIdProto;
+import org.apache.hadoop.yarn.proto.YarnProtos.ApplicationPriorityProto;
import org.apache.hadoop.yarn.proto.YarnProtos.ApplicationSubmissionContextProto;
import org.apache.hadoop.yarn.proto.YarnProtos.ApplicationSubmissionContextProtoOrBuilder;
import org.apache.hadoop.yarn.proto.YarnProtos.ContainerLaunchContextProto;
@@ -62,6 +64,7 @@
private ResourceRequest amResourceRequest = null;
private LogAggregationContext logAggregationContext = null;
private ReservationId reservationId = null;
+ private ApplicationPriority applicationPriority = null;
public ApplicationSubmissionContextPBImpl() {
builder = ApplicationSubmissionContextProto.newBuilder();
@@ -130,6 +133,10 @@ private void mergeLocalToBuilder() {
if (this.reservationId != null) {
builder.setReservationId(convertToProtoFormat(this.reservationId));
}
+ if (this.applicationPriority != null) {
+ builder
+ .setApplicationPriority(convertToProtoFormat(this.applicationPriority));
+ }
}
private void mergeLocalToProto() {
@@ -547,4 +554,35 @@ private ReservationIdPBImpl convertFromProtoFormat(ReservationIdProto p) {
private ReservationIdProto convertToProtoFormat(ReservationId t) {
return ((ReservationIdPBImpl) t).getProto();
}
+
+ @Override
+ public ApplicationPriority getApplicationPriority() {
+ ApplicationSubmissionContextProtoOrBuilder p = viaProto ? proto : builder;
+ if (this.applicationPriority != null) {
+ return this.applicationPriority;
+ }
+ if (!p.hasApplicationPriority()) {
+ return null;
+ }
+ this.applicationPriority =
+ convertFromProtoFormat(p.getApplicationPriority());
+ return this.applicationPriority;
+ }
+
+ @Override
+ public void setApplicationPriority(ApplicationPriority priority) {
+ maybeInitBuilder();
+ if (priority == null)
+ builder.clearPriority();
+ this.applicationPriority = priority;
+ }
+
+ private ApplicationPriorityPBImpl convertFromProtoFormat(
+ ApplicationPriorityProto p) {
+ return new ApplicationPriorityPBImpl(p);
+ }
+
+ private ApplicationPriorityProto convertToProtoFormat(ApplicationPriority t) {
+ return ((ApplicationPriorityPBImpl) t).getProto();
+ }
}
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/api/TestPBImplRecords.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/api/TestPBImplRecords.java
index b8f6e9c..34e8861 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/api/TestPBImplRecords.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/api/TestPBImplRecords.java
@@ -189,6 +189,7 @@ public static void setup() throws Exception {
generateByNewInstance(ResourceOption.class);
generateByNewInstance(LocalResource.class);
generateByNewInstance(Priority.class);
+ generateByNewInstance(ApplicationPriority.class);
generateByNewInstance(NodeId.class);
generateByNewInstance(NodeReport.class);
generateByNewInstance(Token.class);
@@ -658,7 +659,7 @@ public void testApplicationSubmissionContextPBImpl() throws Exception {
ApplicationSubmissionContext ctx =
ApplicationSubmissionContext.newInstance(null, null, null, null, null,
- false, false, 0, Resources.none(), null, false, null, null);
+ false, false, 0, Resources.none(), null, false, null, null, null);
Assert.assertNotNull(ctx.getResource());
}
@@ -761,6 +762,12 @@ public void testPriorityPBImpl() throws Exception {
}
@Test
+ public void testApplicationPriorityPBImpl() throws Exception {
+ validatePBImplRecord(ApplicationPriorityPBImpl.class,
+ ApplicationPriorityProto.class);
+ }
+
+ @Test
public void testQueueInfoPBImpl() throws Exception {
validatePBImplRecord(QueueInfoPBImpl.class, QueueInfoProto.class);
}
--
1.9.2.msysgit.0