From abd4a12de1fa0594fb8bc619ddabf32350d39ab4 Mon Sep 17 00:00:00 2001 From: Thierry Bordaz Date: Tue, 4 Apr 2017 10:44:55 +0200 Subject: [PATCH] Ticket 49209 - Hang due to omitted replica lock release Bug Description: When an operation is canceled (failure), its csn is aborted and removed from the pending list. If at that time the pending list is empty or the csn is not found in that list, the cancel callback forgots to release the replica lock Fix Description: Release replica lock systematically, whether cnsplRemove fails or not https://pagure.io/389-ds-base/issue/49209 Reviewed by: ? Platforms tested: F23 Flag Day: no Doc impact: no --- ldap/servers/plugins/replication/repl5_replica.c | 1 + 1 file changed, 1 insertion(+) diff --git a/ldap/servers/plugins/replication/repl5_replica.c b/ldap/servers/plugins/replication/repl5_replica.c index 320c144..0661d60 100644 --- a/ldap/servers/plugins/replication/repl5_replica.c +++ b/ldap/servers/plugins/replication/repl5_replica.c @@ -3662,6 +3662,7 @@ abort_csn_callback(const CSN *csn, void *data) int rc = csnplRemove(r->min_csn_pl, csn); if (rc) { slapi_log_err(SLAPI_LOG_ERR, repl_plugin_name, "abort_csn_callback - csnplRemove failed"); + replica_unlock(r->repl_lock); return; } } -- 2.5.0