On Thu, 18 Sep 2003, Howard Chu wrote:
>
> This is really a side issue. The serious problem is that you still need an
> interlock scheme to prevent multiple slap executables from recovering the
> environment at the same time. In the old back-bdb, bdb_init always did a
> recovery, so if you ran slapcat while slapd was running you would destroy the
> database. Since there is a great advantage to being able to use slapcat and
> slapd simultaneously, we still need an interlock scheme. We could special
> case slapcat and say that it never does DB_RECOVER, but it would still be
> useful for slapadd/slapindex to invoke recovery if needed, assuming it would
> not interfere with a running slapd.
>
It occurs to me that perhaps Sleepycat should somehow be involved in
fixing this issue. The need to run recover is not just a OpenLDAP issue,
but a more general problem. The Sleepycat software already contains
locking code adapted to different versions of host systems, but as
far as I can see an application program cannot use those until the DB
environment has been opened and then it is too late to run DB_RECOVER.
Internal in the DB code it might be possible. It would be nice if the DB
code could determine if an open is the first open of the environment and
run the DB_RECOVER only in those circumstances and never run DB_RECOVER
is the environment is opened by another process.
I have no idea if Sleepycat is open to such a suggestion, or even if
such a feature has already been considered.
Villy