Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-21969

Performance issue with search box

    XMLWordPrintable

    Details

    • Similar Issues:

      Description

      The current search box is very inefficient when checking for suggestions. When a user enters part of a username waiting for the autocomplete to finish, if there are a lot of users it can take a very long time.

      While running a search in the search box I ran a quick thread dump to find out where the suggest was being stuck at and found:

      Handling GET /jenkins/search/suggest : … state=RUNNABLE
          at java.lang.String$CaseInsensitiveComparator.compare(String.java:1170)
          at java.lang.String.compareToIgnoreCase(String.java:1220)
          at hudson.model.User$1.compare(User.java:397)
          at hudson.model.User$1.compare(User.java:395)
          at java.util.TimSort.mergeLo(TimSort.java:687)
          at java.util.TimSort.mergeAt(TimSort.java:483)
          at java.util.TimSort.mergeCollapse(TimSort.java:408)
          at java.util.TimSort.sort(TimSort.java:214)
          at java.util.TimSort.sort(TimSort.java:173)
          at java.util.Arrays.sort(Arrays.java:659)
          at java.util.Collections.sort(Collections.java:217)
          at hudson.model.User.getAll(User.java:395)
          at hudson.model.User$FullNameIdResolver.resolveCanonicalId(User.java:735)
          at hudson.model.User.get(User.java:326)
          at hudson.model.User.get(User.java:299)
          at hudson.model.User.get(User.java:354)
          at hudson.model.User.current(User.java:366)
          at hudson.search.UserSearchProperty.isCaseInsensitive(UserSearchProperty.java:26)
          at hudson.search.CollectionSearchIndex.suggest(CollectionSearchIndex.java:61)
          at hudson.search.UnionSearchIndex.suggest(UnionSearchIndex.java:63)
          at hudson.search.UnionSearchIndex.suggest(UnionSearchIndex.java:62)
          at hudson.search.UnionSearchIndex.suggest(UnionSearchIndex.java:62)
          at hudson.search.UnionSearchIndex.suggest(UnionSearchIndex.java:62)
          at hudson.search.UnionSearchIndex.suggest(UnionSearchIndex.java:62)
          at hudson.search.UnionSearchIndex.suggest(UnionSearchIndex.java:63)
          at hudson.search.Search$Mode$2.find(Search.java:192)
          at hudson.search.Search.find(Search.java:343)
          at hudson.search.Search.suggest(Search.java:268)
          at hudson.search.Search.getSuggestions(Search.java:134)
          at hudson.search.Search.doSuggest(Search.java:117)

        Attachments

          Activity

          schristou Steven Christou created issue -
          schristou Steven Christou made changes -
          Field Original Value New Value
          Description The current search box is very inefficient when checking for suggestions. The current search box is very inefficient when checking for suggestions. When a user enters part of a username waiting for the autocomplete to finish, if there are a lot of users it can take a very long time.
          schristou Steven Christou made changes -
          Description The current search box is very inefficient when checking for suggestions. When a user enters part of a username waiting for the autocomplete to finish, if there are a lot of users it can take a very long time. The current search box is very inefficient when checking for suggestions. When a user enters part of a username waiting for the autocomplete to finish, if there are a lot of users it can take a very long time.

          While running a search in the search box I ran a quick thread dump to find out where the suggest was being stuck at and found:

          Handling GET /jenkins/search/suggest : … state=RUNNABLE
              at java.lang.String$CaseInsensitiveComparator.compare(String.java:1170)
              at java.lang.String.compareToIgnoreCase(String.java:1220)
              at hudson.model.User$1.compare(User.java:397)
              at hudson.model.User$1.compare(User.java:395)
              at java.util.TimSort.mergeLo(TimSort.java:687)
              at java.util.TimSort.mergeAt(TimSort.java:483)
              at java.util.TimSort.mergeCollapse(TimSort.java:408)
              at java.util.TimSort.sort(TimSort.java:214)
              at java.util.TimSort.sort(TimSort.java:173)
              at java.util.Arrays.sort(Arrays.java:659)
              at java.util.Collections.sort(Collections.java:217)
              at hudson.model.User.getAll(User.java:395)
              at hudson.model.User$FullNameIdResolver.resolveCanonicalId(User.java:735)
              at hudson.model.User.get(User.java:326)
              at hudson.model.User.get(User.java:299)
              at hudson.model.User.get(User.java:354)
              at hudson.model.User.current(User.java:366)
              at hudson.search.UserSearchProperty.isCaseInsensitive(UserSearchProperty.java:26)
              at hudson.search.CollectionSearchIndex.suggest(CollectionSearchIndex.java:61)
              at hudson.search.UnionSearchIndex.suggest(UnionSearchIndex.java:63)
              at hudson.search.UnionSearchIndex.suggest(UnionSearchIndex.java:62)
              at hudson.search.UnionSearchIndex.suggest(UnionSearchIndex.java:62)
              at hudson.search.UnionSearchIndex.suggest(UnionSearchIndex.java:62)
              at hudson.search.UnionSearchIndex.suggest(UnionSearchIndex.java:62)
              at hudson.search.UnionSearchIndex.suggest(UnionSearchIndex.java:63)
              at hudson.search.Search$Mode$2.find(Search.java:192)
              at hudson.search.Search.find(Search.java:343)
              at hudson.search.Search.suggest(Search.java:268)
              at hudson.search.Search.getSuggestions(Search.java:134)
              at hudson.search.Search.doSuggest(Search.java:117)
          schristou Steven Christou made changes -
          Description The current search box is very inefficient when checking for suggestions. When a user enters part of a username waiting for the autocomplete to finish, if there are a lot of users it can take a very long time.

          While running a search in the search box I ran a quick thread dump to find out where the suggest was being stuck at and found:

          Handling GET /jenkins/search/suggest : … state=RUNNABLE
              at java.lang.String$CaseInsensitiveComparator.compare(String.java:1170)
              at java.lang.String.compareToIgnoreCase(String.java:1220)
              at hudson.model.User$1.compare(User.java:397)
              at hudson.model.User$1.compare(User.java:395)
              at java.util.TimSort.mergeLo(TimSort.java:687)
              at java.util.TimSort.mergeAt(TimSort.java:483)
              at java.util.TimSort.mergeCollapse(TimSort.java:408)
              at java.util.TimSort.sort(TimSort.java:214)
              at java.util.TimSort.sort(TimSort.java:173)
              at java.util.Arrays.sort(Arrays.java:659)
              at java.util.Collections.sort(Collections.java:217)
              at hudson.model.User.getAll(User.java:395)
              at hudson.model.User$FullNameIdResolver.resolveCanonicalId(User.java:735)
              at hudson.model.User.get(User.java:326)
              at hudson.model.User.get(User.java:299)
              at hudson.model.User.get(User.java:354)
              at hudson.model.User.current(User.java:366)
              at hudson.search.UserSearchProperty.isCaseInsensitive(UserSearchProperty.java:26)
              at hudson.search.CollectionSearchIndex.suggest(CollectionSearchIndex.java:61)
              at hudson.search.UnionSearchIndex.suggest(UnionSearchIndex.java:63)
              at hudson.search.UnionSearchIndex.suggest(UnionSearchIndex.java:62)
              at hudson.search.UnionSearchIndex.suggest(UnionSearchIndex.java:62)
              at hudson.search.UnionSearchIndex.suggest(UnionSearchIndex.java:62)
              at hudson.search.UnionSearchIndex.suggest(UnionSearchIndex.java:62)
              at hudson.search.UnionSearchIndex.suggest(UnionSearchIndex.java:63)
              at hudson.search.Search$Mode$2.find(Search.java:192)
              at hudson.search.Search.find(Search.java:343)
              at hudson.search.Search.suggest(Search.java:268)
              at hudson.search.Search.getSuggestions(Search.java:134)
              at hudson.search.Search.doSuggest(Search.java:117)
          The current search box is very inefficient when checking for suggestions. When a user enters part of a username waiting for the autocomplete to finish, if there are a lot of users it can take a very long time.

          While running a search in the search box I ran a quick thread dump to find out where the suggest was being stuck at and found:

          {noformat}Handling GET /jenkins/search/suggest : … state=RUNNABLE
              at java.lang.String$CaseInsensitiveComparator.compare(String.java:1170)
              at java.lang.String.compareToIgnoreCase(String.java:1220)
              at hudson.model.User$1.compare(User.java:397)
              at hudson.model.User$1.compare(User.java:395)
              at java.util.TimSort.mergeLo(TimSort.java:687)
              at java.util.TimSort.mergeAt(TimSort.java:483)
              at java.util.TimSort.mergeCollapse(TimSort.java:408)
              at java.util.TimSort.sort(TimSort.java:214)
              at java.util.TimSort.sort(TimSort.java:173)
              at java.util.Arrays.sort(Arrays.java:659)
              at java.util.Collections.sort(Collections.java:217)
              at hudson.model.User.getAll(User.java:395)
              at hudson.model.User$FullNameIdResolver.resolveCanonicalId(User.java:735)
              at hudson.model.User.get(User.java:326)
              at hudson.model.User.get(User.java:299)
              at hudson.model.User.get(User.java:354)
              at hudson.model.User.current(User.java:366)
              at hudson.search.UserSearchProperty.isCaseInsensitive(UserSearchProperty.java:26)
              at hudson.search.CollectionSearchIndex.suggest(CollectionSearchIndex.java:61)
              at hudson.search.UnionSearchIndex.suggest(UnionSearchIndex.java:63)
              at hudson.search.UnionSearchIndex.suggest(UnionSearchIndex.java:62)
              at hudson.search.UnionSearchIndex.suggest(UnionSearchIndex.java:62)
              at hudson.search.UnionSearchIndex.suggest(UnionSearchIndex.java:62)
              at hudson.search.UnionSearchIndex.suggest(UnionSearchIndex.java:62)
              at hudson.search.UnionSearchIndex.suggest(UnionSearchIndex.java:63)
              at hudson.search.Search$Mode$2.find(Search.java:192)
              at hudson.search.Search.find(Search.java:343)
              at hudson.search.Search.suggest(Search.java:268)
              at hudson.search.Search.getSuggestions(Search.java:134)
              at hudson.search.Search.doSuggest(Search.java:117){noformat}
          jglick Jesse Glick made changes -
          Labels performance
          scm_issue_link SCM/JIRA link daemon made changes -
          Resolution Fixed [ 1 ]
          Status Open [ 1 ] Resolved [ 5 ]
          schristou Steven Christou made changes -
          Labels performance lts-candidate performance
          olivergondza Oliver Gondža made changes -
          Labels lts-candidate performance 1.554.1-fixed performance
          rtyler R. Tyler Croy made changes -
          Workflow JNJira [ 154046 ] JNJira + In-Review [ 194768 ]

            People

            Assignee:
            schristou Steven Christou
            Reporter:
            schristou Steven Christou
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved: