You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@subversion.apache.org by "Julian Foad (JIRA)" <ji...@apache.org> on 2017/01/17 16:06:26 UTC

[jira] [Created] (SVN-4669) Merge with much subtree mergeinfo takes hours

Julian Foad created SVN-4669:
--------------------------------

             Summary: Merge with much subtree mergeinfo takes hours
                 Key: SVN-4669
                 URL: https://issues.apache.org/jira/browse/SVN-4669
             Project: Subversion
          Issue Type: Bug
    Affects Versions: 1.9.5
            Reporter: Julian Foad


When there is explicit mergeinfo on thousands of subtrees, a merge at the subtree root can take several hours.

The merge code makes multiple (4 in my test) synchronous svn_ra_get_location_segments() queries to the server for each subtree with mergeinfo. If, for example, 3600 subtrees have mergeinfo and each query takes 0.25 second, that adds up to an hour.

This is related to but different from the memory usage issue SVN-4667. The results of most of these queries are stored temporarily and account for only 10% of the total memory used in my test.

Possible approaches to improving the merge code are: (1) make the queries much more efficient; and (2) analyse how the results are used and eliminate unnecessary queries.

The work-flow approach to improving the experience is: get the number of subtrees with mergeinfo down to none or very few.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Re: [jira] [Created] (SVN-4669) Merge with much subtree mergeinfo takes hours

Posted by Daniel Shahaf <d....@daniel.shahaf.name>.
[CC += dev@; CC -= jira@]

Julian Foad (JIRA) wrote on Tue, Jan 17, 2017 at 16:06:26 +0000:
> The merge code makes multiple (4 in my test) synchronous
> svn_ra_get_location_segments() queries to the server for each subtree
> with mergeinfo. If, for example, 3600 subtrees have mergeinfo and each
> query takes 0.25 second, that adds up to an hour.
> 
> This is related to but different from the memory usage issue SVN-4667.
> The results of most of these queries are stored temporarily and
> account for only 10% of the total memory used in my test.
> 
> Possible approaches to improving the merge code are: (1) make the
> queries much more efficient; and (2) analyse how the results are used
> and eliminate unnecessary queries.

The change could be done in a few places:

1. libsvn_client could call svn_ra_get_location_segments() fewer times

2. The svn_ra_get_location_segments() calls could send fewer requests to
the server (e.g., by memoizing/caching results of earlier calls, to
make the later calls faster)

3. The server could be made to answer mergeinfo queries faster (whether
by methods similar to #2 or for that matter by inventing a new backend)

Cheers,

Daniel

> The work-flow approach to improving the experience is: get the number
> of subtrees with mergeinfo down to none or very few.