On 07/05/2010 12:31 PM, Philip Martin wrote:
> switch_tests.py 21 is failing when I use serf although it passes when
> I use neon.  The test involves a switch that fails because a directory
> to be added is obstructed by an unversioned directory.  This causes
> the switch to fail and the test then fails because serf and neon do
> things in different orders.  For two sibling directories neon calls:
> 
>   add_directory
>   close_directory
>   add_directory
>   close_directory
> 
> but serf calls:
> 
>   add_directory
>   add_directory
>   close_directory
>   close_directory
> 
> The add_directory calls add an incomplete directory that is made
> complete by the close_directory call.  So if the second add_directory
> fails the status of the first directory added depends on which http
> library is in use.
> 
> I am aware that there are ordering issues with serf, is this one of
> known ones?

I'm not exactly sure, but yes, I believe this is just such a Serf ordering
situation.  My understanding is that update/switch/etc. fire off handlers
for property and file content fetches, and I think those handlers (which can
run in parallel, kinda) open or add directories (via the editor) on an
as-needed basis, making the actual call ordering somewhat difficult to predict.

> Also, when the add_directory call in libsvn_wc returns an error back
> to serf the switch doesn't immediately abort, it calls add_directory
> on the failing path two more times.  Is this the way it's supposed to
> behave?

That sounds wrong, but not altogether unbelievable if in fact three
different fetch handlers are each trying the add_directory() in turn and not
sharing the failures with each other.

-- 
C. Michael Pilato <[email protected]>
CollabNet   <>   www.collab.net   <>   Distributed Development On Demand

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to