Julian Foad wrote on Thu, Aug 23, 2018 at 10:21:17 +0100:
> +++ subversion/libsvn_fs_fs/recovery.c        (working copy)
> @@ -468,15 +468,15 @@ recover_body(void *baton, apr_pool_t *po
>    /* 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)
> +     cache, no matter whether sharing is currently enabled, taking care
> +     not to create the cache if it does not exist. */
> +  if (ffd->format >= SVN_FS_FS__MIN_REP_SHARING_FORMAT)

Looks good to me: that should fix both #4077 and #4214.

I would only suggest expanding the comment to explain why it's important that
the condition is what it is; for example:

  /* Prune younger-than-(newfound-youngest) revisions from the rep
     cache, taking care not to create the cache if it does not exist.

     We do this whenever rep-cache.db exists, whether it's currently enabled
     or not, to prevent a data loss that could result from having revisions
     created after this 'recover' operation referring to rep-cache.db rows
     that were created before the recover and that point to revisions younger-
     than-(newfound-youngest).
   */

(Possibly with some rewording to make it easier to read in three years when
we've all forgotten the context.)

Cheers,

Daniel

>      {
>        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));

Reply via email to