On 15.03.2018 18:50, Philip Martin wrote: > Philip Martin <phi...@codematters.co.uk> writes: > >> Evgeny Kotkov <evgeny.kot...@visualsvn.com> writes: >> >>> Philip Martin <phi...@codematters.co.uk> writes: >>> >>>> That works as expected, but vary the cache size of the load process and >>>> it fails. The load succeeds with -M64 and smaller but fails with -M65 >>>> and larger: >>> [...] >>> >>> Maybe this behavior could be related to the cache size threshold in svnadmin >>> that enables the block read feature in fsfs (currently set to 64 MB, as per >>> svnadmin.c:BLOCK_READ_CACHE_THRESHOLD). >> Sounds plausible. > It causes different code to run, in particular the window cache is > enabled. I'm not familiar with this code but the problem seems to be in > cached_data.c:parse_raw_window() where the svndiff version is hard-coded > to 1 in the call to svn_txdelta_read_svndiff_window. Changing that to 2 > allows the regression test to pass, the question is where should the > correct value be obtained?
The svndiff version is embedded in the first 4 bytes of the window data and should be parsed from there. -- Brane