Browse Source

YARN-9504. [UI2] Fair scheduler queue view page does not show actual capacity. Contributed by Zoltan Siegl.

Sunil G 6 năm trước cách đây
mục cha
commit
64c7f36ab1

+ 39 - 4
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/components/tree-selector.js

@@ -192,7 +192,8 @@ export default Ember.Component.extend({
       .style(
         "fill",
         function(d) {
-          const usedCapacity = getUsedCapacity(d.queueData.get("partitionMap"), this.filteredPartition);
+          const usedCapacity = getUsedCapacity(d.queueData, this.filteredPartition);
+
           if (usedCapacity <= 60.0) {
             return "#60cea5";
           } else if (usedCapacity <= 100.0) {
@@ -216,7 +217,8 @@ export default Ember.Component.extend({
       })
       .text(
         function(d) {
-          const usedCapacity = getUsedCapacity(d.queueData.get("partitionMap"), this.filteredPartition);
+          const usedCapacity = getUsedCapacity(d.queueData, this.filteredPartition);
+
           if (usedCapacity >= 100.0) {
             return usedCapacity.toFixed(0) + "%";
           } else {
@@ -372,6 +374,39 @@ export default Ember.Component.extend({
 });
 
 
-const getUsedCapacity = (partitionMap, filter=PARTITION_LABEL) => {
-  return partitionMap[filter].absoluteUsedCapacity;
+const getUsedCapacity = (queueData, filter=PARTITION_LABEL) => {
+
+  const type = queueData.get("type");
+  var result;
+
+  switch (type) {
+    case "capacity":
+      const partitionMap = queueData.get("partitionMap");
+      if (null == partitionMap || null == partitionMap[filter] || null == partitionMap[filter].absoluteUsedCapacity) {
+        result = 0.0;
+      } else {
+        result = partitionMap[filter].absoluteUsedCapacity;
+      }
+      break;
+
+    case "fair":
+       if (null == queueData.get("fairResources") || null == queueData.get("fairResources").memory || null == queueData.get("usedResources") || null == queueData.get("usedResources").memory || 0 == queueData.get("fairResources").memory) {
+         result = 0.0;
+       } else {
+         result = queueData.get("usedResources").memory / queueData.get("fairResources").memory * 100;
+       }
+      break;
+
+    case "fifo":
+       if (null == queueData.get("usedCapacity") || (null == queueData.get("capacity")) || (queueData.get("capacity") == 0)) {
+         result = 0.0;
+       } else {
+         result = queueData.get("usedCapacity") / queueData.get("capacity") * 100;
+       }
+       break;
+
+    default:
+      result = 0.0;
+  }
+  return result;
 };