More scalable slaves



Nio

NIO-based Java Web Start (JNLP) slave handling is coming to 1.560. This will help you run a large number of JNLP slaves more efficiently. A connected JNLP slave used to occupy one thread on the master, but now it occupies none. Combined with the earlier change that eliminated threads from idle executors, now you can connect thousands of slaves.

All you have to do is to use the latest slave.jar from Jenkins 1.560. No other changes are necessary on users' part.

A bulk of this is implemented in remoting 2.38, and a good part of it was implemented about a year ago on the airplane on the way to Europe.

We plan to make CLI connections take advantages of this too, which helps those who use that a lot. That's not in 1.560, but hopefully it'll be in the near future. This change also paves a way for multi-participant bus-topology communication, which I think would be an useful building block for the work-in-progress master-to-master API.