> I've been having issues with syncrepl in openldap. This is plain
> syncrepl. I'm not using delta-syncrepl as I run with mirror mode on.
> I've noticed that when there are a large number of writes on the
> writemaster (Typically around 10 per second) the data on the readslave
> goes out of sync with the master, typically having entries which have
> been deleted on the master. The contextCSNs on both the readslaves and
> writemaster match eventually, but the data doesn't. I'm running the
> readslave in refreshOnly mode with an interval of 1 minute. I'm using a
> reasonably large DB of size ~ 2 GB. I turned on the sync logs and found
> lots of entries with "nonpresent_callback" and "syncrepl_del_nonpresent".
> Tested this and found it occurring in both 2.4.29 and 2.4.33 (Latest as
> of this time), and with BDB 4.2.36 as the backend.
> I was wondering if anyone has faced similar issues before, and if there
> exists a solution to this problem. I will send any relevant
> configuration and log snippets as needed.
I am certainly seeing similar problems with plain syncrepl in an MMR setup (all writes to one server currently, openldap 2.4.31):
for example, at the moment in my production system, there are 18 DNs (out of 5.7 million) which are in the writemaster
but which are missing from the 3 readslaves, although the contextCSNs all match. Deleting and re-adding such DNs to the writemaster
can usually fix this up, but sometimes the contextCSNs get out of sync, and
then the only practical way to recover is to rebuild the readslaves from a backup taken from the writemaster.
Because of this issue I am planning to change to using delta-syncrepl, which does appear to work and not get out of sync in the testing
I have done. I believe this is the only solution at the moment.