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

Re: FSFS recovery should prune rep-cache even if its use is disabled

From: Julian Foad <julianfoad_at_apache.org>
Date: Wed, 22 Aug 2018 22:20:09 +0100

Julian Foad wrote:
> It looks like r1213716 ("also prune the rep-cache when it's present but
> reportedly not being used") was reverted by r1367674, apparently
> unintentionally.

Well, with some degree of intention, judging by the code comment having been adjusted accordingly, but with no reason given and no mention in https://issues.apache.org/jira/browse/SVN-4214 .

- Julian

> https://svn.apache.org/r1213716 (on 2011-12-13)
> > Follow-up to r1213681: also prune the rep-cache when it's present
> > but reportedly not being used.
> [...]
> /* Prune younger-than-(newfound-youngest) revisions from the rep cache. */
> - if (ffd->rep_sharing_allowed)
> + if (ffd->format >= SVN_FS_FS__MIN_REP_SHARING_FORMAT)
> SVN_ERR(svn_fs_fs__del_rep_reference(fs, max_rev, pool));
>
> https://svn.apache.org/r1367674 (on 2012-07-31)
> > Fix issue 4214, "svnadmin recover" should not create rep-cache.db.
> > * subversion/libsvn_fs_fs/fs_fs.c (recover_body): Don't create rep-cache.
> [...]
> - /* Prune younger-than-(newfound-youngest) revisions from the rep cache. */
> - if (ffd->format >= SVN_FS_FS__MIN_REP_SHARING_FORMAT)
> - SVN_ERR(svn_fs_fs__del_rep_reference(fs, max_rev, pool));
> + /* Prune younger-than-(newfound-youngest) revisions from the rep
> + cache if sharing is enabled taking care not to create the cache
> + if it does not exist. */
> + if (ffd->rep_sharing_allowed)
> + {
> + svn_boolean_t rep_cache_exists;
> +
> + SVN_ERR(svn_fs_fs__exists_rep_cache(&rep_cache_exists, fs, pool));
> + if (rep_cache_exists)
> + SVN_ERR(svn_fs_fs__del_rep_reference(fs, max_rev, pool));
> + }
>
> The function concerned, recover_body(), has since been moved to
> subversion/libsvn_fs_fs/recovery.c.
>
> If "recovery" while re-sharing is disabled (by the fsfs.conf setting)
> leaves future revision entries in the rep-cache, then later re-enabling
> the rep-cache could cause serious corruption if those entries are then
> used.
>
> Therefore I think we should repeat r1213716 as a bug fix.
>
> WDYT?
Received on 2018-08-22 23:20:20 CEST

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

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.