The Jenkins update center retrieval code, as well as the code which obtains tool catalogues, is written to piggyback on the Internet connectivity of the user's browser, rather than directly downloading files. This has the advantage that if the master is not configured for a proxy (or cannot reach the Internet at all) you can still check for updates. But it has a number of disadvantages:

      1. The user's bandwidth is taken up, instead of the server's.

      2. The security mechanisms needed for this to work—signing to allow non-administrators to do the download, JSONP or postDocument to bypass same-origin restrictions, and some JavaScript AJAX glue—are complex and fragile, so when they break, updates are broken and it is tricky to debug the problem: you need to examine not only the server's logs and the update center's content, but the browser error console too.

      3. The download is interrupted by a new page load, so if a user clicks rapidly on several links, Jenkins goes into an exponential backoff procedure which can result in the download being significantly delayed with no clear explanation.

      4. The actual downloads of plugins or tools are still done directly, so you cannot really run with the master disconnected from the Internet—you can at best see that there are updates which could be installed.

      It would be better to default to making a direct connection, and fall back to the current browser tricks only if that fails.

          [JENKINS-19081] Download update center from master by default

          Jesse Glick created issue -

          Jesse Glick added a comment -

          Relevant bits: UpdateSite.updateDirectly; UpdateCenter/PageDecoratorImpl/footer.jelly and DownloadService/footer.jelly; hudson-behavior.js#downloadService; PluginManager/checkUpdates.jelly.

          Jesse Glick added a comment - Relevant bits: UpdateSite.updateDirectly ; UpdateCenter/PageDecoratorImpl/footer.jelly and DownloadService/footer.jelly ; hudson-behavior.js#downloadService ; PluginManager/checkUpdates.jelly .
          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: updateCenter New: robustness updateCenter
          Jesse Glick made changes -
          Jesse Glick made changes -
          Link New: This issue depends on JENKINS-21984 [ JENKINS-21984 ]

          Code changed in jenkins
          User: Jesse Glick
          Path:
          core/src/main/java/hudson/PluginManager.java
          core/src/main/java/hudson/model/DownloadService.java
          core/src/main/java/hudson/model/UpdateCenter.java
          core/src/main/java/hudson/model/UpdateSite.java
          core/src/main/java/hudson/util/FormValidation.java
          core/src/main/java/jenkins/security/DownloadSettings.java
          core/src/main/resources/hudson/PluginManager/advanced.jelly
          core/src/main/resources/hudson/model/UpdateCenter/PageDecoratorImpl/footer.jelly
          core/src/main/resources/jenkins/security/DownloadSettings/config.groovy
          core/src/main/resources/jenkins/security/DownloadSettings/help-checkSignature.html
          core/src/main/resources/jenkins/security/DownloadSettings/help-useBrowser.html
          core/src/main/resources/jenkins/security/Messages.properties
          test/src/test/java/hudson/model/DownloadServiceTest.java
          http://jenkins-ci.org/commit/jenkins/1ac77750e93f9a1970fecbecdf7f84279d0a62b9
          Log:
          [FIXED JENKINS-19081] Offer the option of downloading metadata directly from the server.

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Jesse Glick Path: core/src/main/java/hudson/PluginManager.java core/src/main/java/hudson/model/DownloadService.java core/src/main/java/hudson/model/UpdateCenter.java core/src/main/java/hudson/model/UpdateSite.java core/src/main/java/hudson/util/FormValidation.java core/src/main/java/jenkins/security/DownloadSettings.java core/src/main/resources/hudson/PluginManager/advanced.jelly core/src/main/resources/hudson/model/UpdateCenter/PageDecoratorImpl/footer.jelly core/src/main/resources/jenkins/security/DownloadSettings/config.groovy core/src/main/resources/jenkins/security/DownloadSettings/help-checkSignature.html core/src/main/resources/jenkins/security/DownloadSettings/help-useBrowser.html core/src/main/resources/jenkins/security/Messages.properties test/src/test/java/hudson/model/DownloadServiceTest.java http://jenkins-ci.org/commit/jenkins/1ac77750e93f9a1970fecbecdf7f84279d0a62b9 Log: [FIXED JENKINS-19081] Offer the option of downloading metadata directly from the server.
          SCM/JIRA link daemon made changes -
          Resolution New: Fixed [ 1 ]
          Status Original: In Progress [ 3 ] New: Resolved [ 5 ]

          Code changed in jenkins
          User: Jesse Glick
          Path:
          changelog.html
          http://jenkins-ci.org/commit/jenkins/485cc150eaa3d25dc64bc214a3f8a74194969069
          Log:
          [FIXED JENKINS-19081] Noting merge of #1144.

          Compare: https://github.com/jenkinsci/jenkins/compare/db4f60303aad...485cc150eaa3

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Jesse Glick Path: changelog.html http://jenkins-ci.org/commit/jenkins/485cc150eaa3d25dc64bc214a3f8a74194969069 Log: [FIXED JENKINS-19081] Noting merge of #1144. Compare: https://github.com/jenkinsci/jenkins/compare/db4f60303aad...485cc150eaa3

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

              Created:
              Updated:
              Resolved: