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

Re: serf property caching

From: Hyrum K. Wright <hyrum_wright_at_mail.utexas.edu>
Date: 2007-08-14 22:22:40 CEST

Hyrum K. Wright wrote:
> Hyrum K. Wright wrote:
>> Justin Erenkrantz wrote:
>>> On 8/8/07, Hyrum K. Wright <hyrum_wright@mail.utexas.edu> wrote:
>> ...
>>>> explicitly asking for it, but rather the set of checked_in_props. (This
>>>> set does *not* contain DAV:href, and I don't know why the initial call
>>>> to retrieve_props() succeeds.) When I use all_props instead of
>>>> checked_in_props, the DAV:href gets pulled from the cache correctly, and
>>>> we don't hit the abort().
>>> Instead of using all_props, I'd just add a new structure to ra_serf.h:
>>>
>>> static const svn_ra_serf__dav_props_t href_props[] =
>>> {
>>> { "DAV:", "href" },
>>> { NULL }
>>> };
>>>
>>> and use href_props rather than all_props.
>> I made this change, and it works. However, other calls to
>> svn_ra_serf__retrieve_props() are failing with a different message:
>> subversion/libsvn_ra_serf/util.c:329: (apr_err=20014)
>> svn: Error running context: Internal error
>
> On second thought, I don't think that this is the correct solution.
> Even though it solves some problems, it After some further digging, and
> thanks to Lieven's analysis elsethread, this is what I've discovered.
>
> Using check_in_props, retrieve_props() caches the correct value for
> DAV:href, but doesn't cache anything for DAV:checked-in. On the second
> call to retrieve_props(), the value for DAV:href doesn't get copied out
> of the cache, which is the reason for the failure. This much we've
> already established.
>
> However, using href_props, we don't get *anything* cached in the first
> place, because the server doesn't recognize the request. So, it returns
> a 404, and subsequent attempts to use the href value fail, leading to
> the serf internal error. The solution to this problem would require
> modifying the server to recognize the new property request.
>
> So, my hacky, and very inelegant solution is attached. It first tries
> to use checked_in_props, and failing that, uses href_props.
>
> -Hyrum
>
> [[[
> Don't fail on multiple calls to svn_ra_serf__retrieve_props() when
> fetching the DAV:href property. Followup to r26036.
>
> * subversion/libsvn_ra_serf/log.c
> (svn_ra_serf__get_log): If retrieving the DAV:href property fails
> when using the checked_in property set, attempt to do so by using the
> href property set.
> ]]]

I committed this in r26087.

-Hyrum

Received on Tue Aug 14 22:21:11 2007

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