On Wed, Sep 4, 2013 at 3:42 PM, Emmanuel Lécharny <elecharny@gmail.com> wrote:
Hi guys,

I just came back from a short week of excellent vacations, and I spent
the last two days looking at the search operation.

Just before I left, I thought that the entry was cloned for no reason.
The fact is that we do modify the entry before returning it, so we must
modify a copy of the cached entry, otherwise we can have some really
nasty bugs in other parts (the entry is cached, so we can't simply
modify it).

OTOH, I discovered that we do a costly check in the
DefaultSearchEngine.computeResults() method : we check if the search
BaseDN is an alias by looking into the Alias index. Not doing this check
imrpove the performance for around 15%. I'm pretty sure we can avoid
looking into the index, as soon as we already have a cache of the
existing aliases. The pb is that it's just a cache, and if the alias is
not in the cache, we have to fetch the alias index. This become a pb
when we have a lot of aliases, something unlikely to happen.

how about setting a limit on the number of aliases that will be held in the cache
and we store all the aliases in this cache, if the alias cache has less than this limit we
don't need to look into the index (i.e we will always have all the aliases in memory)
(here the assumption is that most server installations will have less aliases than
the given threshold)
I will try to think about a better solution.

Emmanuel Lécharny

Kiran Ayyagari