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

DirectoryBrowserSupport.buildChildPaths does quadratic number of calls to check whether entries are directories

      From a thread dump when the workspace browser was timing out trying to show me a directory:

      "Handling GET /job/.../ws/test/target/surefire-reports/ : ... / waiting for hudson.remoting.Channel@..." Id=... Group=main TIMED_WAITING on hudson.remoting.UserRequest@...
      	at java.lang.Object.wait(Native Method)
      	-  waiting on hudson.remoting.UserRequest@280e3332
      	at hudson.remoting.Request.call(Request.java:146)
      	at hudson.remoting.Channel.call(Channel.java:714)
      	at hudson.FilePath.act(FilePath.java:905)
      	at hudson.FilePath.act(FilePath.java:889)
      	at hudson.FilePath.isDirectory(FilePath.java:1389)
      	at jenkins.util.VirtualFile$2.isDirectory(VirtualFile.java:266)
      	at hudson.model.DirectoryBrowserSupport$FileComparator.dirRank(DirectoryBrowserSupport.java:443)
      	at hudson.model.DirectoryBrowserSupport$FileComparator.compare(DirectoryBrowserSupport.java:435)
      	at hudson.model.DirectoryBrowserSupport$FileComparator.compare(DirectoryBrowserSupport.java:426)
      	at java.util.TimSort.mergeHi(Unknown Source)
      	at java.util.TimSort.mergeAt(Unknown Source)
      	at java.util.TimSort.mergeCollapse(Unknown Source)
      	at java.util.TimSort.sort(Unknown Source)
      	at java.util.TimSort.sort(Unknown Source)
      	at java.util.Arrays.sort(Unknown Source)
      	at hudson.model.DirectoryBrowserSupport.buildChildPaths(DirectoryBrowserSupport.java:460)
      	at hudson.model.DirectoryBrowserSupport.serveFile(DirectoryBrowserSupport.java:254)
      	at hudson.model.DirectoryBrowserSupport.generateResponse(DirectoryBrowserSupport.java:123)
      

          [JENKINS-21780] DirectoryBrowserSupport.buildChildPaths does quadratic number of calls to check whether entries are directories

          Jesse Glick created issue -
          Jesse Glick made changes -
          Assignee New: Jesse Glick [ jglick ]
          Jesse Glick made changes -
          Status Original: Open [ 1 ] New: In Progress [ 3 ]
          Jesse Glick made changes -
          Labels Original: performance New: lts-candidate performance

          Code changed in jenkins
          User: Jesse Glick
          Path:
          changelog.html
          core/src/main/java/hudson/model/DirectoryBrowserSupport.java
          http://jenkins-ci.org/commit/jenkins/d577c0850d10348c92d763309b163223be26f68b
          Log:
          [FIXED JENKINS-21780] DirectoryBrowserSupport.FileComparator should cache isDirectory calls.

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Jesse Glick Path: changelog.html core/src/main/java/hudson/model/DirectoryBrowserSupport.java http://jenkins-ci.org/commit/jenkins/d577c0850d10348c92d763309b163223be26f68b Log: [FIXED JENKINS-21780] DirectoryBrowserSupport.FileComparator should cache isDirectory calls.
          SCM/JIRA link daemon made changes -
          Resolution New: Fixed [ 1 ]
          Status Original: In Progress [ 3 ] New: Resolved [ 5 ]

          dogfood added a comment -

          Integrated in jenkins_main_trunk #3192
          [FIXED JENKINS-21780] DirectoryBrowserSupport.FileComparator should cache isDirectory calls. (Revision d577c0850d10348c92d763309b163223be26f68b)

          Result = SUCCESS
          Jesse Glick : d577c0850d10348c92d763309b163223be26f68b
          Files :

          • core/src/main/java/hudson/model/DirectoryBrowserSupport.java
          • changelog.html

          dogfood added a comment - Integrated in jenkins_main_trunk #3192 [FIXED JENKINS-21780] DirectoryBrowserSupport.FileComparator should cache isDirectory calls. (Revision d577c0850d10348c92d763309b163223be26f68b) Result = SUCCESS Jesse Glick : d577c0850d10348c92d763309b163223be26f68b Files : core/src/main/java/hudson/model/DirectoryBrowserSupport.java changelog.html

          Code changed in jenkins
          User: Jesse Glick
          Path:
          core/src/main/java/hudson/model/DirectoryBrowserSupport.java
          http://jenkins-ci.org/commit/jenkins/ab54f136ca66dc0a29886c5dc94851adeb166356
          Log:
          [FIXED JENKINS-21780] DirectoryBrowserSupport.FileComparator should cache isDirectory calls.

          (cherry picked from commit d577c0850d10348c92d763309b163223be26f68b)

          Conflicts:
          changelog.html
          core/src/main/java/hudson/model/DirectoryBrowserSupport.java

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Jesse Glick Path: core/src/main/java/hudson/model/DirectoryBrowserSupport.java http://jenkins-ci.org/commit/jenkins/ab54f136ca66dc0a29886c5dc94851adeb166356 Log: [FIXED JENKINS-21780] DirectoryBrowserSupport.FileComparator should cache isDirectory calls. (cherry picked from commit d577c0850d10348c92d763309b163223be26f68b) Conflicts: changelog.html core/src/main/java/hudson/model/DirectoryBrowserSupport.java
          Oliver Gondža made changes -
          Labels Original: lts-candidate performance New: 1.532.3-fixed performance
          Jesse Glick made changes -
          Resolution Original: Fixed [ 1 ]
          Status Original: Resolved [ 5 ] New: Reopened [ 4 ]

            jglick Jesse Glick
            jglick Jesse Glick
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: