ldap/servers/plugins/replication/repl5_replica_config.c | 5 +++++
1 file changed, 5 insertions(+)
New commits:
commit 47c44d4e61723bb3013e614c1dafce5b37694e3c
Author: Mark Reynolds <mreynolds(a)redhat.com>
Date: Mon Sep 24 13:22:09 2012 -0400
Ticket 477 - CLEANALLRUV if there are only winsync agmts task will hang
Bug Description: If there are only winsync agmts, the task will loop forever.
Fix Description: Need to clear a flag after skipping over invalid agmts. The same
issue
would apply for agmts that were all disabled.
https://fedorahosted.org/389/ticket/477
Reviewed by: richm(Thanks!)
diff --git a/ldap/servers/plugins/replication/repl5_replica_config.c
b/ldap/servers/plugins/replication/repl5_replica_config.c
index 21f63d2..51ab2e3 100644
--- a/ldap/servers/plugins/replication/repl5_replica_config.c
+++ b/ldap/servers/plugins/replication/repl5_replica_config.c
@@ -1552,6 +1552,7 @@ replica_cleanallruv_thread(void *arg)
agmt = (Repl_Agmt*)object_get_data (agmt_obj);
if(!agmt_is_enabled(agmt) || get_agmt_agreement_type(agmt) ==
REPLICA_TYPE_WINDOWS){
agmt_obj = agmtlist_get_next_agreement_for_replica (data->replica,
agmt_obj);
+ agmt_not_notified = 0;
continue;
}
if(replica_cleanallruv_send_extop(agmt, data->rid, data->task,
data->payload, 1) == 0){
@@ -1605,6 +1606,7 @@ replica_cleanallruv_thread(void *arg)
agmt = (Repl_Agmt*)object_get_data (agmt_obj);
if(!agmt_is_enabled(agmt) || get_agmt_agreement_type(agmt) ==
REPLICA_TYPE_WINDOWS){
agmt_obj = agmtlist_get_next_agreement_for_replica (data->replica,
agmt_obj);
+ found_dirty_rid = 0;
continue;
}
if(replica_cleanallruv_check_ruv(agmt, rid_text, data->task) == 0){
@@ -1698,6 +1700,7 @@ check_agmts_are_caught_up(Replica *replica, ReplicaId rid, char
*maxcsn, Slapi_T
agmt = (Repl_Agmt*)object_get_data (agmt_obj);
if(!agmt_is_enabled(agmt) || get_agmt_agreement_type(agmt) ==
REPLICA_TYPE_WINDOWS){
agmt_obj = agmtlist_get_next_agreement_for_replica (replica, agmt_obj);
+ not_all_caughtup = 0;
continue;
}
if(replica_cleanallruv_check_maxcsn(agmt, rid_text, maxcsn, task) == 0){
@@ -1753,6 +1756,7 @@ check_agmts_are_alive(Replica *replica, ReplicaId rid, Slapi_Task
*task)
agmt = (Repl_Agmt*)object_get_data (agmt_obj);
if(!agmt_is_enabled(agmt) || get_agmt_agreement_type(agmt) ==
REPLICA_TYPE_WINDOWS){
agmt_obj = agmtlist_get_next_agreement_for_replica (replica, agmt_obj);
+ not_all_alive = 0;
continue;
}
if(replica_cleanallruv_replica_alive(agmt) == 0){
@@ -2364,6 +2368,7 @@ replica_abort_task_thread(void *arg)
agmt = (Repl_Agmt*)object_get_data (agmt_obj);
if(!agmt_is_enabled(agmt) || get_agmt_agreement_type(agmt) ==
REPLICA_TYPE_WINDOWS){
agmt_obj = agmtlist_get_next_agreement_for_replica (data->replica,
agmt_obj);
+ agmt_not_notified = 0;
continue;
}
if(replica_cleanallruv_send_abort_extop(agmt, data->task,
data->payload)){