FYI - forwarding from users@
Stefan Fuhrmann wrote on Sun, 30 Jul 2017 19:14 +0200: > Hi David, > > thanks for the report; the issue turned out to be quite serious. > The underlying bug has been present since at least as early as > 1.8.0 but only surfaced with the added SHA1-collision detection > code in 1.8.18. > > Under certain circumstances, yet-to-be-committed data would be > cached under the wrong key. The impact ranges from bogus errors > as you experienced them to silent repository corruption that only > a 'svnadmin verify' run would detect. So far, no such corruption > has been demonstrated but it remains a plausible scenario. > > Luckily, the problem seems to be mostly restricted to 'svnadmin > load', with the "rep sharing" enable for the respective repo. > 'svnadmin load -M 0' will also not have that issue. > > I fixed the code and the fix should be shipped with the upcoming > 1.8.19 release. > > -- Stefan^2. > > On 29.07.2017 14:37, Bert Huijben wrote: > > This specific error message was added in the last release, so yes it is new > > in > > the last versions. The last 1.9.x version also added it and I’m surprised > > that > > you see the error on 1.8 and not 1.9 (or vice versa). > > > > It tries to tell you that you have two files with an identical SHA-1 hash, > > but > > different contents. A case that we accidentally didn’t catch before, that > > might > > have caused some data loss under extreme circumstances. > > > > This scenario is pretty unlikely to trigger, unless you specifically try to > > do > > that. I’ll try to verify what exactly is in your dump file to see if you > > really > > hit this scenario, or that we have a bug in our code that tries to catch > > this > > scenario. Assuming you properly verified with 1.9.6 (and not 1.9.5 or > > earlier) I > > assume that this is a bug in 1.8.18, as other scenarios are really > > extremely > > unlikely. > > > > I’m not sure I’ll have time to look into this before Monday though, so > > perhaps > > one of the other developers beats me to it. > > > > Bert > > > > *From:*David Engel [mailto:den...@magnitude.com] > > *Sent:* zaterdag 29 juli 2017 00:01 > > *To:* us...@subversion.apache.org > > *Subject:* Checksum mismatch bug in 1.8.18 > > > > Hi, > > > > I think I’m running into a bug in svnadmin in the latest 1.8 release > > (1.8.18). > > It is not present in 1.8.17 nor 1.9.5 nor 1.9.6. I’m guessing it’s related > > to > > the recent changes around strict repsharing. I’m not subscribed to the > > mailing > > list, so please CC me on any responses. > > > > Here are the relevant details: > > > > OS: Windows 10 and Windows 2012 R2 > > > > Subversion release: 1.8.18 > > > > Both SlikSVN release: > > > > svnadmin, version 1.8.18-SlikSvn-1.8.18-X64 (SlikSvn/1.8.18) X64 > > > > compiled Jul 17 2017, 13:03:37 on x86_64-microsoft-windows6.2.9200 > > > > And Collabnet release: > > > > svnadmin, version 1.8.18 (r1800620) > > > > compiled Jul 7 2017, 05:51:59 on x86_64-microsoft-windows6.2.9200 > > > > Performing an svnadmin load results in the following error: > > > > ... > > > > <<< Started new transaction, based on original revision 650 > > > > * editing path : > > Dev/Common/Utils/External/StampVerData/MetaBuilderVersion.inf ... done. > > > > * editing path : > > Dev/Common/Utils/External/StampVerData/MetaBuilderVersionDBG.inf ... done. > > > > * editing path : > > Dev/Common/Utils/External/StampVerData/OracleVersion.inf > > ...svnadmin: E160000: SHA1 of reps '-1 0 45 132 > > a6ea37d29094deece56250ebe167ce46 > > 6a2d6bc4c7e58c0d2627a1b0dd5b23e542aec4d1 650-i2/_8' and '-1 136 45 132 > > a6ea37d29094deece56250ebe167ce46 6a2d6bc4c7e58c0d2627a1b0dd5b23e542aec4d1 > > 650-i2/_8' matches (6a2d6bc4c7e58c0d2627a1b0dd5b23e542aec4d1) but contents > > differ > > > > svnadmin: E160004: Filesystem is corrupt > > > > svnadmin: E200014: Checksum mismatch while reading representation: > > > > expected: a6ea37d29094deece56250ebe167ce46 > > > > actual: 5f696f5d0755f3bcb5e927bdfba4bfa8 > > > > In order to reproduce the error, you can use the attached VersionStamps3 > > repository dump file. It was taken with the same version of svnadmin from > > a > > multi-GB repository that’s been around for over a decade and pruned > > (svndumpfilter) to a small set of files and revisions in one folder while > > still > > encountering the error. I first encountered the error another place very > > quickly in an incremental load on top of a repo that was loaded from > > 1.8.14, but > > that one was on a revision north of 120,000+. This is way easier to > > reproduce. > > I tried filtering the dump further and dropping empty revisions, but the > > error > > did not occur in those cases. The error also did not occur using 1.8.17, > > 1.9.5., and 1.9.6. It also did not occur in 1.8.18 if I set > > enable-rep-sharing > > = false before performing the load. > > > > Repro.bat script: > > > > @echo off > > > > :defineCommands > > > > rem You might need to adjust these lines to point to your > > > > rem compiled-from-source Subversion binaries, if using those: > > > > for %%i in (svn.exe) do set SVN="%%~$PATH:i" > > > > for %%i in (svnadmin.exe) do set SVNADMIN="%%~$PATH:i" > > > > :defineUrls > > > > rem Only supported access method: file:// <file:///>. If http:// or svn://, > > then > > > > rem you'll have to configure it yourself first. > > > > set URL=file:///%CD%/repos > > > > set URL=%URL:\=/% > > > > echo Base url for repo: %URL% > > > > :cleanAllDirsAndCreateRepo > > > > if exist repos rmdir /s /q repos > > > > if exist import-me rmdir /s /q import-me > > > > if exist wc rmdir /s /q wc > > > > %SVNADMIN% create repos > > > > pause > > > > :prepareGreekTree > > > > echo Making a Tree for import... > > > > mkdir import-me\Dev\Common\Utils\External > > > > echo Importing it... > > > > cd import-me > > > > %SVN% import -q -m "Initial import." %URL% > > > > cd .. > > > > rem This is where your reproduction recipe goes. > > > > svnadmin --version > > > > svnadmin load repos < VersionStamps3 > > > > goto :eof > > > > Thanks, > > > > David > >