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

slurpd rejects on temporary errors. (ITS#1183)



Full_Name: Michael van Elst
Version: 2.0.9
OS: Solaris8
URL: ftp://ftp.openldap.org/incoming/
Submission from: (NULL) (194.120.0.6)


In servers/slurpd/ldap_op.c the do_ldap function retries an LDAP update
operation
that fails with LDAP_SERVER_DOWN to rebind to a server that has timed out the
connection.

In case of a permanent failure of the replica server the bind operation will
fail, do_ldap returns with DO_LDAP_ERR_RETRYABLE and the upper layer in ri.c
may loop until the operation succeeds again.

However, if the bind operation succeeds and the update fails again due to some
intermittent problem, the upper layer will receive a ERR_DO_LDAP_FATAL and
reject the update.

When the replica server becomes operational again later it will accept further
updates which may make it impossible to recover the missed updates from the
rejection log. It is also possible that further updates are rejected when
a delete operation had been dropped. To get a synchronized replica you have
to install its databases from scratch.

An easy fix is to return ERR_DO_LDAP_RETRYABLE when falling out of the
retry loop.