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

CLI client hangs

XMLWordPrintable

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

      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.

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

              Created:
              Updated: