timja / jenkins-gh-issues-poc-06-18

0 stars 0 forks source link

[JENKINS-38623] Jenkins 2 cli failes with "java.io.IOException: Unexpected termination of the channel" #3568

Open timja opened 8 years ago

timja commented 8 years ago

Symptom

If you run a job via the cli with the "-s" switch and the job does not print any output for longer then 5 seconds, the connection dies with "java.io.IOException: Unexpected termination of the channel"

Note: hudson.diyChunking is needed for https://issues.jenkins-ci.org/browse/JENKINS-35197

/usr/bin/java -Dhudson.diyChunking=false -jar /usr/lib/jenkins/jenkins-cli.jar -s http://127.0.0.1:8080 -i /root/kenkins_ssh_key build -s JOB
...
       [log] Sep 22, 2016 9:15:40 AM hudson.remoting.SynchronousCommandTransport$ReaderThread run
       [log] SEVERE: I/O error in channel Chunked connection to http://127.0.0.1:8080/cli
       [log] java.io.IOException: Unexpected termination of the channel
       [log]at hudson.remoting.SynchronousCommandTransport$ReaderThread.run(SynchronousCommandTransport.java:73)
       [log] Caused by: java.io.EOFException
       [log]at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2353)
       [log]at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2822)
       [log]at java.io.ObjectInputStream.readStreamH
...

Problem

The Jenkins built in Winstone-Jetty server uses a keep alive of 11,25 seconds (see https://github.com/jenkinsci/jenkins/blob/master/cli/src/main/java/hudson/cli/CLI.java#L156), while the jetty is configured with a 5 second timeout (see here https://github.com/jenkinsci/winstone/blob/master/README.md#command-line-options).

Workaround
Specify --httpKeepAliveTimeout=15000 to start of Jenkins


Originally reported by elconas, imported from: Jenkins 2 cli failes with "java.io.IOException: Unexpected termination of the channel"
  • status: Open
  • priority: Minor
  • resolution: Unresolved
  • imported: 2022/01/10
timja commented 8 years ago

oleg_nenashev:

The diagnosis looks reasonable to me. Keep Alive timeouts need to be aligned by default

Please provide the full stacktrace. The provided snippet is not enough to diagnose the cause. Are you also sure that CLI client version is aligned with Jenkins version?

timja commented 7 years ago

piratejohnny:

I have this problem too. I'm using the latest Jenkins 2 Docker image. I can't figure out how to set the keep alive timeout.