commit 92dcab8cd0834d17fe09a0393ca1d799d1062307 Author: Misha Dmitriev Date: Tue Oct 24 14:20:25 2017 -0700 YARN-7386. Duplicate Strings in various places in Yarn memory diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ContainerLaunchContextPBImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ContainerLaunchContextPBImpl.java index d722cc58dbbeaddd7ff80f300ecbea8943374003..e7249ed7006663d8837531c7ad2ea7cf09e638b4 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ContainerLaunchContextPBImpl.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ContainerLaunchContextPBImpl.java @@ -392,7 +392,7 @@ private void initEnv() { this.environment = new HashMap(); for (StringStringMapProto c : list) { - this.environment.put(c.getKey(), c.getValue()); + this.environment.put(c.getKey().intern(), c.getValue().intern()); } } @@ -402,7 +402,9 @@ public void setEnvironment(final Map env) { return; initEnv(); this.environment.clear(); - this.environment.putAll(env); + for (Map.Entry e : env.entrySet()) { + this.environment.put(e.getKey().intern(), e.getValue().intern()); + } } private void addEnvToProto() { @@ -464,7 +466,7 @@ private void initApplicationACLs() { for (ApplicationACLMapProto aclProto : list) { this.applicationACLS.put(ProtoUtils.convertFromProtoFormat(aclProto - .getAccessType()), aclProto.getAcl()); + .getAccessType()), aclProto.getAcl().intern()); } } @@ -513,7 +515,9 @@ public void setApplicationACLs( return; initApplicationACLs(); this.applicationACLS.clear(); - this.applicationACLS.putAll(appACLs); + for (Map.Entry e : appACLs.entrySet()) { + this.applicationACLS.put(e.getKey(), e.getValue().intern()); + } } public ContainerRetryContext getContainerRetryContext() { diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ContainerPBImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ContainerPBImpl.java index b6e22d15c64d3821240eaff3fa96d105e81b6e9c..be8493886bb4d8e9977c8cd34c25607b80f84c37 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ContainerPBImpl.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ContainerPBImpl.java @@ -181,7 +181,7 @@ public void setNodeHttpAddress(String nodeHttpAddress) { builder.clearNodeHttpAddress(); return; } - builder.setNodeHttpAddress(nodeHttpAddress); + builder.setNodeHttpAddress(nodeHttpAddress.intern()); } @Override diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/RMAppImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/RMAppImpl.java index cfb8a74f59a476e89bd9b200913105380fac0ba0..3c14f1e0adb8124cde014d2c1d52cc84d4fd74c2 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/RMAppImpl.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/RMAppImpl.java @@ -425,12 +425,12 @@ public RMAppImpl(ApplicationId applicationId, RMContext rmContext, this.systemClock = SystemClock.getInstance(); this.applicationId = applicationId; - this.name = name; + this.name = name.intern(); this.rmContext = rmContext; this.dispatcher = rmContext.getDispatcher(); this.handler = dispatcher.getEventHandler(); this.conf = config; - this.user = user; + this.user = user.intern(); this.queue = queue; this.submissionContext = submissionContext; this.scheduler = scheduler; @@ -441,7 +441,7 @@ public RMAppImpl(ApplicationId applicationId, RMContext rmContext, } else { this.startTime = startTime; } - this.applicationType = applicationType; + this.applicationType = applicationType.intern(); this.applicationTags = applicationTags; this.amReqs = amReqs; if (submissionContext.getPriority() != null) { diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/RMAppAttemptImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/RMAppAttemptImpl.java index 4997bc60f3e6984fa7343b91eb158b9899089dd0..fc1f8c3473eac65fabad76a5cc803418c24795a3 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/RMAppAttemptImpl.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/RMAppAttemptImpl.java @@ -1645,7 +1645,7 @@ public void transition(RMAppAttemptImpl appAttempt, ClusterMetrics.getMetrics().addAMRegisterDelay(delay); RMAppAttemptRegistrationEvent registrationEvent = (RMAppAttemptRegistrationEvent) event; - appAttempt.host = registrationEvent.getHost(); + appAttempt.host = registrationEvent.getHost().intern(); appAttempt.rpcPort = registrationEvent.getRpcport(); appAttempt.originalTrackingUrl = sanitizeTrackingUrl(registrationEvent.getTrackingurl());