net-ssh/net-ssh-multi — pull request #4 by sersut (2013-06-13 21:18:53+00:00)
Title: Fix two problems with :concurrent_connections option

There are two issues right now in net-ssh-multi with :concurrent_connections option:

1-) There is a race condition while fetching the next_session when :concurrent_connections are set. @open_connections is being incremented by the connection thread and sometimes realize_pending_connections!() method can create more than required connection threads before the @open_connections is set by the previously created threads.

2-) When :concurrent_connections is set, server classes are setup with PendingConnection objects that always return true to busy? calls. If a connection fails when :concurrent_connections is set, server ends up returning true to all busy? calls since the session object is not replaced. Due to this, main event loop (process() function) never gets terminated.

1 causes chef not to honour the -C option in knife. 2 causes knife ssh to hang if -C option is specified.

This PR contains fixes these issues both.