You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Philip Martin <ph...@wandisco.com> on 2010/07/05 16:31:34 UTC

switch_tests.py 21 failing with serf

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?

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?

-- 
Philip

Re: switch_tests.py 21 failing with serf

Posted by "C. Michael Pilato" <cm...@collab.net>.
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 <cm...@collab.net>
CollabNet   <>   www.collab.net   <>   Distributed Development On Demand