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

svnsync test failures with 1.4.x svnserve [including a 1.5 release blocker]

From: David Glasser <glasser_at_davidglasser.net>
Date: Tue, 8 Apr 2008 17:22:50 -0700

Tests 20 and 22 in svnsync_tests.py fail when used with a 1.4.x svnserve.

CMD: /opt/svn/checkouts/trunk/subversion/svnsync/svnsync synchronize
svn://127.0.0.1:12467/svn-test-work/repositories/svnsync_tests-20-1
--username jrandom --password rayjandom --config-dir
/opt/svn/checkouts/trunk/subversion/tests/cmdline/svn-test-work/local_tmp/config
exited with 1
CMD: svnadmin create svn-test-work/repositories/svnsync_tests-20
--bdb-txn-nosync --pre-1.5-compatible <TIME = 0.081202>
CMD: svnadmin load --force-uuid --quiet
svn-test-work/repositories/svnsync_tests-20 <TIME = 0.116791>
CMD: svnadmin create svn-test-work/repositories/svnsync_tests-20-1
--bdb-txn-nosync --pre-1.5-compatible <TIME = 0.081725>
CMD: svnlook uuid svn-test-work/repositories/svnsync_tests-20 <TIME = 0.072774>
CMD: svnadmin load --force-uuid --quiet
svn-test-work/repositories/svnsync_tests-20-1 <TIME = 0.072808>
CMD: svnsync initialize
svn://127.0.0.1:12467/svn-test-work/repositories/svnsync_tests-20-1
svn://127.0.0.1:12467/svn-test-work/repositories/svnsync_tests-20
--username jrandom --password rayjandom --config-dir
/opt/svn/checkouts/trunk/subversion/tests/cmdline/svn-test-work/local_tmp/config
<TIME = 0.208568>
CMD: svnsync synchronize
svn://127.0.0.1:12467/svn-test-work/repositories/svnsync_tests-20-1
--username jrandom --password rayjandom --config-dir
/opt/svn/checkouts/trunk/subversion/tests/cmdline/svn-test-work/local_tmp/config
<TIME = 0.138181>
EXCEPTION: SVNUnexpectedStderr:
['subversion/libsvn_ra_svn/client.c:858: (apr_err=170003)\n',
"svnsync: Server doesn't support setting arbitrary revision properties
during commit\n"]
Traceback (most recent call last):
  File "/opt/svn/checkouts/trunk/subversion/tests/cmdline/svntest/main.py",
line 1066, in run
    rc = apply(self.pred.run, (), kw)
  File "/opt/svn/checkouts/trunk/subversion/tests/cmdline/svntest/testcase.py",
line 121, in run
    return self.func(sandbox)
  File "/opt/svn/checkouts/trunk/subversion/tests/cmdline/svnsync_tests.py",
line 664, in copy_revprops
    run_test(sbox, "revprops.dump")
  File "/opt/svn/checkouts/trunk/subversion/tests/cmdline/svnsync_tests.py",
line 135, in run_test
    run_sync(dest_sbox.repo_url)
  File "/opt/svn/checkouts/trunk/subversion/tests/cmdline/svnsync_tests.py",
line 56, in run_sync
    raise SVNUnexpectedStderr(errput)
SVNUnexpectedStderr: ['subversion/libsvn_ra_svn/client.c:858:
(apr_err=170003)\n', "svnsync: Server doesn't support setting
arbitrary revision properties during commit\n"]
FAIL: svnsync_tests.py 20: test copying revprops other than svn:*

CMD: /opt/svn/checkouts/trunk/subversion/svnsync/svnsync synchronize
svn://127.0.0.1:12467/svn-test-work/repositories/svnsync_tests-22-1
--username jrandom --password rayjandom --config-dir
/opt/svn/checkouts/trunk/subversion/tests/cmdline/svn-test-work/local_tmp/config
exited with 1
CMD: svnadmin create svn-test-work/repositories/svnsync_tests-22
--bdb-txn-nosync --pre-1.5-compatible <TIME = 0.081290>
CMD: svnadmin load --force-uuid --quiet
svn-test-work/repositories/svnsync_tests-22 <TIME = 0.166144>
CMD: svnadmin create svn-test-work/repositories/svnsync_tests-22-1
--bdb-txn-nosync --pre-1.5-compatible <TIME = 0.185571>
CMD: svnlook uuid svn-test-work/repositories/svnsync_tests-22 <TIME = 0.081297>
CMD: svnadmin load --force-uuid --quiet
svn-test-work/repositories/svnsync_tests-22-1 <TIME = 0.073719>
CMD: svnsync initialize
svn://127.0.0.1:12467/svn-test-work/repositories/svnsync_tests-22-1
svn://127.0.0.1:12467/svn-test-work/repositories/svnsync_tests-22/trunk/A
--username jrandom --password rayjandom --config-dir
/opt/svn/checkouts/trunk/subversion/tests/cmdline/svn-test-work/local_tmp/config
<TIME = 0.197868>
CMD: svnsync synchronize
svn://127.0.0.1:12467/svn-test-work/repositories/svnsync_tests-22-1
--username jrandom --password rayjandom --config-dir
/opt/svn/checkouts/trunk/subversion/tests/cmdline/svn-test-work/local_tmp/config
<TIME = 0.268210>
EXCEPTION: SVNUnexpectedStderr:
['subversion/libsvn_repos/commit.c:392: (apr_err=160016)\n', "svnsync:
Path 'trunk' not present\n"]
Traceback (most recent call last):
  File "/opt/svn/checkouts/trunk/subversion/tests/cmdline/svntest/main.py",
line 1066, in run
    rc = apply(self.pred.run, (), kw)
  File "/opt/svn/checkouts/trunk/subversion/tests/cmdline/svntest/testcase.py",
line 121, in run
    return self.func(sandbox)
  File "/opt/svn/checkouts/trunk/subversion/tests/cmdline/svnsync_tests.py",
line 674, in only_trunk_A_with_changes
    "svnsync-trunk-A-changes.expected.dump")
  File "/opt/svn/checkouts/trunk/subversion/tests/cmdline/svnsync_tests.py",
line 135, in run_test
    run_sync(dest_sbox.repo_url)
  File "/opt/svn/checkouts/trunk/subversion/tests/cmdline/svnsync_tests.py",
line 56, in run_sync
    raise SVNUnexpectedStderr(errput)
SVNUnexpectedStderr: ['subversion/libsvn_repos/commit.c:392:
(apr_err=160016)\n', "svnsync: Path 'trunk' not present\n"]
FAIL: svnsync_tests.py 22: test syncing subdirectories with changes on root

It seems like #20 is a serious compatibility problem: the call to
svn_ra_get_commit_editor3 in svnsync/main.c(replay_rev_started) ought
to trap SVN_ERR_RA_NOT_IMPLEMENTED and retry with the minimal set of
props (writing the rest in replay_rev_finished). (Don't forget that
our claim all along has been that you can even use an svn 1.0
repository for the destination of svnsync!) I'll use the magic words
"1.5 blocker" here.

#22 ought to fail as well... but not for this reason! It ought to
fail because svnsync checks for partial replay support, except it kind
of doesn't. r30440 fixes this (making #22 fail for the correct
reason, in addition to making #21 correctly fail). However, I do note
that the partial replay check in do_initialize is a little sketchy:

  /* If we're doing a partial replay, we have to check first if the server
     supports this. */
  if (strcmp(root_url, baton->from_url) < 0)
    {

Won't this treat trying to sync "http://foo/bar/baz/" when
"http://foo/bar/baz" is the repo root as a partial sync?

--dave

-- 
David Glasser | glasser@davidglasser.net | http://www.davidglasser.net/
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe_at_subversion.tigris.org
For additional commands, e-mail: dev-help_at_subversion.tigris.org
Received on 2008-04-09 02:23:03 CEST

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

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.