提交 ef74ed31 编写于 作者: C ctapobep 提交者: sbashkyrtsev

[JENKINS-18721] Imrovement of performance - now when ListView builds up it...

[JENKINS-18721] Imrovement of performance - now when ListView builds up it asks for all the jobs only once. This is important because RBAC plugin each time checks permissions for all these jobs which impacts performance
上级 b02d4573
......@@ -36,12 +36,7 @@ import hudson.views.ListViewColumn;
import hudson.views.ViewJobFilter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.SortedSet;
import java.util.TreeSet;
import java.util.*;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
......@@ -165,12 +160,13 @@ public class ListView extends View implements Saveable {
}
ItemGroup<? extends TopLevelItem> parent = getOwnerItemGroup();
includeItems(parent, names);
List<TopLevelItem> parentItems = new ArrayList<TopLevelItem>(parent.getItems());
includeItems(parent, parentItems, names);
Boolean statusFilter = this.statusFilter; // capture the value to isolate us from concurrent update
for (TopLevelItem item : Items.getAllItems(getOwnerItemGroup(), TopLevelItem.class)) {
if (!names.contains(item.getRelativeNameFrom(getOwnerItemGroup()))) continue;
// Add if no status filter or filter matches enabled/disabled status:
// Add if no status filter or filter matches enabled/disabl2ed status:
if(statusFilter == null || !(item instanceof AbstractProject)
|| ((AbstractProject)item).isDisabled() ^ statusFilter)
items.add(item);
......@@ -178,7 +174,7 @@ public class ListView extends View implements Saveable {
// check the filters
Iterable<ViewJobFilter> jobFilters = getJobFilters();
List<TopLevelItem> allItems = new ArrayList<TopLevelItem>(parent.getItems());
List<TopLevelItem> allItems = new ArrayList<TopLevelItem>(parentItems);
for (ViewJobFilter jobFilter: jobFilters) {
items = jobFilter.filter(items, allItems, this);
}
......@@ -193,16 +189,12 @@ public class ListView extends View implements Saveable {
return getItems().contains(item);
}
private void includeItems(ItemGroup<? extends TopLevelItem> parent, SortedSet<String> names) {
includeItems(parent, parent, names);
}
private void includeItems(ItemGroup<? extends TopLevelItem> root, ItemGroup<?> parent, SortedSet<String> names) {
private void includeItems(ItemGroup<? extends TopLevelItem> root, Collection<? extends Item> parentItems, SortedSet<String> names) {
if (includePattern != null) {
for (Item item : parent.getItems()) {
for (Item item : parentItems) {
if (recurse && item instanceof ItemGroup) {
ItemGroup<?> ig = (ItemGroup<?>) item;
includeItems(root, ig, names);
includeItems(root, ig.getItems(), names);
}
if (item instanceof TopLevelItem) {
String itemName = item.getRelativeNameFrom(root);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册