You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Eric Gillespie <ep...@pretzelnet.org> on 2007/09/12 19:14:38 UTC

BUG with complex branching, only over neon and serf

I might be able to get help from Sussman on this, but maybe not.
So any other neon or serf experts, please chime in :).

I found a bug in ra -neon and -serf that can't be shown with the
client library, but only when using the ra commit editor to build
up a relatively complex transaction.  Presumably you can
demonstrate this problem with mucc, but I have not tried.

The problem is basically:

  1. Delete /trunk/dir1/dir2/
  => commit r13
  2. In one transaction:
     a. Copy /trunk@13 to /branch
     b. Create /branch/dir1/dir2
  => commit r14
  3. In one transaction:
     a. Delete /branch
     b. Copy /trunk@13 to /branch
     c. Create /branch/dir1/dir2
  => ERROR: .../branch/dir1/dir2 already exists

Of course, /branch/dir1/dir2 does *not* exist in the transaction
I'm building in step 3!  Some or all of Neon, serf, and
mod-dav-svn are looking at branch/dir1/dir2 in the revision root
rather than the transaction root.

There's a bit more to it, and serf is slightly different than
neon, but that's basically it.  See the test script for details.
Plop it into subversion/bindings/swig/python/tests and run it.
Comment out both REOPS_URL settings to see it run over local.

0 trunk2% python subversion/bindings/swig/python/tests/bug.py
*** testing over file
D trunk/dir1/dir2/
*** Committed r13
branch 0
A branch/ (from trunk@13)
A branch/dir1/dir2/
*** Committed r14
branch 1
R branch/ (from trunk@13)
A branch/dir1/dir2/
*** Committed r15
branch 2
R branch/ (from trunk@13)
A branch/dir1/dir2
*** Committed r16
branch 3
R branch/ (from trunk@13)
A branch/dir1/dir2
*** Committed r17
.
----------------------------------------------------------------------
Ran 1 test in 0.760s

OK
0 trunk2% python subversion/bindings/swig/python/tests/bug.py
*** testing over svn+ssh
D trunk/dir1/dir2/
*** Committed r13
branch 0
A branch/ (from trunk@13)
A branch/dir1/dir2/
*** Committed r14
branch 1
R branch/ (from trunk@13)
A branch/dir1/dir2/
*** Committed r15
branch 2
R branch/ (from trunk@13)
A branch/dir1/dir2
*** Committed r16
branch 3
R branch/ (from trunk@13)
A branch/dir1/dir2
*** Committed r17
.
----------------------------------------------------------------------
Ran 1 test in 0.902s

OK
0 trunk2% python subversion/bindings/swig/python/tests/bug.py
*** testing over http
D trunk/dir1/dir2/
*** Committed r13
branch 0
A branch/ (from trunk@13)
A branch/dir1/dir2/
*** Committed r14
branch 1
R branch/ (from trunk@13)
A branch/dir1/dir2/
*** Committed r15
branch 2
R branch/ (from trunk@13)
A branch/dir1/dir2
E
======================================================================
ERROR: test_bug (__main__.SubversionRepositoryAccessTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "subversion/bindings/swig/python/tests/bug.py", line 152, in test_bug
    driver_cb)
  File "/usr/local/google/home/epg/work/svn/trunk2/subversion/bindings/swig/python/libsvn/delta.py", line 514, in svn_delta_path_driver
    return apply(_delta.svn_delta_path_driver, args)
  File "subversion/bindings/swig/python/tests/bug.py", line 149, in driver_cb
    editor.close_file(editor.add_file(path, parent, None, -1),
  File "/usr/local/google/home/epg/work/svn/trunk2/subversion/bindings/swig/python/libsvn/delta.py", line 441, in add_file
    return svn_delta_editor_invoke_add_file(self, *args)
  File "/usr/local/google/home/epg/work/svn/trunk2/subversion/bindings/swig/python/libsvn/delta.py", line 651, in svn_delta_editor_invoke_add_file
    return apply(_delta.svn_delta_editor_invoke_add_file, args)
SubversionException: ("File '/svn-test-work/repositories/basic_tests-1/branch/dir1/dir2' already exists", 175005)


import unittest, os, setup_path

from svn import core, repos, fs, delta, client, ra
from StringIO import StringIO

# Use repository path where davautochec.sh-started httpd looks.
import trac.versioncontrol.tests.svn_fs
trac.versioncontrol.tests.svn_fs.REPOS_PATH = os.path.abspath(os.path.dirname(__file__) + '/../../../../tests/cmdline/svn-test-work/repositories/basic_tests-1')

# works over ra -local and -svn
trac.versioncontrol.tests.svn_fs.REPOS_URL = 'svn+ssh://localhost + trac.versioncontrol.tests.svn_fs.REPOS_PATH
# not over ra-neon
trac.versioncontrol.tests.svn_fs.REPOS_URL = 'http://localhost:7818/svn-test-work/repositories/basic_tests-1'

from trac.versioncontrol.tests.svn_fs import SubversionRepositoryTestSetup, \
  REPOS_PATH, REPOS_URL

class Callbacks:
  open_tmp_file = None
  progress_func = None
  cancel_func = None
  get_wc_prop = None
  push_wc_prop = None
  def __init__(self):
    self.auth_baton = core.svn_auth_open([
        client.get_simple_provider(),
        client.get_username_provider(),
        ])
    core.svn_auth_set_parameter(self.auth_baton,
                                core.SVN_AUTH_PARAM_DEFAULT_USERNAME,
                                'jrandom')
    core.svn_auth_set_parameter(self.auth_baton,
                                core.SVN_AUTH_PARAM_DEFAULT_PASSWORD,
                                'rayjandom')

class SubversionRepositoryAccessTestCase(unittest.TestCase):
  def setUp(self):
    SubversionRepositoryTestSetup().setUp()

    ra.initialize()

    # Open repository directly for cross-checking
    self.repos = repos.open(REPOS_PATH)
    self.fs = repos.fs(self.repos)

    self.callbacks = Callbacks()

    svn_config_dir = os.path.expanduser('~/.subversion')
    self.svn_config = core.svn_config_get_config(svn_config_dir)

    print '*** testing over', REPOS_URL[:REPOS_URL.find(':')]
    self.ra_ctx = ra.open2(REPOS_URL, self.callbacks, self.svn_config, None)

  def test_bug(self):
    head = fs.youngest_rev(self.fs)

    info = [None]
    def commit_cb(commit_info, pool):
      info[0] = commit_info

    revprops = {"svn:log": "foobar"}

    print 'D trunk/dir1/dir2/'
    (editor, edit_baton) = ra.get_commit_editor3(self.ra_ctx, revprops,
                                                 commit_cb, None, False)
    def driver_cb(parent, path, pool):
      editor.delete_entry(path, head, parent, pool)
    delta.path_driver(editor, edit_baton, head, ['trunk/dir1/dir2'], driver_cb)
    editor.close_edit(edit_baton)
    self.assertEqual(info[0].revision, head + 1)
    head = info[0].revision
    print '*** Committed r' + str(head)

    # Prepare for branch operations.
    branch_code = 'A'
    copyfrom_rev = head

    # Four operations: branch 0 and 1 add a directory as
    # branch/dir1/dir2, followed by branch 2 and 3 adding a file as
    # branch/dir1/dir2.  All work over svn, but branch 2 fails over
    # neon.

    # Comment out branch 0 and 1 (leaving only the file operations),
    # and then it's branch 3 that fails.  Basically, if
    # branch/dir1/dir2 exists at all (file or dir), then adding
    # branch/dir1/dir2 as a file fails; adding dir2 as a directory is
    # no problem at all.

    # serf has the problem with directories as well as files, as it
    # fails even branch 1.

    print 'branch 0'
    print '%c branch/ (from trunk@%d)' % (branch_code, copyfrom_rev)
    print 'A branch/dir1/dir2/'
    editor, edit_baton = ra.get_commit_editor3(self.ra_ctx, revprops,
                                               commit_cb, None, False)
    def driver_cb(parent, path, pool):
      if path == 'branch':
        if branch_code == 'R':
          editor.delete_entry(path, head, parent, pool)
        return editor.add_directory(path, parent,
                                    '/'.join([REPOS_URL, 'trunk']),
                                    copyfrom_rev)
      elif path == 'branch/dir1/dir2':
        return editor.add_directory(path, parent, None, -1)
    delta.path_driver(editor, edit_baton, head, ['branch', 'branch/dir1/dir2'],
                      driver_cb)
    editor.close_edit(edit_baton)
    self.assertEqual(info[0].revision, head + 1)
    head = info[0].revision
    print '*** Committed r' + str(head)
    branch_code = 'R'

    print 'branch 1'
    print '%c branch/ (from trunk@%d)' % (branch_code, copyfrom_rev)
    print 'A branch/dir1/dir2/'
    editor, edit_baton = ra.get_commit_editor3(self.ra_ctx, revprops,
                                               commit_cb, None, False)
    def driver_cb(parent, path, pool):
      if path == 'branch':
        if branch_code == 'R':
          editor.delete_entry(path, head, parent, pool)
        return editor.add_directory(path, parent,
                                    '/'.join([REPOS_URL, 'trunk']),
                                    copyfrom_rev)
      elif path == 'branch/dir1/dir2':
        return editor.add_directory(path, parent, None, -1)
    delta.path_driver(editor, edit_baton, head, ['branch', 'branch/dir1/dir2'],
                      driver_cb)
    editor.close_edit(edit_baton)
    self.assertEqual(info[0].revision, head + 1)
    head = info[0].revision
    print '*** Committed r' + str(head)
    branch_code = 'R'

    print 'branch 2'
    print '%c branch/ (from trunk@%d)' % (branch_code, copyfrom_rev)
    print 'A branch/dir1/dir2'
    editor, edit_baton = ra.get_commit_editor3(self.ra_ctx, revprops,
                                               commit_cb, None, False)
    def driver_cb(parent, path, pool):
      if path == 'branch':
        if branch_code == 'R':
          editor.delete_entry(path, head, parent, pool)
        return editor.add_directory(path, parent,
                                    '/'.join([REPOS_URL, 'trunk']),
                                    copyfrom_rev)
      elif path == 'branch/dir1/dir2':
        editor.close_file(editor.add_file(path, parent, None, -1),
                          None, pool)
    delta.path_driver(editor, edit_baton, head, ['branch', 'branch/dir1/dir2'],
                      driver_cb)
    editor.close_edit(edit_baton)
    self.assertEqual(info[0].revision, head + 1)
    head = info[0].revision
    print '*** Committed r' + str(head)
    branch_code = 'R'

    print 'branch 3'
    print '%c branch/ (from trunk@%d)' % (branch_code, copyfrom_rev)
    print 'A branch/dir1/dir2'
    editor, edit_baton = ra.get_commit_editor3(self.ra_ctx, revprops,
                                               commit_cb, None, False)
    def driver_cb(parent, path, pool):
      if path == 'branch':
        if branch_code == 'R':
          editor.delete_entry(path, head, parent, pool)
        return editor.add_directory(path, parent,
                                    '/'.join([REPOS_URL, 'trunk']),
                                    copyfrom_rev)
      elif path == 'branch/dir1/dir2':
        editor.close_file(editor.add_file(path, parent, None, -1),
                          None, pool)
    delta.path_driver(editor, edit_baton, head, ['branch', 'branch/dir1/dir2'],
                      driver_cb)
    editor.close_edit(edit_baton)
    self.assertEqual(info[0].revision, head + 1)
    head = info[0].revision
    print '*** Committed r' + str(head)
    branch_code = 'R'

def suite():
    return unittest.makeSuite(SubversionRepositoryAccessTestCase, 'test')

if __name__ == '__main__':
    runner = unittest.TextTestRunner()
    runner.run(suite())

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: BUG with complex branching, only over neon and serf

Posted by Eric Gillespie <ep...@pretzelnet.org>.
Philip Martin <ph...@codematters.co.uk> writes:

> #!/bin/sh
> svnmucc="../../../contrib/client-side/svnmucc/svnmucc --username jrandom --password rayjandom -mm"
> REPO=http://localhost:23510/svn-test-work/repositories/repo
> rm -rf svn-test-work/repositories/repo
> svnadmin create svn-test-work/repositories/repo
> $svnmucc mkdir $REPO/trunk mkdir $REPO/trunk/dir1 mkdir $REPO/trunk/dir1/dir2
> $svnmucc rm $REPO/trunk/dir1/dir2
> $svnmucc cp 2 $REPO/trunk $REPO/branch mkdir $REPO/branch/dir1/dir2
> $svnmucc rm $REPO/branch cp 2 $REPO/trunk $REPO/branch mkdir $REPO/branch/dir1/dir2

Change that to this and it fails exactly the same was as my
Python script, and starts succeeding with my patch to neon.

0 cmdline% cat test.sh
#!/bin/sh
svnmucc="../../../contrib/client-side/svnmucc/svnmucc --username jrandom --password rayjandom -mm"
base_url=http://localhost:7818
REPO=$base_url/svn-test-work/repositories/repo
rm -rf svn-test-work/repositories/repo
svnadmin create svn-test-work/repositories/repo
$svnmucc mkdir $REPO/trunk mkdir $REPO/trunk/dir1 mkdir $REPO/trunk/dir1/dir2
$svnmucc rm $REPO/trunk/dir1/dir2
$svnmucc cp 2 $REPO/trunk $REPO/branch put /dev/null $REPO/branch/dir1/dir2
$svnmucc rm $REPO/branch cp 2 $REPO/trunk $REPO/branch put /dev/null $REPO/branch/dir1/dir2
svn --username jrandom --password rayjandom log -vq $REPO
0 cmdline% sh test.sh
r1 committed by jrandom at 2007-09-12T22:47:22.692032Z
r2 committed by jrandom at 2007-09-12T22:47:22.810216Z
r3 committed by jrandom at 2007-09-12T22:47:22.916317Z
subversion/libsvn_ra_neon/commit.c:1005: (apr_err=175005)
svnmucc: File '/svn-test-work/repositories/repo/branch/dir1/dir2' already exists

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: BUG with complex branching, only over neon and serf

Posted by Eric Gillespie <ep...@google.com>.
Philip Martin <ph...@codematters.co.uk> writes:

> Eric Gillespie <ep...@pretzelnet.org> writes:
> 
> > You must create branch/dir1/dir2 as a file to trigger the bug.
> > Now that you've shown the way, I'll see about getting an svnmucc
> > recipe; that should be easier for most folks to work with, I'm sure.
> 
> OK, that does trigger a bug:

Filed as http://subversion.tigris.org/issues/show_bug.cgi?id=2939

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: BUG with complex branching, only over neon and serf

Posted by Philip Martin <ph...@codematters.co.uk>.
Eric Gillespie <ep...@pretzelnet.org> writes:

> You must create branch/dir1/dir2 as a file to trigger the bug.
> Now that you've shown the way, I'll see about getting an svnmucc
> recipe; that should be easier for most folks to work with, I'm sure.

OK, that does trigger a bug:

#!/bin/sh
svnmucc="../../../contrib/client-side/svnmucc/svnmucc --username jrandom --password rayjandom -mm"
REPO=http://localhost:23510/svn-test-work/repositories/repo
rm -rf svn-test-work/repositories/repo
svnadmin create svn-test-work/repositories/repo
$svnmucc mkdir $REPO/trunk mkdir $REPO/trunk/dir1 mkdir $REPO/trunk/dir1/dir2
$svnmucc rm $REPO/trunk/dir1/dir2
$svnmucc cp 2 $REPO/trunk $REPO/branch put /dev/null $REPO/branch/dir1/dir2
$svnmucc rm $REPO/branch cp 2 $REPO/trunk $REPO/branch put /dev/null $REPO/branch/dir1/dir2
svn --username jrandom --password rayjandom log -v $REPO

Gives the error:

../src/subversion/libsvn_ra_neon/commit.c:1005: (apr_err=175005)
svnmucc: File '/svn-test-work/repositories/repo/branch/dir1/dir2' already exists

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: BUG with complex branching, only over neon and serf

Posted by Eric Gillespie <ep...@pretzelnet.org>.
Philip Martin <ph...@codematters.co.uk> writes:

> $svnmucc mkdir $REPO/trunk mkdir $REPO/trunk/dir1 mkdir $REPO/trunk/dir1/dir2
> $svnmucc rm $REPO/trunk/dir1/dir2
> $svnmucc cp 2 $REPO/trunk $REPO/branch mkdir $REPO/branch/dir1/dir2
> $svnmucc rm $REPO/branch cp 2 $REPO/trunk $REPO/branch mkdir $REPO/branch/dir1/dir2
> svn --username jrandom --password rayjandom log -vq $REPO

You must create branch/dir1/dir2 as a file to trigger the bug.
Now that you've shown the way, I'll see about getting an svnmucc
recipe; that should be easier for most folks to work with, I'm sure.

Thanks.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: BUG with complex branching, only over neon and serf

Posted by Philip Martin <ph...@codematters.co.uk>.
Eric Gillespie <ep...@pretzelnet.org> writes:

> I found a bug in ra -neon and -serf that can't be shown with the
> client library, but only when using the ra commit editor to build
> up a relatively complex transaction.  Presumably you can
> demonstrate this problem with mucc, but I have not tried.
>
> The problem is basically:
>
>   1. Delete /trunk/dir1/dir2/
>   => commit r13
>   2. In one transaction:
>      a. Copy /trunk@13 to /branch
>      b. Create /branch/dir1/dir2
>   => commit r14
>   3. In one transaction:
>      a. Delete /branch
>      b. Copy /trunk@13 to /branch
>      c. Create /branch/dir1/dir2
>   => ERROR: .../branch/dir1/dir2 already exists

I don't have a working set of python binding but using svnmucc your
recipe doesn't trigger a bug:


#!/bin/sh
svnmucc="../../../contrib/client-side/svnmucc/svnmucc --username jrandom --password rayjandom -mm"
REPO=http://localhost:23510/svn-test-work/repositories/repo
rm -rf svn-test-work/repositories/repo
svnadmin create svn-test-work/repositories/repo
$svnmucc mkdir $REPO/trunk mkdir $REPO/trunk/dir1 mkdir $REPO/trunk/dir1/dir2
$svnmucc rm $REPO/trunk/dir1/dir2
$svnmucc cp 2 $REPO/trunk $REPO/branch mkdir $REPO/branch/dir1/dir2
$svnmucc rm $REPO/branch cp 2 $REPO/trunk $REPO/branch mkdir $REPO/branch/dir1/dir2
svn --username jrandom --password rayjandom log -vq $REPO


------------------------------------------------------------------------
r4 | jrandom | 2007-09-12 23:30:24 +0100 (Wed, 12 Sep 2007)
Changed paths:
   R /branch (from /trunk:2)
   A /branch/dir1/dir2
------------------------------------------------------------------------
r3 | jrandom | 2007-09-12 23:30:24 +0100 (Wed, 12 Sep 2007)
Changed paths:
   A /branch (from /trunk:2)
   A /branch/dir1/dir2
------------------------------------------------------------------------
r2 | jrandom | 2007-09-12 23:30:24 +0100 (Wed, 12 Sep 2007)
Changed paths:
   D /trunk/dir1/dir2
------------------------------------------------------------------------
r1 | jrandom | 2007-09-12 23:30:24 +0100 (Wed, 12 Sep 2007)
Changed paths:
   A /trunk
   A /trunk/dir1
   A /trunk/dir1/dir2
------------------------------------------------------------------------

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: BUG with complex branching, only over neon and serf

Posted by Eric Gillespie <ep...@pretzelnet.org>.
Eric Gillespie <ep...@pretzelnet.org> writes:

>   1. Delete /trunk/dir1/dir2/
>   => commit r13
>   2. In one transaction:
>      a. Copy /trunk@13 to /branch
>      b. Create /branch/dir1/dir2
>   => commit r14
>   3. In one transaction:
>      a. Delete /branch
>      b. Copy /trunk@13 to /branch
>      c. Create /branch/dir1/dir2
>   => ERROR: .../branch/dir1/dir2 already exists

I thought it might be the check_path in
mod_dav_svn/repos.c:open_stream, but I added this block just
before the branch 2 operation to test the theory:

    txn = fs.begin_txn(self.fs, head)
    txnroot = fs.txn_root(txn)
    fs.delete(txnroot, 'branch')
    copyfrom_root = fs.revision_root(self.fs, copyfrom_rev)
    fs.copy(copyfrom_root, 'trunk', txnroot, 'branch')
    print 'hrm', fs.check_path(txnroot, 'branch/dir1/dir2')
    fs.make_file(txnroot, 'branch/dir1/dir2')
    fs.close_root(txnroot)
    (conflicts, head) = fs.commit_txn(txn)
    print '***', conflicts, head
    fs.close_root(copyfrom_root)

It worked, so I don't think it's the check_path.  Hrm.

-- 
Eric Gillespie <*> epg@pretzelnet.org

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: BUG with complex branching, only over neon and serf

Posted by Eric Gillespie <ep...@pretzelnet.org>.
Eric Gillespie <ep...@pretzelnet.org> writes:

> I think I have a fix for neon; I found where the error comes
> from, anyway, and commenting out what looks like a redundant
> client-side check makes this test run to completion.  I still
> have to run davautocheck and get some DAV gurus to look at it, to
> make sure I didn't break something else.

Nope, I just broke commit_tests.py 21: issue 644 attempt to add a
file twice.  I had commented out the existence check in
ra_neon/commit.c:commit_add_file, thinking it redundant.  But, I
don't understand why that block is necessary.  If I remove it, we
should still get an error (from the *fs*) when the path already
exists in the txnroot.  Why don't we?

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: BUG with complex branching, only over neon and serf

Posted by Eric Gillespie <ep...@pretzelnet.org>.
I think I have a fix for neon; I found where the error comes
from, anyway, and commenting out what looks like a redundant
client-side check makes this test run to completion.  I still
have to run davautocheck and get some DAV gurus to look at it, to
make sure I didn't break something else.

serf, however, I don't understand.  I traced the error to
subversion/libsvn_ra_serf/commit.c:checkout_dir where ra-serf
tries a checkout that neon doesn't.  First I have the section of
my access log from my locally patched ra-neon successfully
completing branch 1, followed by serf's failed attempt.

neon (works):
127.0.0.1 - jrandom [12/Sep/2007:15:16:18 -0700] "MKACTIVITY /svn-test-work/repositories/basic_tests-1/!svn/act/c8c6e2b2-617d-11dc-ac2a-7d296a68656f HTTP/1.1" 201 259
127.0.0.1 - jrandom [12/Sep/2007:15:16:18 -0700] "PROPFIND /svn-test-work/repositories/basic_tests-1 HTTP/1.1" 207 496
127.0.0.1 - jrandom [12/Sep/2007:15:16:18 -0700] "PROPFIND /svn-test-work/repositories/basic_tests-1/!svn/vcc/default HTTP/1.1" 207 463
127.0.0.1 - jrandom [12/Sep/2007:15:16:18 -0700] "CHECKOUT /svn-test-work/repositories/basic_tests-1/!svn/bln/14 HTTP/1.1" 201 274
127.0.0.1 - jrandom [12/Sep/2007:15:16:18 -0700] "PROPPATCH /svn-test-work/repositories/basic_tests-1/!svn/wbl/c8c6e2b2-617d-11dc-ac2a-7d296a68656f/14 HTTP/1.1" 207 493
127.0.0.1 - jrandom [12/Sep/2007:15:16:18 -0700] "PROPFIND /svn-test-work/repositories/basic_tests-1 HTTP/1.1" 207 448
127.0.0.1 - jrandom [12/Sep/2007:15:16:18 -0700] "CHECKOUT /svn-test-work/repositories/basic_tests-1/!svn/ver/14/ HTTP/1.1" 201 272
127.0.0.1 - jrandom [12/Sep/2007:15:16:18 -0700] "DELETE /svn-test-work/repositories/basic_tests-1/!svn/wrk/c8c6e2b2-617d-11dc-ac2a-7d296a68656f/branch HTTP/1.1" 204 -
127.0.0.1 - jrandom [12/Sep/2007:15:16:18 -0700] "PROPFIND /svn-test-work/repositories/basic_tests-1/trunk HTTP/1.1" 207 750
127.0.0.1 - jrandom [12/Sep/2007:15:16:18 -0700] "PROPFIND /svn-test-work/repositories/basic_tests-1/!svn/vcc/default HTTP/1.1" 207 516
127.0.0.1 - jrandom [12/Sep/2007:15:16:18 -0700] "COPY /svn-test-work/repositories/basic_tests-1/!svn/bc/13/trunk HTTP/1.1" 201 269
127.0.0.1 - jrandom [12/Sep/2007:15:16:18 -0700] "MKCOL /svn-test-work/repositories/basic_tests-1/!svn/wrk/c8c6e2b2-617d-11dc-ac2a-7d296a68656f/branch/dir1/dir2
 HTTP/1.1" 201 278
127.0.0.1 - jrandom [12/Sep/2007:15:16:18 -0700] "MERGE /svn-test-work/repositories/basic_tests-1 HTTP/1.1" 200 1853
127.0.0.1 - jrandom [12/Sep/2007:15:16:18 -0700] "DELETE /svn-test-work/repositories/basic_tests-1/!svn/act/c8c6e2b2-617d-11dc-ac2a-7d296a68656f HTTP/1.1" 204 -

serf (broke):
127.0.0.1 - jrandom [12/Sep/2007:15:18:45 -0700] "MKACTIVITY /svn-test-work/repositories/basic_tests-1/!svn/act/20612730-617e-11dc-8e20-316521cf6579 HTTP/1.1" 201 259
127.0.0.1 - jrandom [12/Sep/2007:15:18:45 -0700] "PROPFIND /svn-test-work/repositories/basic_tests-1/!svn/vcc/default HTTP/1.1" 207 463
127.0.0.1 - jrandom [12/Sep/2007:15:18:45 -0700] "PROPFIND /svn-test-work/repositories/basic_tests-1 HTTP/1.1" 207 448
127.0.0.1 - jrandom [12/Sep/2007:15:18:45 -0700] "CHECKOUT /svn-test-work/repositories/basic_tests-1/!svn/bln/14 HTTP/1.1" 201 274
127.0.0.1 - jrandom [12/Sep/2007:15:18:45 -0700] "PROPPATCH /svn-test-work/repositories/basic_tests-1/!svn/wbl/20612730-617e-11dc-8e20-316521cf6579/14 HTTP/1.1" 207 493
127.0.0.1 - jrandom [12/Sep/2007:15:18:45 -0700] "CHECKOUT /svn-test-work/repositories/basic_tests-1/!svn/ver/14 HTTP/1.1" 201 272
127.0.0.1 - jrandom [12/Sep/2007:15:18:45 -0700] "DELETE /svn-test-work/repositories/basic_tests-1/!svn/wrk/20612730-617e-11dc-8e20-316521cf6579/branch HTTP/1.1" 204 -
127.0.0.1 - jrandom [12/Sep/2007:15:18:45 -0700] "COPY /svn-test-work/repositories/basic_tests-1/!svn/bc/13/trunk HTTP/1.1" 201 269
127.0.0.1 - jrandom [12/Sep/2007:15:18:45 -0700] "CHECKOUT /svn-test-work/repositories/basic_tests-1/!svn/ver/14/branch/dir1 HTTP/1.1" 409 444

It's this last CHECKOUT that fails.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org