Windows JNLP slave constantly dropping and reconnecting to master

458 views
Skip to first unread message

Christopher Walton

unread,
May 18, 2016, 12:46:27 PM5/18/16
to Jenkins Users
Hi all,

Kind of a novice in the case of Jenkins, but I have been looking for help online for a while now and haven't got much headway; hoping to get some insight from you guys.

Jenkins Version - 1.609.2
Master OS - Linux
Master Java Version - 1.8.0_45
Slave OS - Windows 7 x64
Slave Java Version -1.8.0_91

Currently I am attempting to connect a physical Windows slave, via JNLP, to a master. The slave is a on a network, behind a firewall, and the Master is on AWS on a separate network. Off the bat, we couldn't even connect to the master due to the firewall. After working with the admins an exception was put in and now we can successfully connect....kind of. Now onto the actual issue.

Initially the machine makes contact and connects just fine. After a random amount of time, anywhere from 1-4 minutes, the connection is terminated and it reconnects. This happens constantly both while idling and while attempting to run a build. I have installed it as a Windows service, connected it via running the java slave command, and using the Launch button on the browser; same issue each time.

On the Jenkins slave log when it disconnects it shows this.

ERROR: Connection terminated
java.io.EOFException
	at org.jenkinsci.remoting.nio.NioChannelHub$3.run(NioChannelHub.java:613)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:112)
	at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

On the Java side, either through the slave command line or looking at the jenkins-slave.err.log when it disconnects it shows this.

SEVERE: I/O error in channel channel
java.io.IOException: Unexpected termination of the channel
	at hudson.remoting.SynchronousCommandTransport$ReaderThread.run(SynchronousCommandTransport.java:50)
Caused by: java.io.EOFException
	at java.io.ObjectInputStream$PeekInputStream.readFully(Unknown Source)
	at java.io.ObjectInputStream$BlockDataInputStream.readShort(Unknown Source)
	at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
	at java.io.ObjectInputStream.<init>(Unknown Source)
	at hudson.remoting.ObjectInputStreamEx.<init>(ObjectInputStreamEx.java:40)
	at hudson.remoting.AbstractSynchronousByteArrayCommandTransport.read(AbstractSynchronousByteArrayCommandTransport.java:34)
	at hudson.remoting.SynchronousCommandTransport$ReaderThread.run(SynchronousCommandTransport.java:48)


In Jenkins Configure Global Security the TCP port for JNLP slave agents is fixed to port 50000 and the AWS instance that the master is hosted on has that port opened.The firewall is off on the slave as well. 
The AWS instance is behind a loadbalancer. For each of the possible ip's used by the loadbalancer, and the specific instance ip that the master is on, I am able to run nmap from the slave and port 50000 is open.

That was all of the information I thought might be helpful. Any information would be greatly appreciated.

Thanks,

Chris

Reply all
Reply to author
Forward
0 new messages