cmpil...@apache.org wrote on Thu, Dec 16, 2010 at 23:10:10 -0000:
> Author: cmpilato
> Date: Thu Dec 16 23:10:10 2010
> New Revision: 1050216
> 
> URL: http://svn.apache.org/viewvc?rev=1050216&view=rev
> Log:
> Finish issue #3766 ("Unify svnsync and svnrdump repos-locking logic").
> 
> * subversion/include/private/svn_ra_private.h
>   (svn_ra__lock_retry_func_t): New callback type.
>   (svn_ra__get_operational_lock, svn_ra__release_operational_lock):
>     New semi-private functions.
> 
> * subversion/libsvn_ra/util.c
>   (is_atomicity_error): Moved here from svnsync/main.c.
>   (svn_ra__release_operational_lock): New, abstracted from 
>     svnsync/main.c:maybe_unlock().
>   (svn_ra__get_operational_lock): New, abstracted from
>     svnsync/main.c:get_lock().
> 

Not exactly the same as svnsync's versions, since you added the
'stolen_lock_p' parameter.  (and the log message doesn't mention that)

> +svn_error_t *
> +svn_ra__release_operational_lock(svn_ra_session_t *session,
> +                                 const char *lock_revprop_name,
> +                                 const svn_string_t *mylocktoken,
> +                                 apr_pool_t *scratch_pool)
> +{
> +  svn_string_t *reposlocktoken;
> +  svn_boolean_t be_atomic;
> +
> +  SVN_ERR(svn_ra_has_capability(session, &be_atomic,
> +                                SVN_RA_CAPABILITY_ATOMIC_REVPROPS,
> +                                scratch_pool));
> +  SVN_ERR(svn_ra_rev_prop(session, 0, lock_revprop_name,
> +                          &reposlocktoken, scratch_pool));
> +  if (reposlocktoken && svn_string_compare(reposlocktoken, mylocktoken))
> +    {
> +      svn_error_t *err;
> +      
> +      err = svn_ra_change_rev_prop2(session, 0, lock_revprop_name, 
> +                                    be_atomic ? &mylocktoken : NULL, NULL,
> +                                    scratch_pool);
> +      if (is_atomicity_error(err))
> +        return svn_error_quick_wrap(err,
> +                                    _("Lock was stolen; unable to remove 
> it"));

s/was stolen/was stolen by '%s'/ ?

> +    }
> +
> +  return SVN_NO_ERROR;
> +}
> +
> +svn_error_t *
> +svn_ra__get_operational_lock(const svn_string_t **lock_string_p,
> +                             const svn_string_t **stolen_lock_p,
> +                             svn_ra_session_t *session,
> +                             const char *lock_revprop_name,
> +                             svn_boolean_t steal_lock,
> +                             int num_retries,
> +                             svn_ra__lock_retry_func_t retry_func,
> +                             void *retry_baton,
> +                             svn_cancel_func_t cancel_func,
> +                             void *cancel_baton,
> +                             apr_pool_t *pool)
> +{
...
> +}

+1

Reply via email to