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
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.
I will try to think about a better solution.