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 <cmpilato_at_collab.net>
CollabNet <> www.collab.net <> Distributed Development On Demand
Received on 2010-07-13 19:29:58 CEST