You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@directory.apache.org by Emmanuel Lecharny <el...@gmail.com> on 2011/07/21 11:26:34 UTC

Partition heads up, 2

Hi guys,

here is the new initialization process for partitions (summarized) :

Hierarchy :
-----------
AbstractPartition (initialize)
   AbstractBTreePartition (---)
     AbstractXdbmPartition (---)
       AvlPartition (doInit)
         AbstractLdifPartition (---)
           LdifPartition (doInit)
           ReadOnlyConfigurationPartition (doInit)
           SingleFileLdifPartition (doInit)
       JdbmPartition (doInit)
   DefaultPartitionNexus (doInit)
   SchemaPartition (doInit)


AbstractPartition
-----------------
initialize()
{
   if not initialized
     call doInit()
     initialized = true
}

AbstractBTreePartition
----------------------
-- no init --

DefaultPartitionNexus
---------------------
doInit()
{
   if not initialized
     register the controls in the rootDSE
     for each partition, do
       if the partition is not initialized, then call partition.initialize()
       update the partitionTree and the namingContexts
     done
}

SchemaPartition
---------------
doInit()
{
   if not initialized then
     set the wrapped partition's ID, suffixDn and schemaManager
     call wrapped partition's initialize() method
     create the synchronizer
}

AbstractXdbmPartition
---------------------
-- no init --

AvlPartition
------------
doInit()
{
   if not initialized then
     create an optimizer
     create a searchEngine
     create the master table
     setup the system and user indexes
}

JdbmPartition
-------------
doInit()
{
   if not initialized then
     create an optimizer
     create a searchEngine
     create the directory
     setup the system and user indexes
     create the recordManager
     create the master table
     delete unused indexes
}

AbstractLdifPartition
---------------------
-- no init --

LdifPartition
-------------
doInit()
{
   if not initialized then
     compute the directory where the ldif files are stored
     call the AvlPartition.doInit()
     if we have an existing directory
       load the entries into the AVLPartition
     else
       create the underlying files
       store the context entry in the AVLPartition (not clear where we 
get it from…)
}

ReadOnlyConfigurationPartition
------------------------------
doInit()
{
   if not initialized
     call the AvlPartition.doInit()
     load the ldif entries into the AvlPartition
}

SingleFileLdifPartition
-----------------------
doInit()
{
   if not initialized
     call the AvlPartition.doInit()
     load the ldif entries into the AvlPartition
}

-- 
Regards,
Cordialement,
Emmanuel LĂ©charny
www.iktek.com