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

Weather column should render asynchronously

    XMLWordPrintable

    Details

    • Similar Issues:

      Description

      Job.getBuildHealthReports can be expensive, especially with Maven projects (see JENKINS-19392). Putting jobs into folders does not help, because Folder.getBuildHealthReports recursively traverses them, and the default WorstChildHealthMetric checks the result of each leaf. It should not be called synchronously during page rendering. Rather, WeatherColumn/column.jelly should use an AJAX callback of some kind, effective while the page is fronted. So you would get a quick page load, with some icons filling in progressively. Still puts load on the server but potentially much less.

        Attachments

          Issue Links

            Activity

            Hide
            jglick Jesse Glick added a comment -

            Auto refresh makes everything that much worse.

            Show
            jglick Jesse Glick added a comment - Auto refresh makes everything that much worse.
            Hide
            jglick Jesse Glick added a comment -

            Looked into implementing this. Tricky to render HTML content from existing column.jelly scripts but ought to be possible. (l:renderOnDemand is not suitable since that makes one HTTP request per response, and is insensitive to page activity. Really want ProgressiveRendering, but this does not yet support HTML output, only JSON, meaning that buildHealth.jelly could not be reused.)

            The real trouble is JENKINS-16341: even creating a single ProgressiveRendering per list view render would add a new entry to BoundObjectTable per page load, which would quickly add up to a huge amount of memory consumed by the server if you have lots of active sessions browsing Jenkins repeatedly.

            Show
            jglick Jesse Glick added a comment - Looked into implementing this. Tricky to render HTML content from existing column.jelly scripts but ought to be possible. ( l:renderOnDemand is not suitable since that makes one HTTP request per response, and is insensitive to page activity. Really want ProgressiveRendering , but this does not yet support HTML output, only JSON, meaning that buildHealth.jelly could not be reused.) The real trouble is JENKINS-16341 : even creating a single ProgressiveRendering per list view render would add a new entry to BoundObjectTable per page load, which would quickly add up to a huge amount of memory consumed by the server if you have lots of active sessions browsing Jenkins repeatedly.
            Hide
            jglick Jesse Glick added a comment -

            Depends on more tractable special case JENKINS-25081.

            Show
            jglick Jesse Glick added a comment - Depends on more tractable special case JENKINS-25081 .

              People

              • Assignee:
                Unassigned
                Reporter:
                jglick Jesse Glick
              • Votes:
                1 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated: