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.