Ah! Brilliant, Doug. Thanks for the patch! That cleared the problem right up.
- Jamis On Mar 30, 2007, at 12:51 PM, Doug Barth wrote: > > The problem here is that your signaling thread is signaling before the > originating thread has had the chance to wait on the condition. This > results in the wait hanging forever waiting for a signal. The fix is > to synchronize the creation of the background thread as well. Here's a > patch that fixes the issue. I have also removed the Thread.pass calls > as they not needed. > > Index: gateway.rb > =================================================================== > --- gateway.rb (revision 6494) > +++ gateway.rb (working copy) > @@ -38,18 +38,18 @@ > mutex = Mutex.new > waiter = ConditionVariable.new > > - @thread = Thread.new do > - logger.trace "starting connection to gateway > `#{server.host}'" if logger > - SSH.connect(server, @options) do |@session| > - logger.trace "gateway connection established" if logger > - Thread.pass > - mutex.synchronize { waiter.signal } > - @session.loop { [EMAIL PROTECTED] } > + mutex.synchronize do > + @thread = Thread.new do > + logger.trace "starting connection to gateway > `#{server.host}'" if logger > + SSH.connect(server, @options) do |@session| > + logger.trace "gateway connection established" if logger > + mutex.synchronize { waiter.signal } > + @session.loop do > + [EMAIL PROTECTED] > + end > + end > end > - end > > - mutex.synchronize do > - Thread.pass > waiter.wait(mutex) > end > end > > > On Mar 30, 9:38 am, Jamis Buck <[EMAIL PROTECTED]> wrote: >> Yeah...I've not been able to figure that out. It only happens >> intermittently to me. If you go into test/gateway_test.rb and comment >> out the >> test_initialize_when_connect_lags_should_open_and_set_session_value >> test (lines 13-17), it should go away. >> >> Any threading/concurrency gurus around that would like to help >> explain what I'm doing wrong? It only seems to affect the tests; >> Capistrano itself hasn't seemed to be impacted by this. >> >> - Jamis >> >> P.S. Good to see some people starting to play with cap2! >> >> On Mar 30, 2007, at 8:29 AM, rubdabadub wrote: >> >>> Hi: >> >>> I am just wondering what does this mean.. I get when i run the tests >> >>> .................................................................... >>> .. >>> ...................................................deadlock >>> 0x14bc084: sleep:- - ./test/cli/../../lib/capistrano/gateway.rb:46 >>> deadlock 0x31704: sleep:- (main) - ./test/cli/../../lib/capistrano/ >>> gateway.rb:53 >> >>> Does it mean I am missing something or?? >> >>> Thanks > > > > --~--~---------~--~----~------------~-------~--~----~ To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/capistrano -~----------~----~----~----~------~----~------~--~---