You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Daniel Shahaf <da...@apache.org> on 2013/06/10 13:23:57 UTC

Re: svn commit: r1418963 - /subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c

On Sun, Dec 09, 2012 at 02:05:48PM -0000, stefan2@apache.org wrote:
> Author: stefan2
> Date: Sun Dec  9 14:05:47 2012
> New Revision: 1418963
> 
> URL: http://svn.apache.org/viewvc?rev=1418963&view=rev
> Log:
> Representation sharing interacts badly with our skip-delta algorithm
> as the former potentially extends the delta chain without making that
> immediately visible in the noderev tree used by choose_delta_base.
> 
> This patch will (usually) detect thoses cases and limit the delta chain. 
> When traversing the noderev history, we assume that reps stored in the
> same revision as the noderev are not shared (which they might still be)
> but all others potentially are.  In the latter case, we will simply
> follow the result representation's delta chain and check whether it
> is longer than a reasonable limit.  If it is, start a new chain.
> 
> * subversion/libsvn_fs_fs/fs_fs.c
>   (choose_delta_base): detect most cases of shared reps and limit the
>    length of the delta chain in that case.

> @@ -7149,12 +7150,83 @@ choose_delta_base(representation_t **rep
> +  /* verify that the reps don't form a degenerated '*/
>    return SVN_NO_ERROR;

Scalpel.  What is that comment referring to?

Re: svn commit: r1418963 - /subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c

Posted by Stefan Fuhrmann <st...@wandisco.com>.
On Mon, Jun 10, 2013 at 1:23 PM, Daniel Shahaf <da...@apache.org> wrote:

> On Sun, Dec 09, 2012 at 02:05:48PM -0000, stefan2@apache.org wrote:
> > Author: stefan2
> > Date: Sun Dec  9 14:05:47 2012
> > New Revision: 1418963
> >
> > URL: http://svn.apache.org/viewvc?rev=1418963&view=rev
> > Log:
> > Representation sharing interacts badly with our skip-delta algorithm
> > as the former potentially extends the delta chain without making that
> > immediately visible in the noderev tree used by choose_delta_base.
> >
> > This patch will (usually) detect thoses cases and limit the delta chain.
> > When traversing the noderev history, we assume that reps stored in the
> > same revision as the noderev are not shared (which they might still be)
> > but all others potentially are.  In the latter case, we will simply
> > follow the result representation's delta chain and check whether it
> > is longer than a reasonable limit.  If it is, start a new chain.
> >
> > * subversion/libsvn_fs_fs/fs_fs.c
> >   (choose_delta_base): detect most cases of shared reps and limit the
> >    length of the delta chain in that case.
>
> > @@ -7149,12 +7150,83 @@ choose_delta_base(representation_t **rep
> > +  /* verify that the reps don't form a degenerated '*/
> >    return SVN_NO_ERROR;
>
> Scalpel.  What is that comment referring to?
>

Good catch. This is a fragment of a comment that
referred to degenerated (O(N) instead of O(log N))
delta chains. The if() section above that spot takes
care of this case.

Removed in r1491425.

-- Stefan^2.

Re: svn commit: r1418963 - /subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c

Posted by Stefan Fuhrmann <st...@wandisco.com>.
On Mon, Jun 10, 2013 at 1:23 PM, Daniel Shahaf <da...@apache.org> wrote:

> On Sun, Dec 09, 2012 at 02:05:48PM -0000, stefan2@apache.org wrote:
> > Author: stefan2
> > Date: Sun Dec  9 14:05:47 2012
> > New Revision: 1418963
> >
> > URL: http://svn.apache.org/viewvc?rev=1418963&view=rev
> > Log:
> > Representation sharing interacts badly with our skip-delta algorithm
> > as the former potentially extends the delta chain without making that
> > immediately visible in the noderev tree used by choose_delta_base.
> >
> > This patch will (usually) detect thoses cases and limit the delta chain.
> > When traversing the noderev history, we assume that reps stored in the
> > same revision as the noderev are not shared (which they might still be)
> > but all others potentially are.  In the latter case, we will simply
> > follow the result representation's delta chain and check whether it
> > is longer than a reasonable limit.  If it is, start a new chain.
> >
> > * subversion/libsvn_fs_fs/fs_fs.c
> >   (choose_delta_base): detect most cases of shared reps and limit the
> >    length of the delta chain in that case.
>
> > @@ -7149,12 +7150,83 @@ choose_delta_base(representation_t **rep
> > +  /* verify that the reps don't form a degenerated '*/
> >    return SVN_NO_ERROR;
>
> Scalpel.  What is that comment referring to?
>

Good catch. This is a fragment of a comment that
referred to degenerated (O(N) instead of O(log N))
delta chains. The if() section above that spot takes
care of this case.

Removed in r1491425.

-- Stefan^2.