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

Re: svn commit: r1687079 - /subversion/trunk/subversion/libsvn_fs_fs/hotcopy.c

From: Branko ─îibej <brane_at_wandisco.com>
Date: Tue, 23 Jun 2015 16:42:22 +0200

On 23.06.2015 16:34, kotkov_at_apache.org wrote:
> Author: kotkov
> Date: Tue Jun 23 14:34:05 2015
> New Revision: 1687079
>
> URL: http://svn.apache.org/r1687079
> Log:
> Only lock the hotcopy destination (by taking db/write-lock, db/pack-lock
> and db/txn-current-lock) when we are running in the incremental mode. We
> don't have to do this in a non-incremental mode, because the destination
> is not openable until we are done with the hotcopy. If it cannot be opened,
> concurrency is not an issue.
>
> * subversion/libsvn_fs_fs/hotcopy.c
> (svn_fs_fs__hotcopy): Lock the hotcopy destination only if we're running
> in incremental mode (and a fallback to the non-incremental mode didn't
> happen).
>
> Modified:
> subversion/trunk/subversion/libsvn_fs_fs/hotcopy.c
>
> Modified: subversion/trunk/subversion/libsvn_fs_fs/hotcopy.c
> URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_fs/hotcopy.c?rev=1687079&r1=1687078&r2=1687079&view=diff
> ==============================================================================
> --- subversion/trunk/subversion/libsvn_fs_fs/hotcopy.c (original)
> +++ subversion/trunk/subversion/libsvn_fs_fs/hotcopy.c Tue Jun 23 14:34:05 2015
> @@ -1086,7 +1086,15 @@ svn_fs_fs__hotcopy(svn_fs_t *src_fs,
> hbb.notify_baton = notify_baton;
> hbb.cancel_func = cancel_func;
> hbb.cancel_baton = cancel_baton;
> - SVN_ERR(svn_fs_fs__with_all_locks(dst_fs, hotcopy_body, &hbb, pool));
> +
> + /* Lock the destination in the incremental mode. For a non-incremental
> + * hotcopy, don't take any locks. In that case the destination cannot be
> + * opened until the hotcopy finishes, and we don't have to worry about
> + * concurrency. */
> + if (incremental)
> + SVN_ERR(svn_fs_fs__with_all_locks(dst_fs, hotcopy_body, &hbb, pool));
> + else
> + SVN_ERR(hotcopy_body(&hbb, pool));

What happens now if you run a non-incremental an an incremental hotcopy
almost in parallel?

Even if that's not an issue, which problem does this change solve?

-- Brane
Received on 2015-06-23 16:42:37 CEST

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