[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Long delta chains edge case revived

From: Stefan Fuhrmann <stefan.fuhrmann_at_wandisco.com>
Date: Tue, 11 Jun 2013 16:56:06 +0200

On Mon, Jun 10, 2013 at 2:00 PM, Daniel Shahaf <d.s_at_daniel.shahaf.name>wrote:

> From fs_fs.c:choose_delta_base():
>
> svn_boolean_t maybe_shared_rep = FALSE;
> if (!props && base->data_rep && svn_fs_fs__id_rev(base->id) >
> base->data_rep->revision)
> maybe_shared_rep = TRUE;
>
> The third conjunct was intended to answer the question "Is
> base->data_rep a shared rep", but that answer is no longer complete: the
> condition will false-negative in the presence of intra-revision shared
> reps (i.e., two node-revs created in the same revision that share a rep
> between them).
>

Actually, the comment above that code already states that
there may be false negatives. I can't think of a way to prevent
that other than always following the delta chain.

However, the degenerate case has always been a possibility
since the introduction of rep sharing. 1.8 simply makes an
attempt at detecting it in most cases. I find it hard to come
up with a plausible usage scenario that would result in an
unbound dependency chain which does not get detected
eventually by the above code.

-- Stefan^2.
Received on 2013-06-11 16:56:41 CEST

This is an archived mail posted to the Subversion Dev mailing list.