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

Fitnesse Plugin - java.net.SocketTimeoutException: Read timed out

    XMLWordPrintable

Details

    Description

      We get this socket timeout the odd occasion, as you can see we have tried setting the HttpTimeout to a big number but it doesn't seem to help.

      12:59:36 hudson.plugins.fitnesse.FitnesseBuilder:

      {fitnesseTargetPage=PayrollTeam.ModulePayroll.AaTaxArea.NewZealandTax, fitnesseTargetIsSuite=true, fitnesseHost=Private, fitnesseHttpTimeout=2700000, fitnessePortRemote=8886, fitnesseStart=False, fitnessePathToXmlResultsOut=C:\PayGlobal\FitNesse\Results\XESuiteNZTax_Results.xml}

      12:59:36 Connnecting to http://PAYFIT003:8886/PayrollTeam.ModulePayroll.AaTaxArea.NewZealandTax?suite&format=xml&includehtml
      12:59:36 Connected: 200/OK
      13:44:46 java.net.SocketTimeoutException: Read timed out
      13:44:46 at java.net.SocketInputStream.socketRead0(Native Method)
      13:44:46 at java.net.SocketInputStream.read(Unknown Source)
      13:44:46 at java.net.SocketInputStream.read(Unknown Source)
      13:44:46 at java.io.BufferedInputStream.fill(Unknown Source)
      13:44:46 at java.io.BufferedInputStream.read1(Unknown Source)
      13:44:46 at java.io.BufferedInputStream.read(Unknown Source)
      13:44:46 at sun.net.www.http.ChunkedInputStream.readAheadBlocking(Unknown Source)
      13:44:46 at sun.net.www.http.ChunkedInputStream.readAhead(Unknown Source)
      13:44:46 at sun.net.www.http.ChunkedInputStream.read(Unknown Source)
      13:44:46 at java.io.FilterInputStream.read(Unknown Source)
      13:44:46 at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(Unknown Source)
      13:44:46 at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(Unknown Source)
      13:44:46 at hudson.plugins.fitnesse.FitnesseExecutor.getHttpBytes(FitnesseExecutor.java:230)
      13:44:46 at hudson.plugins.fitnesse.FitnesseExecutor$1.run(FitnesseExecutor.java:201)
      13:44:46 at java.lang.Thread.run(Unknown Source)

      I've had a quick look at the code and I'm pretty sure this is where it is crashing:

      try {
      log.println("Connnecting to " + pageCmdTarget);
      HttpURLConnection connection = (HttpURLConnection) pageCmdTarget.openConnection();
      connection.setReadTimeout(httpTimeout);
      log.println("Connected: " + connection.getResponseCode() + "/" + connection.getResponseMessage());

      inputStream = connection.getInputStream();
      long recvd = 0, lastLogged = 0;
      byte[] buf = new byte[4096];
      int lastRead;
      while ((lastRead = inputStream.read(buf)) > 0) {
      bucket.write(buf, 0, lastRead);
      timeout.reset();
      recvd += lastRead;
      if (recvd - lastLogged > 1024)

      { log.println(recvd/1024 + "k..."); lastLogged = recvd; }

      }
      } catch (IOException e)

      { // this may be a "premature EOF" caused by e.g. incorrect content-length HTTP header // so it may be non-fatal -- try to recover e.printStackTrace(log); }

      finally {
      if (inputStream != null) {
      try

      { inputStream.close(); }

      catch (Exception e)

      { // swallow }

      }
      }

      I'm not very good with networking code so would someone please be able to look at this for me and see if there is an issue or suggest something environmentally we could do to avoid these timeouts?

      Cheers,
      Sam

      Attachments

        Activity

          People

            Unassigned Unassigned
            samj Sam Jessop
            Votes:
            1 Vote for this issue
            Watchers:
            7 Start watching this issue

            Dates

              Created:
              Updated: