[Date Prev][Date Next] [Chronological] [Thread] [Top]

SLURP only replicating in oneshot mode (ITS#1341)

Full_Name: Roland Pope
Version: 2.0.11
OS: RedHat Linux 7.1 (2.4.3 kernel with XFS 1.0.1 patches)
URL: ftp://ftp.openldap.org/incoming/
Submission from: (NULL) (

I have setup OpenLDAP on a host(host1) which has two replicas declared (host2
and host3). The slapd.conf file on the master for replication looks like this: 
replogfile      /var/lib/ldap/slapd.replog
replica host=host2:389

replica host=host3:389
On both of the replicas the slapd.conf file has an updatedn entry like so:
updatedn        "cn=root,dc=domain,dc=com"

I start up all three LDAP servers and the copy on host1 starts slurpd as
I bind to host1 and update an entry.
The file /var/lib/ldap/slapd.replog gets written with the change.
The change to /var/lib/ldap/slapd.replog is copied by slurpd to
/var/lib/ldap/replica/slurpd.replog and deleted from /var/lib/ldap/slapd.replog
but nothing further happens. I see no entries in the logs of either host1 or
host2 to indicate that even a bind has happened.
If I stop ldap on host1 and run >slurpd -d255, I can see the slapd.conf file
being read successfully, but it displays nothing more after "Config: **
configuration file successfully read and parsed".
If I terminate slurpd I see:
fm: exiting
begin replication thread for host2:389
end replication thread for host2:389
begin replication thread for host3:389
end replication thread for host3:389
slurpd: terminated.
This indicates to me that the replica threads for the two hosts have been
started OK by slurpd, but that no attempt has been made to send the data in
slurpd.replog either of the replicas.
If I run slurpd in oneshot mode like so >slurpd -d255 -o -r
/var/lib/ldap/replica/slurpd.replog, I see the data being correctly sent to both
host2 and host3. 
I have put some debug stuff into slurpd and recompiled, and it appears to be
stopping in ri.c where it performs the following evaluation:
<snip servers/slurpd/ri.c line 65>
    while ( !sglob->slurpd_shutdown &&
            (( re = rq->rq_gethead( rq )) == NULL )) {
Although this may be a red herring as I am no C expert.
I have even tried applying a set of 2.0.14 patches against the 2.0.11 slurpd but
even though it compiles OK, it changes nothing.
I have also tried making host2 the master and replicating out to host1 and host3
but this configuration behaves in the same way.
Is there anything further I can do to further diagnose this problem.