diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ResourcePBImpl.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ResourcePBImpl.java index 6686696..734529f 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ResourcePBImpl.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ResourcePBImpl.java @@ -28,30 +28,26 @@ @Private @Unstable public class ResourcePBImpl extends Resource { - ResourceProto proto = ResourceProto.getDefaultInstance(); - ResourceProto.Builder builder = null; - boolean viaProto = false; + ResourceProto proto; + long memorySize; + int virtualCores; public ResourcePBImpl() { - builder = ResourceProto.newBuilder(); + } public ResourcePBImpl(ResourceProto proto) { this.proto = proto; - viaProto = true; + this.memorySize = proto.getMemory(); + this.virtualCores = proto.getVirtualCores(); } public ResourceProto getProto() { - proto = viaProto ? proto : builder.build(); - viaProto = true; - return proto; - } - - private void maybeInitBuilder() { - if (viaProto || builder == null) { - builder = ResourceProto.newBuilder(proto); + if (proto != null) { + return proto; } - viaProto = false; + proto = ResourceProto.newBuilder().setMemory(memorySize).setVirtualCores(virtualCores).build(); + return proto; } @Override @@ -62,8 +58,7 @@ public int getMemory() { @Override public long getMemorySize() { - ResourceProtoOrBuilder p = viaProto ? proto : builder; - return p.getMemory(); + return memorySize; } @Override @@ -74,20 +69,23 @@ public void setMemory(int memory) { @Override public void setMemorySize(long memory) { - maybeInitBuilder(); - builder.setMemory(memory); + if (this.memorySize != memory) { + proto = null; + } + this.memorySize = memory; } @Override public int getVirtualCores() { - ResourceProtoOrBuilder p = viaProto ? proto : builder; - return p.getVirtualCores(); + return virtualCores; } @Override public void setVirtualCores(int vCores) { - maybeInitBuilder(); - builder.setVirtualCores(vCores); + if (this.virtualCores != vCores) { + proto = null; + } + this.virtualCores = vCores; } @Override