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