ldap/servers/plugins/replication/cl5_api.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-)
New commits: commit 20cccf58108099cead2412a979e70e4f5972b806 Author: Mark Reynolds mreynolds@redhat.com Date: Sat Dec 14 07:38:12 2013 -0500
Ticket 47627 - Fix replication logging
We printed the same CSN for the missing CSN and the supplier min CSN because we reused the same CSN pointer.
https://fedorahosted.org/389/ticket/47627
Reviewed by: rmeggins(Thanks!)
diff --git a/ldap/servers/plugins/replication/cl5_api.c b/ldap/servers/plugins/replication/cl5_api.c index 4a9d81c..980296e 100644 --- a/ldap/servers/plugins/replication/cl5_api.c +++ b/ldap/servers/plugins/replication/cl5_api.c @@ -5166,6 +5166,7 @@ static int _cl5PositionCursorForReplay (ReplicaId consumerRID, const RUV *consum int i; CSN **csns = NULL; CSN *startCSN = NULL; + CSN *minCSN = NULL; char csnStr [CSN_STRSIZE]; int rc = CL5_SUCCESS; Object *supplierRuvObj = NULL; @@ -5255,20 +5256,24 @@ static int _cl5PositionCursorForReplay (ReplicaId consumerRID, const RUV *consum */ if ((rc == DB_NOTFOUND) && !ruv_has_csns(file->purgeRUV)) { + char mincsnStr[CSN_STRSIZE]; + /* use the supplier min csn for the buffer start csn - we know this csn is in our changelog */ - if ((RUV_SUCCESS == ruv_get_min_csn_ext(supplierRuv, &startCSN, 1 /* ignore cleaned rids */)) && - startCSN) + if ((RUV_SUCCESS == ruv_get_min_csn_ext(supplierRuv, &minCSN, 1 /* ignore cleaned rids */)) && + minCSN) { /* must now free startCSN */ if (slapi_is_loglevel_set(SLAPI_LOG_REPL)) { - csn_as_string(startCSN, PR_FALSE, csnStr); + csn_as_string(startCSN, PR_FALSE, csnStr); + csn_as_string(minCSN, PR_FALSE, mincsnStr); slapi_log_error(SLAPI_LOG_REPL, repl_plugin_name_cl, "%s: CSN %s not found and no purging, probably a reinit\n", agmt_name, csnStr); slapi_log_error(SLAPI_LOG_REPL, repl_plugin_name_cl, "%s: Will try to use supplier min CSN %s to load changelog\n", - agmt_name, csnStr); + agmt_name, mincsnStr); } + startCSN = minCSN; rc = clcache_load_buffer (clcache, startCSN, DB_SET); } else