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

Always reproducible base checksum mismatch error

From: Philipp Wollermann <philipp_at_igowo.de>
Date: 2007-11-22 08:57:40 CET

Hi,

I'm using Subversion 1.4.5 + Neon 0.25.5 + Apache 2.2.5, I compiled it all myself without any fancy optimization options. The base system is a minimal Debian Etch installation. I'm experiencing "Base checksum mismatch" errors on commit, which makes our SVN-Repository nearly unusable. I can easily reproduce it in the following way:

Create a new repository:

As user www-data, in the directory where the repositories are kept
$ rm -rf test && svnadmin create test

This repository is now accessible under the URL http://svn.phorge.de/test/ (using mod_dav_svn).

Now "stress testing" the repository:

As a normal user, in my home directory:
$ cat exercise
#!/bin/bash

count=0

rm -rf test &&
svn co http://svn.phorge.de/test/ test &&
cd test &&

makepasswd --chars=64 > test &&
svn add test &&

while [ $count -le 10 ]; do
        echo $count &&
        makepasswd --randomseed=$count --chars=64 >> test &&
        svn ci -m" " || exit
        count=$[$count+1]
done

$ ./exercise
Checked out revision 0.
A test
0
Adding test
Transmitting file data .
Committed revision 1.
1
Sending test
Transmitting file data .
Committed revision 2.
2
Sending test
Transmitting file data .
Committed revision 3.
3
Sending test
Transmitting file data .svn: Commit failed (details follow):
svn: Base checksum mismatch on '/test':
   expected: 3dc2c676f074c169e81d6e215f8abf8b
     actual: b99be5941f3a415575d0c2df64f1cf8c

I found a mail from Philip Martin in the mailing lists, responding to a similar problem. He asked several questions and I thought it may be of help if I answer them in advance:

I'm now in the corrupt working copy, just after the error above occurred:

> Is the date on .svn/text-base/Class.pod.svn-base familiar in any
> way?

$ ls -l --time-style=full-iso .svn/text-base/
total 4
-r--r--r-- 1 philwo philwo 260 2007-11-22 08:25:46.000000000 +0100 test.svn-base

This is the date/time of the last commit.

> Run md5sum on .svn/text-base/Class.pod.svn-base and compare it
> to the checksum for Class.pod stored in .svn/entries, they should
> be the same.

$ md5sum .svn/text-base/test.svn-base
3dc2c676f074c169e81d6e215f8abf8b .svn/text-base/test.svn-base

$ less .svn/entries:
2007-11-22T07:25:46.000000Z
3dc2c676f074c169e81d6e215f8abf8b
2007-11-22T07:25:46.148190Z

> Run svn info on Class.pod and determine the text last updated
> time, is it familiar in any way? Is it the same as the date on
> the text-base? (Note, a difference is not an error, but it might
> help determine what went wrong.)

$ svn info test
Path: test
Name: test
URL: http://svn.phorge.de/test/test
Repository Root: http://svn.phorge.de/test
Repository UUID: 1f2a5906-98cc-11dc-a6a6-931b5ddfb3ff
Revision: 3
Node Kind: file
Schedule: normal
Last Changed Rev: 3
Last Changed Date: 2007-11-22 08:25:46 +0100 (Thu, 22 Nov 2007)
Text Last Updated: 2007-11-22 08:25:46 +0100 (Thu, 22 Nov 2007)
Checksum: 3dc2c676f074c169e81d6e215f8abf8b

> Info also gives you the last changed revision so checkout that
> revision of the directory containing Class.pod.

$ svn co -r 3 http://svn.phorge.de/test/ test2
A test2/test
Checked out revision 3.

> Compare the text-base in the corrupt working copy with that in the
> new one. Is the difference familiar? Are the two text-base files
> the same size?

$ diff -u test2/.svn/text-base/test.svn-base test/.svn/text-base/test.svn-base
--- test2/.svn/text-base/test.svn-base 2007-11-22 08:26:58.000000000 +0100
+++ test/.svn/text-base/test.svn-base 2007-11-22 08:25:46.000000000 +0100
@@ -1,3 +1,4 @@
 pHj4MQU4i5qsVF93AHu2KosRPNGK1RqMRwCyC0CwIxsTpUC4nVmBaW67LqRCgVKh
 tXNgVqPpSQKtVfIdYnaEyTpLsB7zAHLgc1Gcd0a07jUIjdNBSLpuyY8WC7vstTA6
 c0UiAK9vWVjHD7IjMyIoMAj6U3mX4sN7AG3GvSpafTbqswzT8rI2sWidQ6QhpjfL
+JjyiMrno9Pxg2fgT14LxTdvSt5BfhdBH3IzMVMITHLnAob16vm3FcPbf6S3nqADQ

> Run svn log on Class.pod and note the revisions at which it has
> changed. Update Class.pod in the new working copy to each
> revision in turn and look at the checksum in .svn/entries. Do any
> of them match the checksum in the corrupt working copy?

$ svn log test
------------------------------------------------------------------------
r2 | (no author) | 2007-11-22 08:25:45 +0100 (Thu, 22 Nov 2007) | 1 line

------------------------------------------------------------------------
r1 | (no author) | 2007-11-22 08:25:44 +0100 (Thu, 22 Nov 2007) | 1 line

Do you have any idea what may cause these checksum errors and how to stop them?

Best regards,

Philipp

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Thu Nov 22 08:57:54 2007

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