Howard Chu wrote:
Please test... At the moment I've only run it with BDB 4.7.25. I'll be testing with older releases over the next couple of days. In particular, take note of any LDAP_OTHER/Internal Error results in the test suite. Right now it passes all tests for me on bdb and hdb.
I'm occasionally seeing the read-only transaction getting selected for deadlock recovery, which makes the transaction unusable after that point. I'm looking into how to configure the environment so that the reader transactions never get selected for deadlock recovery, otherwise we need to add a lot more abort/recovery code.
While investigating this, I noticed another problem - currently whenever the search code gets a LOCK_DEADLOCK or LOCK_NOTGRANTED result, it just immediately retries. That's only correct when the search is a standalone operation. But, the search can also be invoked during ACL processing of a write operation if an ACL specifies some group or other complex condition. We've correctly propagated the write's TXN into the search using the bdb_opinfo, but if we're acting in this situation and get a DEADLOCK, we need to give up and return back to the caller.