diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/resource/ResourceWeights.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/resource/ResourceWeights.java index fd83ed3..ef3a1cb 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/resource/ResourceWeights.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/resource/ResourceWeights.java @@ -34,13 +34,17 @@ public ResourceWeights(float memoryWeight, float cpuWeight) { } public ResourceWeights(float weight) { - for (int i = 0; i < weights.length; i++) { - weights[i] = weight; - } + setWeight(weight); } - + public ResourceWeights() { } + public void setWeight(float weight) { + for (int i = 0; i < weights.length; i++) { + weights[i] = weight; + } + } + public void setWeight(ResourceType resourceType, float weight) { weights[resourceType.ordinal()] = weight; } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/AppSchedulable.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/AppSchedulable.java index 304a2cf..66659bb 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/AppSchedulable.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/AppSchedulable.java @@ -56,6 +56,8 @@ private static final Log LOG = LogFactory.getLog(AppSchedulable.class); private FSLeafQueue queue; private RMContainerTokenSecretManager containerTokenSecretManager; + private Priority priority = recordFactory.newRecordInstance(Priority.class); + private ResourceWeights resourceWeights = new ResourceWeights(); public AppSchedulable(FairScheduler scheduler, FSSchedulerApp app, FSLeafQueue queue) { this.scheduler = scheduler; @@ -75,6 +77,10 @@ public FSSchedulerApp getApp() { return app; } + public ResourceWeights getResourceWeightsObject() { + return resourceWeights; + } + @Override public void updateDemand() { demand = Resources.createResource(0); @@ -134,9 +140,8 @@ public ResourceWeights getWeights() { public Priority getPriority() { // Right now per-app priorities are not passed to scheduler, // so everyone has the same priority. - Priority p = recordFactory.newRecordInstance(Priority.class); - p.setPriority(1); - return p; + priority.setPriority(1); + return priority; } /** diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FairScheduler.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FairScheduler.java index 3cdff7f..199e5a5 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FairScheduler.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FairScheduler.java @@ -535,7 +535,9 @@ public synchronized ResourceWeights getAppWeight(AppSchedulable app) { // Run weight through the user-supplied weightAdjuster weight = weightAdjuster.adjustWeight(app, weight); } - return new ResourceWeights((float)weight); + ResourceWeights resourceWeights = app.getResourceWeightsObject(); + resourceWeights.setWeight((float)weight); + return resourceWeights; } @Override