[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-13 20:18:08 CEST

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.
]]]

Received on Mon Aug 13 20:17:05 2007

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