[Perf]Potential Speedup by returning a ref instead of a clone when asking for 
the RootDSE
-----------------------------------------------------------------------------------------

                 Key: DIRSERVER-1290
                 URL: https://issues.apache.org/jira/browse/DIRSERVER-1290
             Project: Directory ApacheDS
          Issue Type: Improvement
    Affects Versions: 1.5.4
            Reporter: Emmanuel Lecharny
             Fix For: 2.0.0-RC1
         Attachments: rootDse.txt

We can speedup the server if we don't clone the rootDSE when we simply need to 
check for the presence of some values, like in 
protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/SearchHandler.java
 :

         DirectoryService ds = session.getCoreSession().getDirectoryService();
         PartitionNexus nexus = ds.getPartitionNexus();
         Value<?> subschemaSubentry = nexus.getRootDSE( null ).get( 
SchemaConstants.SUBSCHEMA_SUBENTRY_AT ).get();
         LdapDN subschemaSubentryDn = new LdapDN( ( String ) ( 
subschemaSubentry.get() ) );
         subschemaSubentryDn.normalize( 
ds.getRegistries().getAttributeTypeRegistry().getNormalizerMapping() );
         String subschemaSubentryDnNorm = subschemaSubentryDn.getNormName();

when we call the getRootDSE method, we get back a clone, and this is done once 
per search. We just need the SubschemaSubentry attribute's value here, and we 
won't change it.

We could create a getRootDseRef() which returns a reference to the rootDSE 
object.


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to