Roderich Schupp <roderich.sch...@gmail.com> writes:

> On Friday, August 9, 2013, Philip Martin wrote:
>
>>
>>  We could cache the results of authz_parse_line.  That would limit the
>> cache size as it would only grow to the number of sections in the file.
>> Also authz_parse_line is often the expensive bit as it involves checking
>> the user against all the rules while handling groups and aliases.
>>
>
> That's exactly how my patch works.

The patch I looked at cached the result of calling svn_config_enumerate2
for a user/path pair.  I'm suggesting something different: caching
user/block inside authz_parse_line.

To see the difference consider an authz file with just one block for /.
Given two paths, /foo/bar and /zig/zag, your patch produces two cache
entries.  Repeat requests for one of the paths pull the result directly
from the cache.  The cache grows without limit as further distinct paths
are requested.

I'm suggesting a cache that works inside authz_parse_line and stores the
result for the authz block, / in this example.  A repeat request for
/foo/bar will still do the hash lookups for /foo/bar, /foo and / but
when it gets to / it will then pull the result from the cache.  The
cache is less efficient, we still the the hash lookups, but the cache
size is limited by the size of the authz file.

-- 
Philip Martin | Subversion Committer
WANdisco | Non-Stop Data

Reply via email to