Blog PeTe

Problemy z subversion 9.10.2007

Kategoria wpisu: Komputery — PeTe @ 9:05

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.

 

3 Responses to “Problemy z subversion”

  1. bmalkow Says:

    Gratulacje!!!

  2. jellonek Says:

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

  3. jellonek Says:

    4tego stycznia btw. ;)

Leave a Reply