Homec4science

Fix loop in svnserve workflow for large binaries

Authored by epriestley <git@epriestley.com> on Dec 19 2013, 02:48.

Description

Fix loop in svnserve workflow for large binaries

Summary: If you push a large binary and the data crosses multiple data frames, we can end up in a loop in the parser.

Test Plan:
After this change, I was able to push a 95MB binary in 7s, which seems reasonable:

>>> orbital ~/repos/INIS $ svn st
A       large2.bin
>>> orbital ~/repos/INIS $ ls -alh
total 390648
drwxr-xr-x   6 epriestley  admin   204B Dec 18 17:14 .
drwxr-xr-x  98 epriestley  admin   3.3K Dec 16 11:19 ..
drwxr-xr-x   7 epriestley  admin   238B Dec 18 17:14 .svn
-rw-r--r--   1 epriestley  admin    80B Dec 18 15:07 README
-rw-r--r--   1 epriestley  admin    95M Dec 18 16:53 large.bin
-rw-r--r--   1 epriestley  admin    95M Dec 18 17:14 large2.bin
>>> orbital ~/repos/INIS $ time svn commit -m 'another large binary'
Adding  (bin)  large2.bin
Transmitting file data .
Committed revision 25.

real	0m7.215s
user	0m5.327s
sys	0m0.407s
>>> orbital ~/repos/INIS $

There may be room to improve this by using PhutilRope.

Reviewers: wrotte, btrahan, wotte

Reviewed By: wotte

CC: aran

Differential Revision: https://secure.phabricator.com/D7798

Details

Committed
epriestley <git@epriestley.com>Dec 19 2013, 02:48
Pushed
aubortJan 31 2017, 17:16
Parents
rPH92bc76aae053: Move mercurial commit metadata parsing into a LowLevel query
Branches
Unknown
Tags
Unknown

Event Timeline

epriestley <git@epriestley.com> committed rPHf37832aed753: Fix loop in svnserve workflow for large binaries (authored by epriestley <git@epriestley.com>).Dec 19 2013, 02:48