directory-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
Subject Re: Dumping The Partition in DS 1.5
Date Wed, 26 Sep 2007 09:13:04 GMT
When we implemented early releases of DS 1.0 we found that under certain conditions (e.g.
uncontrolled shutdown) the jdbm store/indexes became damaged.
To enable our customer service department to determine if this was the cause of a reported
fault, I added a method to our directory MBean to enumerate all of the jdbm indexes/entries.
 If it failed then we have a procedure to remove all the jdbm store folders and restart DS
with a backup LDIF.
Whereas this capability is not a runtime requirement of our systems it is an important operational
tool as jdbm storage has proved to be a little 'fragile'.
So to reword my question:  How can I run an integrity check on the underlying jdbm stores?
Many Thanks
- Simon
25 September 2007 17:36
To: "Apache Directory Developers List" <>
From: "Alex Karasulu" <>
Subject: Re: Dumping The Partition in DS 1.5


In 1.5 there is no longer a bootstrap registries.  Now the server bootstrap process starts
up the schema
partition and loads all the schema info from the schema partition with a minimal set of schema

To help you out I need to know what your main objective is not how you're trying to solve
some part of 
it.  You may just be doing it the wrong way and I might be able to suggest a better option.


On 9/25/07, <> wrote:
For an embedded DS I provide a dump method which prints the content of the jdbm partition(s)
as a form of data integrity check.

In order to implement this I think I need a reference to the bootstrapRegistries:


            JdbmMasterTable master = new JdbmMasterTable( recMan );
            AttributeType attributeType = bootstrapRegistries.getAttributeTypeRegistry(  )
                                                             .lookup( "apacheUpdn" );
            JdbmIndex idIndex = new JdbmIndex( attributeType,
                    partitionDirectory, 1000, 1000 );

            NamingEnumeration list = master.listTuples(  );
            StringBuffer buf = new StringBuffer(  );

            while ( list.hasMore(  ) )


This code is very similar to my old DS 1.0 code and is a match to the code in 1.5

How do I get a reference to boostrapRegistries in an running, embedded directory?

Doing this throws an exception:

               Registries bootstrapRegistries = new DefaultRegistries( "bootstrap", 
                    new BootstrapSchemaLoader(), new DefaultOidRegistry() );

javax.naming.NamingException: OID for name 'apacheUpdn' was not found within the OID registry

Many Thanks

Simon Temple
View raw message