Improve performance of LDAP/AD mapping from SID to uid (or even real name)
We are a large corporation with an LDAP (Active Directory) with 10's of 1000's of entries in the LDAP/AD server.
Today, I think one of the biggest performance issues with Plastic SCM is the VERY large number of requests to LDAP to lookup SID to be able to display uid. Finding a way to speed up this operation would, I believe, be a boost to performance in many operations in Plastic SCM (especially the GUI?). Item view, changeset properties, and annotate history would improve just to name a few.
I first thought of this problem when asking myself why the "cm li" command takes so long to list the ACTIVE and INACTIVE licenses. After all the licenses are fixed user, so just displaying this list should be VERY fast. But instead it is very slow, taking ~5min 30sec just to list (cm li) the 827 users holding an active license. I am assuming the reason this is so slow it the response of our VERY large LDAP/AD.
As one possible implementation, this could be addressed by having a cache of SID to uid (or even the option to also cache other fields and use those to display instead such as real name) that is saved in either a file on the Plastic SCM server, or in the Plastic SCM DB. Once implemented this cache idea could even be extended to be able to replicate this cache to users running DVCS so that they can have the benefit of displaying UID instead of SID when working distributed.
I know that some other tools allow you to have a tool job that run as often as you want to schedule it, that looks up and caches LDAP/AD info. Obviously authentication still has to happen in real time to the LDAP, but all other operations in the GUI/CLI could be against a cache and significantly improve performance from waiting on a corporate LDAP which can be remote (high latency) and slow (very large and the DC handling a very large number of requests).