Blame SOURCES/0048-Ticket-49446-cleanallruv-should-ignore-cleaned-repli.patch

96373c
From 7fa2f146c80ed64217bb0c1022c99bd1948cdc7c Mon Sep 17 00:00:00 2001
96373c
From: Ludwig Krispenz <lkrispen@redhat.com>
96373c
Date: Thu, 11 Jan 2018 15:56:21 +0100
96373c
Subject: [PATCH] Ticket 49446 - cleanallruv should ignore cleaned replica Id
96373c
 in processing changelog if in force mode
96373c
96373c
Bug: If the startcsn is calculated based on a cleaned rid, it could be missing from the changelog.
96373c
96373c
Fix: In force mode we do not care that the topology gets in sync for the cleaned RID, so we can ignore it
96373c
     in an earlier stage, instead of setting it to precleane only.
96373c
96373c
Reviewed by: Thierry, thanks
96373c
---
96373c
 ldap/servers/plugins/replication/repl5_replica_config.c | 10 ++++++++--
96373c
 1 file changed, 8 insertions(+), 2 deletions(-)
96373c
96373c
diff --git a/ldap/servers/plugins/replication/repl5_replica_config.c b/ldap/servers/plugins/replication/repl5_replica_config.c
96373c
index e025f34d8..005528a41 100644
96373c
--- a/ldap/servers/plugins/replication/repl5_replica_config.c
96373c
+++ b/ldap/servers/plugins/replication/repl5_replica_config.c
96373c
@@ -1688,9 +1688,15 @@ replica_cleanallruv_thread(void *arg)
96373c
     }
96373c
     /*
96373c
      *  Presetting the rid prevents duplicate thread creation, but allows the db and changelog to still
96373c
-     *  process updates from the rid.  set_cleaned_rid() blocks updates, so we don't want to do that... yet.
96373c
+     *  process updates from the rid.
96373c
+     *  set_cleaned_rid() blocks updates, so we don't want to do that... yet unless we are in force mode.
96373c
+     *  If we are forcing a clean independent of state of other servers for this RID we can set_cleaned_rid()
96373c
      */
96373c
-    preset_cleaned_rid(data->rid);
96373c
+    if (data->force) {
96373c
+        set_cleaned_rid(data->rid);
96373c
+    } else {
96373c
+        preset_cleaned_rid(data->rid);
96373c
+    }
96373c
     rid_text = slapi_ch_smprintf("%d", data->rid);
96373c
     csn_as_string(data->maxcsn, PR_FALSE, csnstr);
96373c
     /*
96373c
-- 
96373c
2.13.6
96373c