Problemy z subversion 9.10.2007
Główne repozytorium svn w naszej firmie odmówiło chęci do współpracy. Problem był cokolwiek dziwny: użytkownicy mogli commitować swoje zmiany, a przy próbie update otrzymywali błąd:
REPORT request failed on '/svn/produkt/!svn/vcc/default'
REPORT of ‘/svn/produkt/!svn/vcc/default’: 200 OK (http://svn.server)
W logach serwera widniało za to coś takiego:
Provider encountered an error while streaming a REPORT response. [500, #0]
A failure occurred while driving the update report editor [500, #185003]
Invalid diff stream: [new] insn 7 overflows the new data section [500, #185003]
Zablokowałem użytkownikom możliwość commitu i zabrałem się za poszukiwanie rozwiązania tego problemu. Po chwili poszukiwań znalazłem coś co pasowało do mojego problemu. Niestety załączony skrypt nie naprawiał błędów w moim przypadku :(
Pomyślałem sobie, że zrobię dumpa i załaduję repozytorium ponownie. Niestety po kilku godzinach (repozytorium jest naprawdę duże) okazało się, że dump również się wykrzacza na tej samej wersji.
Kolejny pomysł, tym razem skuteczny: Wykonałem dumpa do wersji o numer mniejszy od tej uszkodzonej:
$ svnadmin dump -r 0:37259 /srv/svn/produkt > produkt.dmp
następnie zrobiłem dumpa różnicowego dla wersji o numer większej od uszkodzonej:
$ svnadmin dump --incremental -r 37261:37308 /srv/svn/produkt > produkt_3.dmp
Później spreparowałem plik dumpa dla uszkodzonej wersji 37260, tak aby po załadowaniu wersja była pusta i nie zmieniała żadnych plików:
$ more produkt_2.dmp
SVN-fs-dump-format-version: 2
UUID: 201c434e-eedd-0310-be3f-e8dcc460047f
Revision-number: 37260
Prop-content-length: 119
Content-length: 119
K 7
svn:log
V 45
To jest pusta wersja tylko dla uzupeĹnienia.
K 8
svn:date
V 27
2007-10-04T07:14:53.132801Z
PROPS-END
Teraz wystarczyło załadować dumpy:
$ svnadmin create produkt_new
$ svnadmin load produkt_new < produkt.dmp
$ svnadmin load produkt_new < produkt_2.dmp
$ svnadmin load produkt_new < produkt_3.dmp
Powstało repozytorium różniące się od poprzedniego tylko brakiem zmian w wersji 37260. Na szczęście w wersji 37260 zmieniono tylko dwa pliki i łatwo udało się je odzyskać z lokalnego dysku użytkownika.
Niestety rozmiary repozytorium spowodowały straszne opóźnienie cały dump zajmuje 58GB i robił się kilka godzin, podobnie załadowanie dumpa do nowego repozytorium trwało bardzo długo.


Gratulacje!!!
btw. ile godzin?
gdzies okolo 4tego pewnie bede system tam upgradeowal, tak wiec ciekawi mnie ile godzin rezerwowac…
4tego stycznia btw. ;)