--On Wednesday, August 30, 2017 3:51 PM +0200 Sven Mäder maeder@phys.ethz.ch wrote:
SEARCH RESULT tag=101 err=53 nentries=0 text=consumer state is newer than provider!
This would generally indicate that the accesslog DB was empty at startup, and it generated a new CSN. This is a general problem with delta-syncrepl -- If the accesslog DB goes empty, there are a host of issues that can ensue (See ITS#8100 for example).
Generally you need a script that writes a change on all masters in your cluster on a regular interval so that the DB is never purged, and there is always an active contextCSN value that's stored in the DB for each serverID.
--Quanah
--
Quanah Gibson-Mount Product Architect Symas Corporation Packaged, certified, and supported LDAP solutions powered by OpenLDAP: http://www.symas.com
On 08/30/2017 07:42 PM, Quanah Gibson-Mount wrote:
This would generally indicate that the accesslog DB was empty at startup, and it generated a new CSN. This is a general problem with delta-syncrepl -- If the accesslog DB goes empty, there are a host of issues that can ensue (See ITS#8100 for example).
I did not check the accesslog DB, but this must have been the case. I saw in the logs that there were no writes during the last days on ServerID 001 and 002. ServerID 000 had some writes, which should not have been purged by:
olcAccessLogPurge: 1+00:00 0+01:00
Generally you need a script that writes a change on all masters in your cluster on a regular interval so that the DB is never purged, and there is always an active contextCSN value that's stored in the DB for each serverID.
Thanks a lot for this information.
Below is what I did, in case somebody else needs this (the timestamp could be used to monitor the syncrepl health).
schema:
dn: cn={5}dphys,cn=schema,cn=config changetype: modify add: olcAttributeTypes olcAttributeTypes: ( 1.3.6.1.4.1.12530.10.1.1.7.1 NAME 'heartbeatServerID' DESC 'delta-syncrepl heartbeat server id (format: nnn)' EQUALITY caseExactMatch SUBSTR caseExactSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{255} ) olcAttributeTypes: ( 1.3.6.1.4.1.12530.10.1.1.7.2 NAME 'heartbeatTimestamp' DESC 'delta-syncrepl heartbeat timestamp (format: date -u --rfc-3339=ns)' EQUALITY caseExactMatch SUBSTR caseExactSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{255} ) - add: olcObjectClasses olcObjectClasses: ( 1.3.6.1.4.1.12530.10.1.1.8.1 NAME 'heartbeatEntry' DESC 'entry for delta-syncrepl transaction heartbeats' SUP top STRUCTURAL MUST ( cn $ heartbeatServerID ) MAY heartbeatTimestamp )
database entry:
dn: ou=syncrepl,dc=phys,dc=ethz,dc=ch changetype: add objectClass: organizationalUnit description: slapd syncrepl branch ou: syncrepl
dn: ou=hb,ou=syncrepl,dc=phys,dc=ethz,dc=ch changetype: add objectClass: organizationalUnit description: slapd delta-syncrepl heartbeat branch ou: hb
dn: cn=phd-aa1,ou=hb,ou=syncrepl,dc=phys,dc=ethz,dc=ch changetype: add objectClass: heartbeatEntry heartbeatServerID: 000 heartbeatTimestamp: 0000-00-00 00:00:00.000000000+00:00
script (run by cron):
#!/bin/bash HOSTNAME="phd-aa1" cat << EOF | /usr/bin/ldapmodify -Q -Y EXTERNAL -H ldapi:// dn: cn=${HOSTNAME},ou=hb,ou=syncrepl,dc=phys,dc=ethz,dc=ch changetype: modify replace: heartbeatTimestamp heartbeatTimestamp: $(date -u --rfc-3339=ns) EOF
openldap-technical@openldap.org