ldap/servers/slapd/back-ldbm/ldbm_delete.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
New commits:
commit 93bde65c4be53409106594ca3af646b23a907597
Author: Mark Reynolds <mreynolds(a)redhat.com>
Date: Thu Jul 25 15:53:38 2013 -0400
Ticket 47449 - deadlock after adding and deleting entries
Bug Description: If multiple clients are each doing their own add/delete of the same
entries,
the server will deadlock very quickly.
Fix Description: The server was not signaling an error when it failed to lock the
parent
entry lock. I've checked add/mod/modrdn functions as well, and
they do correctly
unlock the cache entry(this includes the old/new superior for
modrdn).
https://fedorahosted.org/389/ticket/47449
Reviewed by: richm(Thanks!)
(cherry picked from commit 6bd78b323a7d6ddaefc2cb8245e4356fd02e97e1)
diff --git a/ldap/servers/slapd/back-ldbm/ldbm_delete.c
b/ldap/servers/slapd/back-ldbm/ldbm_delete.c
index 011c2d5..9d84cb1 100644
--- a/ldap/servers/slapd/back-ldbm/ldbm_delete.c
+++ b/ldap/servers/slapd/back-ldbm/ldbm_delete.c
@@ -246,9 +246,9 @@ ldbm_back_delete( Slapi_PBlock *pb )
"Delete Retrying Transaction\n");
#ifndef LDBM_NO_BACKOFF_DELAY
{
- PRIntervalTime interval;
- interval = PR_MillisecondsToInterval(slapi_rand() % 100);
- DS_Sleep(interval);
+ PRIntervalTime interval;
+ interval = PR_MillisecondsToInterval(slapi_rand() % 100);
+ DS_Sleep(interval);
}
#endif
}
@@ -460,6 +460,7 @@ ldbm_back_delete( Slapi_PBlock *pb )
if (parent && cache_lock_entry(&inst->inst_cache, parent)) {
/* Failed to obtain parent entry's entry lock */
CACHE_RETURN(&(inst->inst_cache), &parent);
+ retval = -1;
goto error_return;
}
}