From 74db0f5263dad4e7739b5b4cccd4ada5018956b7 Mon Sep 17 00:00:00 2001 From: Ludwig Krispenz Date: Fri, 4 Nov 2016 11:08:49 +0100 Subject: [PATCH] ticket 48995 - (WIP) only set referrals in the RUV if data generation matches --- ldap/servers/plugins/replication/repl5_replica.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/ldap/servers/plugins/replication/repl5_replica.c b/ldap/servers/plugins/replication/repl5_replica.c index b66eb8b..fb62b49 100644 --- a/ldap/servers/plugins/replication/repl5_replica.c +++ b/ldap/servers/plugins/replication/repl5_replica.c @@ -3999,6 +3999,8 @@ replica_update_ruv_consumer(Replica *r, RUV *supplier_ruv) { ReplicaId supplier_id = 0; char *supplier_purl = NULL; + char *local_gen = NULL; + char *suppl_gen = NULL; if ( ruv_get_first_id_and_purl(supplier_ruv, &supplier_id, &supplier_purl) == RUV_SUCCESS) { @@ -4012,6 +4014,15 @@ replica_update_ruv_consumer(Replica *r, RUV *supplier_ruv) replica_unlock(r->repl_lock); return; } + local_gen = ruv_get_replica_generation(local_ruv); + suppl_gen = ruv_get_replica_generation(supplier_ruv); + slapi_log_err(SLAPI_LOG_REPL, repl_plugin_name, "replica_update_ruv_consumer: " + "local gen: %s - : suppl gen: %s \n",local_gen,suppl_gen); + if (strcasecmp (local_gen, suppl_gen)) { + /* the data generation differs, do not add a referral for this supplier */ + replica_unlock(r->repl_lock); + goto done; + } if ( ruv_local_contains_supplier(local_ruv, supplier_id) == 0 ) { @@ -4036,6 +4047,9 @@ replica_update_ruv_consumer(Replica *r, RUV *supplier_ruv) /* Update also the directory entry */ replica_replace_ruv_tombstone(r); } +done: + slapi_ch_free_string (&local_gen); + slapi_ch_free_string (&suppl_gen); } void -- 2.4.3