From 33bb1e88abd4dcdb3e7bd12567ad66698a0138fc Mon Sep 17 00:00:00 2001 From: Ludwig Krispenz Date: Mon, 6 Nov 2017 13:24:09 +0100 Subject: [PATCH] Ticket 48118 - part 1 - aternative: always write ruv --- ldap/servers/plugins/replication/repl5.h | 1 - ldap/servers/plugins/replication/repl5_replica.c | 32 +--------------------- .../plugins/replication/repl5_replica_config.c | 2 -- 3 files changed, 1 insertion(+), 34 deletions(-) diff --git a/ldap/servers/plugins/replication/repl5.h b/ldap/servers/plugins/replication/repl5.h index 3bd878d..fa8890c 100644 --- a/ldap/servers/plugins/replication/repl5.h +++ b/ldap/servers/plugins/replication/repl5.h @@ -723,7 +723,6 @@ Object *replica_get_for_backend(const char *be_name); void replica_set_purge_delay(Replica *r, PRUint32 purge_delay); void replica_set_tombstone_reap_interval(Replica *r, long interval); void replica_update_ruv_consumer(Replica *r, RUV *supplier_ruv); -void replica_set_ruv_dirty(Replica *r); Slapi_Entry *get_in_memory_ruv(Slapi_DN *suffix_sdn); int replica_write_ruv(Replica *r); char *replica_get_dn(Replica *r); diff --git a/ldap/servers/plugins/replication/repl5_replica.c b/ldap/servers/plugins/replication/repl5_replica.c index 92f847f..7720547 100644 --- a/ldap/servers/plugins/replication/repl5_replica.c +++ b/ldap/servers/plugins/replication/repl5_replica.c @@ -43,7 +43,6 @@ struct replica ReplicaType repl_type; /* is this replica read-only ? */ ReplicaId repl_rid; /* replicaID */ Object *repl_ruv; /* replica update vector */ - PRBool repl_ruv_dirty; /* Dirty flag for ruv */ CSNPL *min_csn_pl; /* Pending list for minimal CSN */ void *csn_pl_reg_id; /* registration assignment for csn callbacks */ unsigned long repl_state_flags; /* state flags */ @@ -790,7 +789,6 @@ replica_set_ruv(Replica *r, RUV *ruv) } r->repl_ruv = object_new((void *)ruv, (FNFree)ruv_destroy); - r->repl_ruv_dirty = PR_TRUE; replica_unlock(r->repl_lock); } @@ -862,9 +860,6 @@ replica_update_ruv(Replica *r, const CSN *updated_csn, const char *replica_purl) "to update RUV for replica %s, csn = %s\n", slapi_sdn_get_dn(r->repl_root), csn_as_string(updated_csn, PR_FALSE, csn_str)); - } else { - /* RUV updated - mark as dirty */ - r->repl_ruv_dirty = PR_TRUE; } } else { slapi_log_err(SLAPI_LOG_ERR, repl_plugin_name, @@ -1349,8 +1344,6 @@ replica_dump(Replica *r) slapi_log_err(SLAPI_LOG_REPL, repl_plugin_name, "\tupdate dn: %s\n", updatedn_list ? updatedn_list : "not configured"); slapi_ch_free_string(&updatedn_list); - slapi_log_err(SLAPI_LOG_REPL, repl_plugin_name, "\truv: %s configured and is %sdirty\n", - r->repl_ruv ? "" : "not", r->repl_ruv_dirty ? "" : "not "); slapi_log_err(SLAPI_LOG_REPL, repl_plugin_name, "\tCSN generator: %s configured\n", r->repl_csngen ? "" : "not"); /* JCMREPL - Dump Referrals */ @@ -1677,7 +1670,6 @@ replica_check_for_data_reload(Replica *r, void *arg __attribute__((unused))) ruv_force_csn_update_from_ruv(upper_bound_ruv, r_ruv, "Force update of database RUV (from CL RUV) -> ", SLAPI_LOG_NOTICE); - replica_set_ruv_dirty(r); } } else { @@ -2734,11 +2726,6 @@ replica_write_ruv(Replica *r) replica_lock(r->repl_lock); - if (!r->repl_ruv_dirty) { - replica_unlock(r->repl_lock); - return rc; - } - PR_ASSERT(r->repl_ruv); ruv_to_smod((RUV *)object_get_data(r->repl_ruv), &smod); @@ -2773,14 +2760,10 @@ replica_write_ruv(Replica *r) /* ruv does not exist - create one */ replica_lock(r->repl_lock); - if (rc == LDAP_SUCCESS) { - r->repl_ruv_dirty = PR_FALSE; - } else if (rc == LDAP_NO_SUCH_OBJECT) { + if (rc == LDAP_NO_SUCH_OBJECT) { /* this includes an internal operation - but since this only happens during server startup - its ok that we have lock around it */ rc = _replica_configure_ruv(r, PR_TRUE); - if (rc == 0) - r->repl_ruv_dirty = PR_FALSE; } else /* error */ { slapi_log_err(SLAPI_LOG_REPL, repl_plugin_name, @@ -3281,7 +3264,6 @@ replica_create_ruv_tombstone(Replica *r) if (ruv_init_new(csnstr, r->repl_rid, purl, &ruv) == RUV_SUCCESS) { r->repl_ruv = object_new((void *)ruv, (FNFree)ruv_destroy); - r->repl_ruv_dirty = PR_TRUE; return_value = LDAP_SUCCESS; } else { slapi_log_err(SLAPI_LOG_ERR, repl_plugin_name, "replica_create_ruv_tombstone - " @@ -3321,8 +3303,6 @@ replica_create_ruv_tombstone(Replica *r) slapi_add_internal_pb(pb); e = NULL; /* add consumes e, upon success or failure */ slapi_pblock_get(pb, SLAPI_PLUGIN_INTOP_RESULT, &return_value); - if (return_value == LDAP_SUCCESS) - r->repl_ruv_dirty = PR_FALSE; done: slapi_entry_free(e); @@ -3586,7 +3566,6 @@ replica_strip_cleaned_rids(Replica *r) ruv_get_cleaned_rids(ruv, rid); while (rid[i] != 0) { ruv_delete_replica(ruv, rid[i]); - replica_set_ruv_dirty(r); if (replica_write_ruv(r)) { slapi_log_err(SLAPI_LOG_REPL, repl_plugin_name, "replica_strip_cleaned_rids - Failed to write RUV\n"); @@ -3700,15 +3679,6 @@ replica_update_ruv_consumer(Replica *r, RUV *supplier_ruv) } } -void -replica_set_ruv_dirty(Replica *r) -{ - PR_ASSERT(r); - replica_lock(r->repl_lock); - r->repl_ruv_dirty = PR_TRUE; - replica_unlock(r->repl_lock); -} - PRBool replica_is_state_flag_set(Replica *r, PRInt32 flag) { diff --git a/ldap/servers/plugins/replication/repl5_replica_config.c b/ldap/servers/plugins/replication/repl5_replica_config.c index 7477a29..bb318bf 100644 --- a/ldap/servers/plugins/replication/repl5_replica_config.c +++ b/ldap/servers/plugins/replication/repl5_replica_config.c @@ -953,7 +953,6 @@ replica_config_change_type_and_id(Replica *r, const char *new_type, const char * replica_reset_csn_pl(r); } ruv_delete_replica(ruv, oldrid); - replica_set_ruv_dirty(r); cl5CleanRUV(oldrid); replica_set_csn_assigned(r); } @@ -1339,7 +1338,6 @@ replica_execute_cleanruv_task(Object *r, ReplicaId rid, char *returntext __attri return LDAP_UNWILLING_TO_PERFORM; } rc = ruv_delete_replica(local_ruv, rid); - replica_set_ruv_dirty(replica); if (replica_write_ruv(replica)) { slapi_log_err(SLAPI_LOG_REPL, repl_plugin_name, "cleanAllRUV_task - Could not write RUV\n"); } -- 2.5.5