It seems directory cache checked twice in function
svn_fs_fs__rep_contents_dir_entry:
[[[
svn_error_t *
svn_fs_fs__rep_contents_dir_entry(svn_fs_dirent_t **dirent,
svn_fs_t *fs,
node_revision_t *noderev,
const char *name,
apr_pool_t *result_pool,
apr_pool_t *scratch_pool)
{
svn_boolean_t found = FALSE;
/* find the cache we may use */
pair_cache_key_t pair_key = { 0 };
const void *key;
svn_cache__t *cache = locate_dir_cache(fs, &key, &pair_key, noderev,
scratch_pool);
if (cache)
{
[...]
SVN_ERR(svn_cache__get_partial((void **)dirent,
&found,
cache,
key,
svn_fs_fs__extract_dir_entry,
&baton,
result_pool));
}
/* fetch data from disk if we did not find it in the cache */
if (! found)
{
[...]
/* read the dir from the file system. It will probably be put it
into the cache for faster lookup in future calls. */
SVN_ERR(svn_fs_fs__rep_contents_dir(&entries, fs, noderev,
scratch_pool, scratch_pool));
[...]
}
return SVN_NO_ERROR;
}
]]]
And svn_fs_fs__rep_contents_dir() functions checks the dir cache again.
Is my analysis correct or I missed something important?
--
Ivan Zhakov