directory-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alex Karasulu (JIRA)" <>
Subject [jira] Commented: (DIRSERVER-888) Add a verification before deleting an Object Class in the schema
Date Sat, 25 Aug 2007 02:53:30 GMT


Alex Karasulu commented on DIRSERVER-888:

I was just thinking about this as well as other schema issues on a drive home. I think we
can implement this using a counter on the metaXXXX objects.  Basically we keep a special counter
on attributeTypes and objectClasses called m-dependentEntries.  

When you add a new entry you increment the m-dependentEntries value of each schema entity
that entry depends on.  When you delete an entry you decrement the counter on each dependent
schema entity.  When you do modify operations it's slightly more complex since this means
a potential mixture of increments and decrements.  Like if you do a modify that deletes a
may list attribute from an entry then you decrement the counter on that attributeType.  If
the modify also adds a new objectClass value and new attributes then you increment those schema
entities etc.

This way we know if entries in the server depend on schema elements without performing an
expensive search to find all entries in massive directories.  


> Add a verification before deleting an Object Class in the schema
> ----------------------------------------------------------------
>                 Key: DIRSERVER-888
>                 URL:
>             Project: Directory ApacheDS
>          Issue Type: Improvement
>    Affects Versions: 1.5.0
>            Reporter: Pierre-Arnaud Marcelot
>             Fix For: 1.5.3
> While I was playing a little with the new dynamic schema in ADS 1.5, I found an interesting
> Here's the scenario:
> I created a new AT called 'MyAT' and a new OC called 'MyOC' which has 'MyAT' in its May
> After a refresh of the Connection in LDAP Studio, I was able to create a new entry using
'MyOC' as OC. This entry was 'MyAT=test, dc=example, dc=com'.
> Then I was wondering how would react the server if I delete 'MyAT' from the schema.
> I got a warning telling me that an entity was depending on it (it was 'MyOC' of course).
> Very Great! :)
> Then I tried to delete 'MyOC'... and then... no warning...
> I could delete it successfully.
> After that, I was also able to delete 'MyAT', since there was no more dependency on it.
> That left my server with a pretty strange situation : having an entry depending on OC
and AT that doesn't exists anymore in the schema...
> While trying to load children of 'dc=example, dc=com', I got an error : "Error while
reading entry
>   [LDAP: error code 33 - failed on search operation: OID for name 'myoc' was not found
within the OID registry]"
> I think it would be a good idea, before deleting an OC in the schema, to verify if there's
not one (or more) entry depending on that OC.

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

View raw message