https://bugs.openldap.org/show_bug.cgi?id=9378
--- Comment #29 from Howard Chu hyc@openldap.org --- (In reply to stefan.bruens from comment #28)
(In reply to Howard Chu from comment #27)
(In reply to stefan.bruens from comment #26)
(In reply to Howard Chu from comment #25)
(In reply to stefan.bruens from comment #22)
Is there any way to query at runtime if the env uses robust mutexes? (Runtime is required, as we liblmdb is dynamically linked.)
No. Nor is there any reason to query this, since the application shouldn't care either way. Especially for programs like baloo_file, which start up periodically, do some work, and then exit - the lockfile becomes irrelevant when the last process opening the env closes it, so any potentially stale locks go away by themselves anyway.
Your understanding here seems to be quite incorrect. baloo_file is started with the session, and keeps running until the session ends. Only the extractor process is spawned on demand.
Then it's even more stupid, because the extractor is deleting the lockfile with full knowledge that the process that spawned it is still active. Regardless of any particular documentation version, deleting the lockfile of a DB that you know full well is open in more than one process is stupid.
How about calming down and reading what I wrote? baloo_file is not the extractor process, the extractor *newer* deletes the lockfile.
It really doesn't matter which of these two processes is doing the delete, since as you already said, there are other processes that have the DB open. And clearly if baloo_file restarts for any reason, when it deletes the lockfile corruption will soon follow.
I don't even know why we're having this conversation. We've wasted enough time on this issue - countless hours for countless people wasted. There's nothing left for us to discuss here.