AMBARI-25336 : Perf improvement with Collections usages over iterations (#3048)
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessorImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessorImpl.java
index 7ab721b..c5ac613 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessorImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessorImpl.java
@@ -20,7 +20,6 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
-import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
@@ -736,14 +735,13 @@
return Collections.emptyList();
}
- List<HostRoleCommand> commands = new ArrayList<>();
+ List<HostRoleCommand> commands;
try {
hrcOperationsLock.readLock().lock();
Map<Long, HostRoleCommand> cached = hostRoleCommandCache.getAllPresent(taskIds);
- commands.addAll(cached.values());
+ commands = new ArrayList<>(cached.values());
- List<Long> absent = new ArrayList<>();
- absent.addAll(taskIds);
+ List<Long> absent = new ArrayList<>(taskIds);
absent.removeAll(cached.keySet());
if (!absent.isEmpty()) {
@@ -753,12 +751,7 @@
cacheHostRoleCommand(hostRoleCommand);
}
}
- Collections.sort(commands, new Comparator<HostRoleCommand>() {
- @Override
- public int compare(HostRoleCommand o1, HostRoleCommand o2) {
- return (int) (o1.getTaskId()-o2.getTaskId());
- }
- });
+ commands.sort((o1, o2) -> (int) (o1.getTaskId() - o2.getTaskId()));
} finally {
hrcOperationsLock.readLock().unlock();
}
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/Stage.java b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/Stage.java
index eab50d4f..5b8f5d6 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/Stage.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/Stage.java
@@ -531,11 +531,7 @@
* @return list of hosts
*/
public synchronized List<String> getHosts() { // TODO: Check whether method should be synchronized
- List<String> hlist = new ArrayList<>();
- for (String h : hostRoleCommands.keySet()) {
- hlist.add(h);
- }
- return hlist;
+ return new ArrayList<>(hostRoleCommands.keySet());
}
synchronized float getSuccessFactor(Role r) {
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/stack/upgrade/UpgradePack.java b/ambari-server/src/main/java/org/apache/ambari/server/stack/upgrade/UpgradePack.java
index a47606e..92e2199 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/stack/upgrade/UpgradePack.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/stack/upgrade/UpgradePack.java
@@ -468,11 +468,7 @@
}
private List<Grouping> getDowngradeGroupsForNonrolling() {
- List<Grouping> list = new ArrayList<>();
- for (Grouping g : groups) {
- list.add(g);
- }
- return list;
+ return new ArrayList<>(groups);
}
/**
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/StackInfo.java b/ambari-server/src/main/java/org/apache/ambari/server/state/StackInfo.java
index 6b55e66..ec541e7 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/StackInfo.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/StackInfo.java
@@ -247,9 +247,7 @@
Collection<ExtensionInfo> extensions = getExtensions();
extensions.add(extension);
Collection<ServiceInfo> services = getServices();
- for (ServiceInfo service : extension.getServices()) {
- services.add(service);
- }
+ services.addAll(extension.getServices());
}
public void removeExtension(ExtensionInfo extension) {
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/alert/AlertDefinitionHash.java b/ambari-server/src/main/java/org/apache/ambari/server/state/alert/AlertDefinitionHash.java
index 27fe886..821eb8c 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/alert/AlertDefinitionHash.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/alert/AlertDefinitionHash.java
@@ -416,9 +416,7 @@
if (component.getValue().isMasterComponent()) {
Map<String, ServiceComponentHost> componentHosts = component.getValue().getServiceComponentHosts();
if (null != componentHosts) {
- for (String componentHost : componentHosts.keySet()) {
- affectedHosts.add(componentHost);
- }
+ affectedHosts.addAll(componentHosts.keySet());
}
}
}
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
index 09654cf..8959e6f 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
@@ -1259,9 +1259,7 @@
try {
List<Config> list = new ArrayList<>();
for (Entry<String, ConcurrentMap<String, Config>> entry : allConfigs.entrySet()) {
- for (Config config : entry.getValue().values()) {
- list.add(config);
- }
+ list.addAll(entry.getValue().values());
}
return Collections.unmodifiableList(list);
} finally {
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/Configuration.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/Configuration.java
index e6b1d88..254f875 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/topology/Configuration.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/Configuration.java
@@ -431,14 +431,8 @@
*/
public Collection<String> getAllConfigTypes() {
Collection<String> allTypes = new HashSet<>();
- for (String type : getFullProperties().keySet()) {
- allTypes.add(type);
- }
-
- for (String type : getFullAttributes().keySet()) {
- allTypes.add(type);
- }
-
+ allTypes.addAll(getFullProperties().keySet());
+ allTypes.addAll(getFullAttributes().keySet());
return allTypes;
}
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/topology/validators/ClusterConfigTypeValidatorTest.java b/ambari-server/src/test/java/org/apache/ambari/server/topology/validators/ClusterConfigTypeValidatorTest.java
index c2fea1d..ccf0ecf 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/topology/validators/ClusterConfigTypeValidatorTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/topology/validators/ClusterConfigTypeValidatorTest.java
@@ -96,8 +96,10 @@
EasyMock.expect(blueprintMock.getServices()).andReturn(new HashSet<>(Arrays.asList("YARN", "HDFS")));
- EasyMock.expect(stackMock.getConfigurationTypes("HDFS")).andReturn(Arrays.asList("core-site"));
- EasyMock.expect(stackMock.getConfigurationTypes("YARN")).andReturn(Arrays.asList("yarn-site"));
+ EasyMock.expect(stackMock.getConfigurationTypes("HDFS")).andReturn(
+ Collections.singletonList("core-site"));
+ EasyMock.expect(stackMock.getConfigurationTypes("YARN")).andReturn(
+ Collections.singletonList("yarn-site"));
replayAll();
@@ -114,12 +116,14 @@
// GIVEN
// the config type that is not present in the stack definition for services
- clusterRequestConfigTypes = new HashSet<>(Arrays.asList("oozie-site"));
+ clusterRequestConfigTypes = new HashSet<>(Collections.singletonList("oozie-site"));
EasyMock.expect(clusterConfigurationMock.getAllConfigTypes()).andReturn(clusterRequestConfigTypes).anyTimes();
EasyMock.expect(blueprintMock.getServices()).andReturn(new HashSet<>(Arrays.asList("YARN", "HDFS")));
- EasyMock.expect(stackMock.getConfigurationTypes("HDFS")).andReturn(Arrays.asList("core-site"));
- EasyMock.expect(stackMock.getConfigurationTypes("YARN")).andReturn(Arrays.asList("yarn-site"));
+ EasyMock.expect(stackMock.getConfigurationTypes("HDFS")).andReturn(
+ Collections.singletonList("core-site"));
+ EasyMock.expect(stackMock.getConfigurationTypes("YARN")).andReturn(
+ Collections.singletonList("yarn-site"));
replayAll();
@@ -140,8 +144,10 @@
EasyMock.expect(blueprintMock.getServices()).andReturn(new HashSet<>(Arrays.asList("YARN", "HDFS")));
- EasyMock.expect(stackMock.getConfigurationTypes("HDFS")).andReturn(Arrays.asList("core-site"));
- EasyMock.expect(stackMock.getConfigurationTypes("YARN")).andReturn(Arrays.asList("yarn-site"));
+ EasyMock.expect(stackMock.getConfigurationTypes("HDFS")).andReturn(
+ Collections.singletonList("core-site"));
+ EasyMock.expect(stackMock.getConfigurationTypes("YARN")).andReturn(
+ Collections.singletonList("yarn-site"));
replayAll();