[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Fab-user] trivial put test case fails?

From: Niklas Lindström
Subject: Re: [Fab-user] trivial put test case fails?
Date: Mon, 23 Feb 2009 14:32:19 +0100


On Mon, Feb 23, 2009 at 12:37 AM, Christian Vest Hansen
<address@hidden> wrote:
> As expected. Fabric did a call to Channel.recv (or recv_stderr) which
> is blocking when no data is available, but closing the channel causes
> them to return empty strings. These empty strings causes an outputter
> thread to halt. Our trouble was that the code (in sudo) would never
> close the channels until the outputter thread had completed. This left
> an chan.exit_status_ready() check as the only means by which an
> outputter thread could terminate, and this check was placed *after*
> the recv() call, thus creating a dead-lock opportunity.
> I have pushed some changes that should prevent this type of dead-lock
> from happening, while making sure that all of the output from the
> commands gets processed.
> Please confirm that these changes indeed fixes it.

Confirmed. I've run through my full deployment suite (e.g. bunch of
tomcat restarts) and all seems fine.

>> * Most stuff (mv, rm, untar etc.) worked just fine. So did doing a
>> restart (using stop+start) with apache2ctl (and the
>> "etc/init.d/apache2" version). Maybe it was about the length of the
>> operation (restarting tomcat takes a couple of seconds)?..
> I am mildly surprised that it apparently worked most of the time. From
> looking at the code, I would expect the probability of dead-locking to
> be rather high.

Most if not all other commands run in under a second (including apache2ctl).

Best regards,

reply via email to

[Prev in Thread] Current Thread [Next in Thread]