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

Re: Deleting overlays from cn=config



On Dienstag, 10. Juni 2008, Ralf Haferkamp wrote:
> On Donnerstag, 5. Juni 2008, Howard Chu wrote:
> > Ralf Haferkamp wrote:
> > > Hi,
> > >
> > > 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) running.
> >
> > Very brave of you. ;)
> >
> > > What I am currently doing is:
> > > - renumber the indexes of the siblings of the overlay that's
> > > going to be deleted
> > > - 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.
>
> Ok. I implemented that in a separate function (overlay_remove()) now.
> Basically that calls the db_close and db_destroy hooks, removes the
> overlay from the oi_list and cleans up the BackendDB structure when
> the last overlay is being removed.
>
> I have some preliminary code for back-config delete support ready I
> think. It currently only supports overlays which do not instantiate
> child objects (pcache, translucent) and does not touch any data the
> overlay might have created in the underlying database.
>
> I hope to be able commit that code during the next days. Should it be
> hidden behind #ifdefs for now? (Probably be enabled with
> "LDAP_DEVEL")
Done, please test and comment. The feature is currently hidden 
behind "#ifdef SLAP_CONFIG_DELETE" which will be enabled with the 
LDAP_DEVEL macro.

-- 
Ralf