[Bug 3745] New: checkrequireslfiles causes very slow push with large repo store

mercurial-bugs at selenic.com mercurial-bugs at selenic.com
Thu Dec 27 08:23:45 CST 2012


http://bz.selenic.com/show_bug.cgi?id=3745

          Priority: normal
            Bug ID: 3745
                CC: mercurial-devel at selenic.com, natosha at gmail.com
          Assignee: bugzilla at selenic.com
           Summary: checkrequireslfiles causes very slow push with large
                    repo store
          Severity: bug
    Classification: Unclassified
                OS: Windows
          Reporter: oliviertrempe at hotmail.com
          Hardware: PC
            Status: UNCONFIRMED
           Version: 2.4.1
         Component: largefiles
           Product: Mercurial

Overview:

Our repo store contains 22659 entries. Pushes to remo repo are very slow 
and I narrowed it down to this method:

C:\Python27\Lib\site-packages\hgext\largefiles\reposetup.py:reposetup.checkrequireslfiles()

If your repo doesn't require largefiles, this method builds a list by 
walking the repo store:

util.any(lfutil.shortname+'/' in f[0] for f in repo.store.datafiles())

and it takes ~35 seconds for 22659 entries.

Largefiles extension is enabled even if this particular repo doesn't require it
 because we have many repos managed with RhodeCode. Some of them require
largefiles so it has to be enabled globally in RhodeCode.

Steps to reproduce:
1. With largefiles extension enabled, push a changeset to a repo having a large
store, but not requiring largefiles extension.

2. Add the 'largefiles' requirement to the repo (in .hg/requires) and push
again to see the push time considerably reduced. (Because the code which slowly
builds the list is bypassed in the if condition)

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the Mercurial-devel mailing list