[Bug 4783] New: Cloning non-generaldelta source repositories with large manifests using --config format.generaldelta=1 over HTTP(S) with bundle2 may time out during manifest conversion

mercurial-bugs at selenic.com mercurial-bugs at selenic.com
Wed Aug 19 15:46:15 UTC 2015


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

          Priority: normal
            Bug ID: 4783
                CC: mercurial-devel at selenic.com,
                    pierre-yves.david at ens-lyon.org
          Assignee: bugzilla at selenic.com
           Summary: Cloning non-generaldelta source repositories with
                    large manifests using --config format.generaldelta=1
                    over HTTP(S) with bundle2 may time out during manifest
                    conversion
          Severity: bug
    Classification: Unclassified
                OS: All
          Reporter: gabor.stefanik at nng.com
          Hardware: All
            Status: UNCONFIRMED
           Version: 3.5
         Component: bundle2
           Product: Mercurial

When cloning a large, non-generaldelta source repository heavily affected by
manifest growth over HTTP(S) into a generaldelta target using bundle2, the
manifest conversion takes a very long time (as the manifest needs to be
recompressed as generaldelta).
During this time, HTTP traffic is blocked, and the TCP connection remains idle
for a long time. With many HTTP servers, this can cause timeouts (for example,
SCM Manager over its default Jetty server allows 5 minutes for plain HTTP and
30 seconds for HTTPS by default).

Worse yet, some routers/firewalls will actually inject RST packets into any
plain HTTP connection that's idle for some time.

We need to either clear already-processed manifest data from our receive buffer
during manifest conversion (to allow new data to slowly flow in), or perform
some keep-alive communication during the blocked period, to prevent a timeout.

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


More information about the Mercurial-devel mailing list