Hello,

After some time it turned out, that there are few revisions in our
repository, which are broken, probably on the filesystem level.
Unfortunetely as time went by, backups we made contain only those
broken revisions so we have no chance in getting stuph working just by
simple recovery. Only hope is to fix the repository in some way. At
this point in time it is impossible to do a full checkout.
% svnadmin verify /storage/svn
[...]
* Verified revision 1025.
* Verified revision 1026.
svnadmin: Decompression of svndiff data failed

This is the most common error, which we get while trying to checkout the stuph.

fsfsverify.py tool points out, that revision 1027 is broken in several
places. Unfortunetely after few fixes the tool crashes on the 1027
rev.

% fsfsverify.py /storage/svn/db/revs/1/1027

NodeRev Id: 2z-1027.0-68.r1027/2303848
 type: file
 text: DELTA 1027 2088431 1684 5317 447a4956b16f81132e54669d33c188f2
 cpath: /_Projekty/Rekl/dd.aspx.resx
 copyroot: 68 /_Projekty
Traceback (most recent call last):
  File "/usr/local/bin/fsfsverify.py", line 1134, in <module>
    options.dumpWindows)
  File "/usr/local/bin/fsfsverify.py", line 571, in verify
    svndiff = Svndiff(f, self.length)
  File "/usr/local/bin/fsfsverify.py", line 461, in __init__
    (self.startingOffset)
__main__.InvalidSvndiffHeader: Invalid svndiff header at offset 2088437

We tried hard to get this thing working, but in the end I have no idea
why it is failing and how to fix it.

Next thing we tried to do, is to create dumps without broken
revisions. During the process it turned out, that out of over 8500
revs 5 is broken. Using svnadmin dump --incremental we managed to take
all the working revs out, but we have no idea how to put them
together.

Creating new repo from scratch and importing dumps doesn't work.
Leading dump is loaded without any problem (0:1026), but the 2nd dump
(1028:6675) fails at 2761 with following Error:

<<< Started new transaction, based on original revision 2763
svnadmin: File not found: revision 2761, path '/_Projekty/Rekl
     * adding path : _Projekty/www/Rekl ...#

No revision over 2761 is inserted.

After a bit more gooling we found out a tool called svndumptool
(0.6.1). Merge was looking very promissing at the start, but it turned
out it fails now and then on certain revisions. Revisions it fails on
are seem to be fine in the original repo, but for some reason it just
wont work. At the start we tried to skip the revisions which aren't
seem to be loaded correctly. After some time it turned out, that
around rev 7000 every 1  in 5 revisions was broken. It makes no sence
to make a recovery, while we have to skip 20% or more of the data.

Revision: 7192     from r7192     all-dump-1:7202.txt
Revision: 7193     from r7193     all-dump-1:7202.txt
Revision: 7194     from r7194     all-dump-1:7202.txt
Revision: 7195     from r7204     7204:7269.txt
Revision: 7196     from r7205     7204:7269.txt
Revision: 7197     from r7206     7204:7269.txt
Revision: 7198     from r7207     7204:7269.txt
Revision: 7199     from r7208     7204:7269.txt
Revision: 7200     from r7209     7204:7269.txt
Revision: 7201     from r7210     7204:7269.txt
Traceback (most recent call last):
  File "/tmp/svndumptool-0.6.1/svndumptool.py", line 119, in <module>
    sys.exit( func( appname, args ) )
  File "/tmp/svndumptool-0.6.1/svndump/merge.py", line 564, in
svndump_merge_cmdline
    merge.merge()
  File "/tmp/svndumptool-0.6.1/svndump/merge.py", line 257, in merge
    self.__copy_revision( oldestIndex )
  File "/tmp/svndumptool-0.6.1/svndump/merge.py", line 291, in __copy_revision
    newNode = self.__change_node( dumpIndex, node )
  File "/tmp/svndumptool-0.6.1/svndump/merge.py", line 330, in __change_node
    newFromRev = self.__in_rev_nr_maps[dumpIndex][fromRev]
KeyError: 7188

I have no idea why it has to do something wih rev 7188, which was
imported earlier. If I now skip rev 7203 it will move on, but it will
fail again somewhere around 7210.

Does any one have any tips on how to recover this repository?

Thanks in advance!

-- 
Mariusz Drozdziel

Reply via email to