Alex
 
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" <[email protected]>
cc: 
From: "Alex Karasulu" <[EMAIL PROTECTED]>
Subject: Re: Dumping The Partition in DS 1.5


Simon,

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 data. 

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.  

Alex 


On 9/25/07, [EMAIL PROTECTED] < [EMAIL PROTECTED]> 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:

            <snip>

            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(  ) )

            <snip>

This code is very similar to my old DS 1.0 code and is a match to the code in 
1.5 server-tools:dumpcmd:DumpCommandExecutor.java

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
 at 
org.apache.directory.server.schema.registries.DefaultOidRegistry.getOid(DefaultOidRegistry.java:113)
 at 
org.apache.directory.server.schema.registries.DefaultAttributeTypeRegistry.lookup(DefaultAttributeTypeRegistry.java:156)
<snip>


Many Thanks


Simon Temple

Reply via email to