Hi guys,
Aliases handling is one of the biggest challenge in LDAP, as it imposes
a lot of constraints. First of all, keep in mind that Alias support is
not mandatory.
Some of the problem we have when dealing with Alaises are :
- cycle detection : we should not allow the creation of an alias that
causes a cycle
- duplicated entry removals in searches : we shuld not return an entry
that has already been returned
- unlinked aliases : when the aliased entry is removed, we should should
handle it
- subtree searches with aliases : we may have a very high nunber of
entries to return
- move operation : how do we handle the aliases modification when the
aliased entries is move ?
- cross-partitions aliases : how do we handle them ?
- replication of aliases
Right now, my concern is about duplicated entries removal and cycle
detection, during a search processing :
1) Cycle detection :
Should we assume that the cycles are detected during the alias creation
? Or should we detect it while processing the search ? (I'm nclined to
think that cycle are forbidden during their creation)
2) duplicated entries removal
I don't see any other way but storing a hash of all the UUID we already
have transmitted, and to check when we have a new candidate if this
candidate has already been processed. This is potentially *extremely*
costly, if we have millions of entries (even if there is a size limit,
which protects us from a OOM, because this size limit is not enforced
for the manager user).
Is there a better way ?
3) Current Aliases index
I didn't have time to check what those index are used for, so if someone
can give me a quick heads up, that would save me a few days of code
diging...
Many thanks !
--
Regards,
Cordialement,
Emmanuel Lécharny
www.iktek.com