Moved from openldap-technical.
Hallvard B Furuseth writes:
[back-ldif] can leave behind a temporary file if you pull the plug
on
slapd at just the wrong moment, when an entry is being written. That
won't affect the entry, but the parent entry cannot be deleted when
there are temporary files in its directory.
Could fix this as follows. I guess it's worth the price of slowing down
LDAP Delete:
If a Delete operation would fail with notAllowedOnNonLeaf (rmdir gave
ENOTEMPTY), read the first directory entries. If we find an .ldif or
a directory, return notAllowedOnNonLeaf. Remove any temporary files
encountered until then, and try again if we removed them all.
back-ldif serializes write operations, so there won't be a conflict
unless the admin runs slapadd and slapd at the same time.
There could be files someone else has stored there which should not be
deleted, e.g. a README, so tempfiles should have recognizable names like
"<rdn>.tmp<6 random chars>" instead of just "<rdn>.<6
random chars>".
--
Hallvard