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