[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: svn commit: r40025 - trunk/subversion/libsvn_wc

From: Greg Stein <gstein_at_gmail.com>
Date: Fri, 16 Oct 2009 22:54:29 -0400

On Fri, Oct 16, 2009 at 20:35, Bert Huijben <bert_at_qqmail.nl> wrote:
>> -----Original Message-----
>> From: Bert Huijben [mailto:rhuijben_at_sharpsvn.net]
>> Sent: vrijdag 16 oktober 2009 23:24
>> To: 'Paul Burba'; dev_at_subversion.tigris.org
>> Cc: svn_at_subversion.tigris.org; gstein_at_gmail.com
>> Subject: RE: svn commit: r40025 - trunk/subversion/libsvn_wc
>>
>> > -----Original Message-----
>> > From: Paul Burba [mailto:ptburba_at_gmail.com]
>> > Sent: vrijdag 16 oktober 2009 18:54
>> > To: dev_at_subversion.tigris.org
>> > Cc: svn_at_subversion.tigris.org
>> > Subject: Re: svn commit: r40025 - trunk/subversion/libsvn_wc
>>
>> <snip 25 Kbyte patch>
>>
>> >
>> > Hi Bert,
>> >
>> > While testing a patch I noticed merge_tests.py 3 was failing.  After
>> > confirming it wasn't due to my changes I went looking for the culprit
>> > and it appears to be r40025.  The test fails when a file child *and*
>> > directory child of a subtree are deleted and then committed.  The
>> > commit appears to succeed but the deleted file still shows as
>> deleted,
>> > e.g.:
>> >
>> >   trunk.release.build>svn st -v
>> >                    1        1 jrandom      .
>> >                    1        1 jrandom      A
>> >                    1        1 jrandom      A\mu
>> >                    1        1 jrandom      A\B
>> >                    1        1 jrandom      A\B\lambda
>> >                    1        1 jrandom      A\B\E
>> >                    1        1 jrandom      A\B\E\alpha
>> >                    1        1 jrandom      A\B\E\beta
>> >                    1        1 jrandom      A\B\F
>> >                    1        1 jrandom      A\C
>> >                    1        1 jrandom      A\D
>> >                    1        1 jrandom      A\D\gamma
>> >                    1        1 jrandom      A\D\G
>> >                    1        1 jrandom      A\D\G\rho
>> >                    1        1 jrandom      A\D\G\pi
>> >                    1        1 jrandom      A\D\G\tau
>> >                    1        1 jrandom      A\D\H
>> >                    1        1 jrandom      A\D\H\chi
>> >                    1        1 jrandom      A\D\H\omega
>> >                    1        1 jrandom      A\D\H\psi
>> >                    1        1 jrandom      iota
>> >
>> >   trunk.release.build>svn del A\B\E A\B\lambda
>> >   D         A\B\E\alpha
>> >   D         A\B\E\beta
>> >   D         A\B\E
>> >   D         A\B\lambda
>> >
>> >   trunk.release.build>svn ci -m "delete"
>> >   Deleting       A\B\E
>> >   Deleting       A\B\lambda
>> >
>> >   Committed revision 2.
>> >
>> >   trunk.release.build>svn st -v
>> >                    1        1 jrandom      .
>> >                    1        1 jrandom      A
>> >                    1        1 jrandom      A\mu
>> >                    1        1 jrandom      A\B
>> > D                  1        1 jrandom      A\B\lambda
>> >                    1        1 jrandom      A\B\F
>> >                    1        1 jrandom      A\C
>> >                    1        1 jrandom      A\D
>> >                    1        1 jrandom      A\D\gamma
>> >                    1        1 jrandom      A\D\G
>> >                    1        1 jrandom      A\D\G\rho
>> >                    1        1 jrandom      A\D\G\pi
>> >                    1        1 jrandom      A\D\G\tau
>> >                    1        1 jrandom      A\D\H
>> >                    1        1 jrandom      A\D\H\chi
>> >                    1        1 jrandom      A\D\H\omega
>> >                    1        1 jrandom      A\D\H\psi
>> >                    1        1 jrandom      iota
>> >
>> > Both the file and directory deletes actually happened:
>> >
>> >   trunk.release.build>svn log -v -r2
>> >   -------------------------------------------------------------------
>> --
>> > ---
>> >   r2 | pburba | 2009-10-16 12:46:27 -0400 (Fri, 16 Oct 2009) | 1 line
>> >   Changed paths:
>> >      D /A/B/E
>> >      D /A/B/lambda
>> >
>> >
>> >   -------------------------------------------------------------------
>> --
>> > ---
>> >
>> >   trunk.release.build>svn up
>> >      C A\B\lambda
>> >   At revision 2.
>> >   Summary of conflicts:
>> >     Tree conflicts: 1
>> >
>> > The test *only* fails with a release build.  Could you do me a favor
>> > and try running the test with a release build and see if it fails for
>> > you?
>> >
>> > There seems to be something wrong with the initial checkout (obvious
>> > given the r40025 changes only libsvn_wc/update_editor.c).  If I
>> > perform the checkout using a debug build and then manually perform
>> the
>> > deletes and commit with a release build, then the commit works
>> > correctly.
>> >
>> > This is still failing for me as of trunk_at_40079.  Assuming you can
>> > replicate this any insight is appreciated.
>> >
>> > Paul
>> >
>>
>>
>> Strange issue this failure, but thanks for the release mode hint.
>
> After a lot of debugging I found the root cause of this issue and the issue
> itself is unrelated to the patch in r40025. It just happens to trigger the
> error because it had some pool and loggy changes, which reordered and
> splitted some loggy operations in multiple wq items.
>
>
>
> Our working queue handling in wc_db.c works with 'wri_paths', which is a raw
> estimation of in which wcroot a path is located.
>
> The problem in this specific testcase is that the wri_path points to a
> different wcroot before and after the working queue item is processed.
>
> workingqueue.c has a simple loop.
>
> Fetch work item and id from wri_path.
>
> <process item>
>
> Delete work item with id from wri_path.
>
>
> In this specific case the wq operation is deleting the directory after
> committing. Which changes the calculation of the wcroot to the parent. Which
> accidentally has a wq item with the same id. (Handling the commit
> processiong of A\B\lambda).
>
>
> I'm not going to fix this issue on this hour (It's 2:30 AM here), so if
> somebody else wants to fix this? (gstein?)

Sure, I'll get it fixed asap. Thanks for digging into this!

Cheers,
-g

------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=2408430
Received on 2009-10-17 04:54:54 CEST

This is an archived mail posted to the Subversion Dev mailing list.