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

CLI client hangs

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • Major
    • cli
    • None

    Description

      There's a report from users that indicates a CLI client can hang at the following spot:

      java.lang.Thread.State: RUNNABLE 
      at java.net.SocketInputStream.socketRead0(Native Method) 
      at java.net.SocketInputStream.read(Unknown Source) 
      at java.io.FilterInputStream.read(Unknown Source) 
      at java.io.FilterInputStream.read(Unknown Source) 
      at javax.crypto.CipherInputStream.a(DashoA13*..) 
      at javax.crypto.CipherInputStream.read(DashoA13*..) 
      at java.io.DataInputStream.readFully(Unknown Source) 
      at java.io.DataInputStream.readFully(Unknown Source) 
      at hudson.cli.Connection.readByteArray(Connection.java:132) 
      at hudson.cli.CLI.connectViaCliPort(CLI.java:243) 
      at hudson.cli.CLI.<init>(CLI.java:134) 
      at hudson.cli.CLIConnectionFactory.connect(CLIConnectionFactory.java:72) 
      at hudson.cli.CLI._main(CLI.java:469) 
      at hudson.cli.CLI.main(CLI.java:384)
      

      At the same time the server has already progressed to the following state:

         java.lang.Thread.State: RUNNABLE
          at java.net.SocketInputStream.socketRead0(Native Method)
          at java.net.SocketInputStream.read(SocketInputStream.java:150)
          at java.net.SocketInputStream.read(SocketInputStream.java:121)
          at java.io.FilterInputStream.read(FilterInputStream.java:133)
          at java.io.FilterInputStream.read(FilterInputStream.java:107)
          at javax.crypto.CipherInputStream.getMoreData(CipherInputStream.java:103)
          at javax.crypto.CipherInputStream.read(CipherInputStream.java:224)
          at java.io.BufferedInputStream.fill(BufferedInputStream.java:235)
          at java.io.BufferedInputStream.read(BufferedInputStream.java:254)
          - locked <0x000000041fa9e560> (a java.io.BufferedInputStream)
          at hudson.remoting.ClassicCommandTransport.create(ClassicCommandTransport.java:98)
          at hudson.remoting.Channel.<init>(Channel.java:392)
          at hudson.remoting.Channel.<init>(Channel.java:388)
          at hudson.cli.CliProtocol$Handler.runCli(CliProtocol.java:48)
          at hudson.cli.CliProtocol2$Handler2.run(CliProtocol2.java:73)
          at hudson.cli.CliProtocol2.handle(CliProtocol2.java:32)
          at hudson.TcpSlaveAgentListener$ConnectionHandler.run(TcpSlaveAgentListener.java:150)
      

      The issue appears to be that the server thinks it has sent the server's identity (CliProtocol2.Handler2.run() line 62) but the client is still waiting for it. The problem is reported as always sporadically reproducible.

      I'm failing to reproduce this problem locally. If other people see this problem, please report that here.

      Attachments

        Issue Links

          Activity

            People

              kohsuke Kohsuke Kawaguchi
              kohsuke Kohsuke Kawaguchi
              Votes:
              9 Vote for this issue
              Watchers:
              8 Start watching this issue

              Dates

                Created:
                Updated: