commit ddf3f96da8a016c5f8c1ec0d79ab019fa1f0a8ea Author: Misha Dmitriev Date: Thu Oct 12 15:31:19 2017 -0700 YARN-7320. Duplicate LiteralByteStrings in SystemCredentialsForAppsProto.credentialsForApp_ diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/api/protocolrecords/impl/pb/NodeHeartbeatResponsePBImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/api/protocolrecords/impl/pb/NodeHeartbeatResponsePBImpl.java index bbd12942191eb12fb8d3c20b06e9db6f32edc4bb..ea49162892c4ec6280dd282485a40639301ea9fb 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/api/protocolrecords/impl/pb/NodeHeartbeatResponsePBImpl.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/api/protocolrecords/impl/pb/NodeHeartbeatResponsePBImpl.java @@ -26,6 +26,10 @@ import java.util.List; import java.util.Map; +import com.google.common.collect.Interner; +import com.google.common.collect.Interners; +import com.google.protobuf.ByteString; + import org.apache.hadoop.security.proto.SecurityProtos.TokenProto; import org.apache.hadoop.yarn.api.protocolrecords.SignalContainerRequest; import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.SignalContainerRequestPBImpl; @@ -84,6 +88,8 @@ private List containersToDecrease = null; private List containersToSignal = null; + private static final Interner byteStringInterner = Interners.newWeakInterner(); + public NodeHeartbeatResponsePBImpl() { builder = NodeHeartbeatResponseProto.newBuilder(); } @@ -148,8 +154,8 @@ private void addSystemCredentialsToProto() { for (Map.Entry entry : systemCredentials.entrySet()) { builder.addSystemCredentialsForApps(SystemCredentialsForAppsProto.newBuilder() .setAppId(convertToProtoFormat(entry.getKey())) - .setCredentialsForApp(ProtoUtils.convertToProtoFormat( - entry.getValue().duplicate()))); + .setCredentialsForApp(byteStringInterner.intern(ProtoUtils.convertToProtoFormat( + entry.getValue())))); } }