diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ObservableResource.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ObservableResource.java new file mode 100644 index 0000000000..90e87bff1f --- /dev/null +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ObservableResource.java @@ -0,0 +1,47 @@ +package org.apache.hadoop.yarn.api.records; + +import org.apache.hadoop.classification.InterfaceAudience; + +@InterfaceAudience.Private +public final class ObservableResource extends Resource { + private final Resource resource; + + public ObservableResource(Resource resource) { + this.resource = resource; + } + + @Override + public int getMemory() { + return resource.getMemory(); + } + + @Override + public long getMemorySize() { + return resource.getMemorySize(); + } + + @Override + public int getVirtualCores() { + return resource.getVirtualCores(); + } + + @Override + public void setMemory(int memory) { + throw new UnsupportedOperationException(); + } + + @Override + public void setMemorySize(long memory) { + throw new UnsupportedOperationException(); + } + + @Override + public void setVirtualCores(int vCores) { + throw new UnsupportedOperationException(); + } + + @Override + public int compareTo(Resource o) { + return resource.compareTo(o); + } +} diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/Resource.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/Resource.java index 0d31b6fd7d..0bfeb41023 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/Resource.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/Resource.java @@ -19,6 +19,7 @@ package org.apache.hadoop.yarn.api.records; import org.apache.commons.lang.NotImplementedException; +import org.apache.hadoop.classification.InterfaceAudience; import org.apache.hadoop.classification.InterfaceAudience.Public; import org.apache.hadoop.classification.InterfaceStability.Evolving; import org.apache.hadoop.classification.InterfaceStability.Stable; @@ -52,6 +53,7 @@ @Public @Stable public abstract class Resource implements Comparable { + private ObservableResource observableCopy; @Public @Stable @@ -171,4 +173,12 @@ public boolean equals(Object obj) { public String toString() { return ""; } + + @InterfaceAudience.Private + public ObservableResource getObservableCopy() { + if (observableCopy == null) { + observableCopy = new ObservableResource(this); + } + return observableCopy; + } }