[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: Deleting overlays from cn=config

Ralf Haferkamp wrote:

as back-config does currently not have support for the delete operation
(config_back_delete() just returns  LDAP_UNWILLING_TO_PERFORM
currently) I am trying to figure out what is needed to get at
least delete support for simple overlays (e.g. ppolicy or memberof)

Very brave of you. ;)

What I am currently doing is:
- renumber the indexes of the siblings of the overlay that's going to be
- remove the CfEntryInfo of the overlay from the internal config tree
- remove the Entry from the underlying LDIF database

Additionally I need to remove the overlay's slap_overinst structure from
the overlay list of the backend and in case it was the last overlay,
restore the original BackendInfo structure and delete the
SLAP_DBFLAG_GLOBAL_OVERLAY flag from the BackendDB structure of the
underlying database (for global overlays). Currently I use the
overlay_destroy_one() function for this task. This also calls the
db_destroy() hook of the overlay which should take are of free
resources held by the overlay.

I am a bit unsure about the db_destroy() part. Is that enough or is it
needed to call the db_close() hooks (when provided by the overlay)
before calling db_destroy()? Did I miss something else? Is anybody else
currently working on this?

You should call the db_close() hook first.

Up to now I am testing this only with some simpler overlays (memberof,
pcache), I assume that deleting overlays that instantiate their own
databases (like pcache, translucent(?)) might get a little more hairy.

Right. We need to distinguish between tearing down due to a normal shutdown, which should leave underlying data intact, and tearing down due to removal...
-- Howard Chu
CTO, Symas Corp. http://www.symas.com
Director, Highland Sun http://highlandsun.com/hyc/
Chief Architect, OpenLDAP http://www.openldap.org/project/