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

Saucelabs.com outage causes Jenkins outage when using SauceBadgeColumn

    XMLWordPrintable

    Details

    • Similar Issues:

      Description

      If your main view has the SauceBadgeColumn, a saucelabs.com outage will cause a Jenkins outage.

      As of Tue Mar 18 14:20:31 UTC 2014, saucelabs.com is not responding (seems well-hung). This causes Jenkins to hang.

      An easy fix is to add a read timeout and handle that failure gracefully.

      Thread dump:

      2014-03-18_14:09:48.10898 "Handling GET / : http-8084-3" daemon prio=10 tid=0x00007fbac404b800 nid=0x1986 runnable [0x00007fbad53b0000]
      2014-03-18_14:09:48.10899 java.lang.Thread.State: RUNNABLE
      2014-03-18_14:09:48.10900 at java.net.SocketInputStream.socketRead0(Native Method)
      2014-03-18_14:09:48.10900 at java.net.SocketInputStream.read(Unknown Source)
      2014-03-18_14:09:48.10901 at java.net.SocketInputStream.read(Unknown Source)
      2014-03-18_14:09:48.10902 at sun.security.ssl.InputRecord.readFully(Unknown Source)
      2014-03-18_14:09:48.10902 at sun.security.ssl.InputRecord.read(Unknown Source)
      2014-03-18_14:09:48.10903 at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
      2014-03-18_14:09:48.10903 - locked <0x00000000fcb17420> (a java.lang.Object)
      2014-03-18_14:09:48.10904 at sun.security.ssl.SSLSocketImpl.readDataRecord(Unknown Source)
      2014-03-18_14:09:48.10904 at sun.security.ssl.AppInputStream.read(Unknown Source)
      2014-03-18_14:09:48.10905 - locked <0x00000000fcb256a8> (a sun.security.ssl.AppInputStream)
      2014-03-18_14:09:48.10905 at java.io.BufferedInputStream.fill(Unknown Source)
      2014-03-18_14:09:48.10906 at java.io.BufferedInputStream.read1(Unknown Source)
      2014-03-18_14:09:48.10906 at java.io.BufferedInputStream.read(Unknown Source)
      2014-03-18_14:09:48.10907 - locked <0x00000000fcba7340> (a java.io.BufferedInputStream)
      2014-03-18_14:09:48.10908 at sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source)
      2014-03-18_14:09:48.10909 at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
      2014-03-18_14:09:48.10909 at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
      2014-03-18_14:09:48.10910 - locked <0x00000000fcb13910> (a sun.net.www.protocol.https.DelegateHttpsURLConnection)
      2014-03-18_14:09:48.10910 at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
      2014-03-18_14:09:48.10911 - locked <0x00000000fcb13890> (a sun.net.www.protocol.https.HttpsURLConnectionImpl)
      2014-03-18_14:09:48.10911 at com.saucelabs.saucerest.SauceREST.retrieveResults(SauceREST.java:140)
      2014-03-18_14:09:48.10912 at com.saucelabs.saucerest.SauceREST.retrieveResults(SauceREST.java:117)
      2014-03-18_14:09:48.10912 at hudson.plugins.sauce_ondemand.SauceBadgeColumn.getSauceUser(SauceBadgeColumn.java:59)
      2014-03-18_14:09:48.10913 at sun.reflect.GeneratedMethodAccessor358.invoke(Unknown Source)
      2014-03-18_14:09:48.10913 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
      2014-03-18_14:09:48.10914 at java.lang.reflect.Method.invoke(Unknown Source)

        Attachments

          Activity

          Hide
          recampbell Ryan Campbell added a comment -

          A related pull request which would migate this problem: https://github.com/saucelabs/saucerest-java/pull/8

          Unfortunately, if saucelabs.com goes down, most people would still pin the blame on Jenkins if they didn't look at the stack trace. So I think this badge really needs to be asynchronous, perhaps loaded as an image from an action hanging off the build vs. calling saucelabs.com when rendering the html.

          Show
          recampbell Ryan Campbell added a comment - A related pull request which would migate this problem: https://github.com/saucelabs/saucerest-java/pull/8 Unfortunately, if saucelabs.com goes down, most people would still pin the blame on Jenkins if they didn't look at the stack trace. So I think this badge really needs to be asynchronous, perhaps loaded as an image from an action hanging off the build vs. calling saucelabs.com when rendering the html.
          Hide
          jglick Jesse Glick added a comment -

          Indeed no code should be making a network request in the course of page rendering. Currently seems to use cached results for five minutes, but should not ever do this calculation synchronously. By the way loading an image asynchronously would not suffice as the user name is used also in a hyperlink; would need to use l:renderOnDemand (with l:ajax) or similar.

          Also it seems inappropriate for PluginImpl.disableStatusColumn to default to false. Would be more polite for SauceBadgeColumn.DescriptorImpl.shownByDefault to simply be false, where users would add the column to whichever views they wanted to see it on; this is how most plugin-contributed columns work.

          Show
          jglick Jesse Glick added a comment - Indeed no code should be making a network request in the course of page rendering. Currently seems to use cached results for five minutes, but should not ever do this calculation synchronously. By the way loading an image asynchronously would not suffice as the user name is used also in a hyperlink; would need to use l:renderOnDemand (with l:ajax ) or similar. Also it seems inappropriate for PluginImpl.disableStatusColumn to default to false. Would be more polite for SauceBadgeColumn.DescriptorImpl.shownByDefault to simply be false, where users would add the column to whichever views they wanted to see it on; this is how most plugin-contributed columns work.
          Hide
          rossrowe Ross Rowe added a comment -

          The updated version of the Sauce REST API has been included in version 1.74 of the Sauce Jenkins plugin

          Show
          rossrowe Ross Rowe added a comment - The updated version of the Sauce REST API has been included in version 1.74 of the Sauce Jenkins plugin

            People

            • Assignee:
              rossrowe Ross Rowe
              Reporter:
              recampbell Ryan Campbell
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: