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

Re: checksumming crap

From: <kfogel_at_newton.ch.collab.net>
Date: 2003-01-28 01:07:30 CET

Lele Gaifax lele@seldati.it writes:
 Well, it seems that there is one more case. It happened right now to
 me, and since I'm going to sleep, this is just to record the situation
 here: the repos is very simple, and has been created a month ago, and
 if needed I may eventually share it.

Actually, this is probably unrelated, because the checksum error you
got was due to checksum comparison code that has been in Subversion
since revision 1788 (Apr 2002), whose purpose is to verify the
integrity of .svn/text-base/foo.svn-base. It's entirely client-side
stuff.

There was a slight modification made to that code, because we migrated
from base64-encoded checksums to hex-encoded. That might have
something to do with the error. I'm quoting all of your recipe, to
make this easier for anyone to follow:

 via http, with svn_dav 0.16.0. I was editing a new version of a
 LyX document, that I wrongly created with its Save As option.
 
 At this point, I did:
 $ svn st
 ? AttoCostitutivo.lyx~
 M PropostaStatutoSCR.lyx
 ? PropostaStatutoSCR.lyx~
 ? PropostaStatutoSCR.pdf
 ? PropostaStatutoSCR.ps
 ? PropostaStatutoSCR.txt
 ? StatutoSCR.lyx~
 ? StatutoSCR.pdf
 ? StatutoSCR.ps
 ? StatutoSCR_Compatto.lyx
 ? StatutoSCR_Compatto.ps
 
 Uhm, I realized that I should have svn copied it instead, so I moved
 it out of the way:
 
 $ mv StatutoSCR_Compatto.lyx /tmp
 $ svn cp StatutoSCR.lyx StatutoSCR_Compatto.lyx
 $ svn st
 ? AttoCostitutivo.lyx~
 M PropostaStatutoSCR.lyx
 ? PropostaStatutoSCR.lyx~
 ? PropostaStatutoSCR.pdf
 ? PropostaStatutoSCR.ps
 ? PropostaStatutoSCR.txt
 ? StatutoSCR.lyx~
 ? StatutoSCR.pdf
 ? StatutoSCR.ps
 A + StatutoSCR_Compatto.lyx
 ? StatutoSCR_Compatto.ps
 $ svn ci -m Copiato lo Statuto corrente per farne una versione
 compatta StatutoSCR_Compatto.lyx
 Adding StatutoSCR_Compatto.lyx
 
 Committed revision 17.
 $ cp /tmp/StatutoSCR_Compatto.lyx .
 $ svn st
 ? AttoCostitutivo.lyx~
 M PropostaStatutoSCR.lyx
 ? PropostaStatutoSCR.lyx~
 ? PropostaStatutoSCR.pdf
 ? PropostaStatutoSCR.ps
 ? PropostaStatutoSCR.txt
 ? StatutoSCR.lyx~
 ? StatutoSCR.pdf
 ? StatutoSCR.ps
 M StatutoSCR_Compatto.lyx
 ? StatutoSCR_Compatto.ps

Okay. So far, everything looks good, no problems.

 $ svn ci -m Reso su due colonne, eliminata la lista dei fondatori StatutoSCR_Compatto.lyx
 Sending StatutoSCR_Compatto.lyx
 Transmitting file data .svn: Working copy text base is corrupt
 svn: Commit failed (details follow):
 svn: svn_wc_transmit_text_deltas: checksum mismatch for '/home/lele/Scarambol/Documenti/.svn/text-base/StatutoSCR_Compatto.lyx.svn-base':
    recorded checksum: f86e0240984a0240d81d0908a01d0908
    actual checksum (hex): cb6161ca16f9984bd26b25a07c1f6b15
    actual checksum (base64): y2Fhyhb5mEvSayWgfB9rFQ==

Okay, you must have been running a dev build somewhat past 0.16.1, or
you would have seen a different error text here. Furthermore, the
recorded checksum would have been in base64, since we didn't start
recording checksums in hex until after 0.16.1.

 I freezed current repository (and I was surprised to find that a
 tar.gz of it was 30Mb (!), starting from 46Mb, while a tar.bz2 was
 just 14Mb (yes, less than half the gzipped one!)) for future
 reference, and I'm building latest revision... and in a while I will
 repeat the commit with newer client, then I will update the svn_dav
 side of the matter... [... me lurking around waiting ...]
 
 While waiting, I notice that the actual checksum matches that of the
 text base version, while the record checksum comes from the entries
 file for the working copy:
 entry
    committed-rev=17
    name=StatutoSCR_Compatto.lyx
    committed-date=2003-01-26T01:17:28.677353Z
    checksum=f86e0240984a0240d81d0908a01d0908
    last-author=lele
    kind=file
    revision=17/

Gotcha.

 Ok, so now I have the latest client:
 $ svn --version
 svn, version 0.17.1 (dev build)
    compiled Jan 26 2003, 02:55:40
 
 and I repeat the last commit, that as I was supposing it emits the
 very same message:
 $ svn ci -m Reso su due colonne, eliminata la lista dei fondatori StatutoSCR_Compatto.lyx
 Sending StatutoSCR_Compatto.lyx
 Transmitting file data .svn: Working copy text base is corrupt
 svn: Commit failed (details follow):
 svn: svn_wc_transmit_text_deltas: checksum mismatch for '/home/lele/Scarambol/Documenti/.svn/text-base/StatutoSCR_Compatto.lyx.svn-base':
    recorded checksum: f86e0240984a0240d81d0908a01d0908
    actual checksum (hex): cb6161ca16f9984bd26b25a07c1f6b15
    actual checksum (base64): y2Fhyhb5mEvSayWgfB9rFQ==

Okay, at least it's behaving consistently. Somehow the text base has
gotten corrupted, it seems. Are there any properties on this file?
Can you run 'svn pl -v StatutoSCR.lyx StatutoSCR_Compatto.lyx' and
post the output?

If you can narrow this down to a reproduction case involving just this
one file, and we can use that recipe with the exact same file, that
would be *great*.

 Argh, the new client receives a plonk from the old dav, although an
 svn st works:
 $ svn cat http://caia:8888/svn/Scarambol/Documenti/StatutoSCR_Compatto.lyx /tmp/p.lyx
 svn: RA layer request failed
 svn: PROPFIND of /: Could not read status line: Connessione abbattuta dal corrispondente

Oops. Sorry about that. I'm not sure why it happened, but it's more
important to track down your (possible) text-base corruption right
now.

 I'm tired, and will go on tomorrow on the server side. But as a last
 try, I:
 
 $ cd /tmp
 $ mkdir p
 $ cd p
 $ svn co svn://caia/Scarambol .
 ...
 Checked out revision 17.
 $ cd p/Documenti
 $ cp ~/Scarambol/Documenti/Statuto_SCR_Compatto.lyx .
 $ svn st
 M StatutoSCR_Compatto.lyx
 $ svn ci -m Reso su due colonne, eliminata la lista dei fondatori StatutoSCR_Compatto.lyx
 Sending StatutoSCR_Compatto.lyx
 Transmitting file data .
 Committed revision 18.
 
 as expected, since svn doesn't use checksums.

svn doesn't use checksums == has no entries file to compare,
right?

 A subsequent svn cat |
 diff shows no differences ;-)

Ahh, okay, you can 'svn cat', so that probably means you downgraded
your client back to 0.16.1, right?

So what exactly was the diff command above? Without knowing what you
were comparing (working file? text base?), it doesn't mean much.

Thanks for the detailed report. With patience I hope we can work out
a reproduction recipe for this...

-Karl

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sat Oct 14 02:20:44 2006

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