Issue #422 has been updated by Clément OUDOT.

The first thing to know is if we are able to correctly detect that the source 
directory connection has been lost.

If we achieve this, I think we should relaunch a full synchronization 
automatically (we can check the @synchronizingAllWhenStarting@ parameter to do 
it or not).

For the next major version, we can maybe work on the code to manage syncrepl 
cookie, but let's try to be as simple as possible for the 2.0 release.
----------------------------------------
Bug #422: Service asynchronousLdapSourceService not fault tolerant
http://tools.lsc-project.org/issues/422

Author: Clément OUDOT
Status: Assigned
Priority: Normal
Assigned to: Sébastien Bahloul
Category: Core
Target version: 2.0
Problem in version: 


I made some tests with the new service asynchronousLdapSourceService. In my 
mind, this service is dedicated to be used in a daemon mode, and so, should run 
even if source or destination is unreachable.

* Test 1: LDAP source or destination nos started: in this case, LSC daemon do 
not want to start:
<pre>
avr. 05 10:12:20 - ERROR - Error opening the LDAP connection to the 
destination! (javax.naming.CommunicationException: localhost:3389 [Root 
exception is java.net.ConnectException: Connection refused])
avr. 05 10:12:20 - ERROR - org.lsc.exception.LscConfigurationException: 
java.lang.reflect.InvocationTargetException
Last log file line: avr. 05 10:12:20 - ERROR - 
org.lsc.exception.LscConfigurationException: 
java.lang.reflect.InvocationTargetException
</pre>

* Test 2: LDAP source stopped and restarted while LSC daemon is running: in 
this case, the new modifications are never seen in LSC, we have to restart it 
to get them.

* Test 3:  LDAP destination stopped while LSC daemon is running: LSC throw an 
error but continue its execution. When LSC daemon is restarted, the 
modifications are propagated.
<pre>
avr. 05 10:21:04 - ERROR - Error while looking for 
(&(objectClass=person)(uid=agent.test)) in ou=people,ou=xxx: 
javax.naming.CommunicationException: connection closed [Root exception is 
java.io.IOException: connection closed]; remaining name 'ou=people'
avr. 05 10:21:04 - ERROR - Error while synchronizing ID uid=agent.test,ou=xxx: 
org.lsc.exception.LscServiceException: javax.naming.CommunicationException: 
connection closed [Root exception is java.io.IOException: connection closed]; 
remaining name 'ou=people'
</pre>


So, the expected behavior for me would be:
* Allow LSC in daemon mode to start even in source or destination is not 
available, we could just log a warning in this case
* Set a retry feature in asynchronousLdapSourceService so LSC can open a new 
connection if the current was closed. The parameter would be the same as the 
retry in OpenLDAP syncrepl configuration (for example retry="5 5 300 +")




-- 
You have received this notification because you have either subscribed to it, 
or are involved in it.
To change your notification preferences, please click here: 
http://tools.lsc-project.org/my/account
_______________________________________________________________
Ldap Synchronization Connector (LSC) - http://lsc-project.org

lsc-dev mailing list
[email protected]
http://lists.lsc-project.org/listinfo/lsc-dev

Reply via email to