Hi Clément,

for solving my problem I have downloaded your source code and tried to find out 
where the problem was.

Indeed I am now able to synchronize a group with lots of members (> 32 k) 
without errors. What I had to do is to put a timeout on the LDAP environment in 
the source code:

In org.lsc.jndi.JndiServices.java, line 172:

      connProps.put("com.sun.jndi.ldap.read.timeout", "300000");

Maybe it would be helpful for future users to be able to configure that via 
configuration file.

Well, this problem is solved, now to the next one :)

If a group in the source LDAP gets empty the group in the destination stays 
unchanged, i.e. it will not be emptied as well - Unless the amount of members 
in the destination gets lower than at about 5000. Then it is synchronized.
Funny: If ihe source group is not completely empty but contains still 1 person, 
everything works well and the groups are synchronized, even if there are much 
more than 5000 people in the destination group.

I have checked again the participated source code. During the synchronization 
process the method org.lsc.beans.LscBeans.getDatasetById(final String id) is 
invoked. This method returns datasets.get(id.toLowerCase()).

I have checked all parameters - everything is good and contains the right 
values. Also the value "datasets" is ok and contains members as expected.  BUT: 
datasets.get(id.toLowerCase()) is null!    (Which leads to the situation that 
the BeanComparator sees an empty source, an empty destination, an operationType 
"UNKNOWN" and so does not do anything). Unless, as I said, the amount of 
destination members gets < approx. 5000 persons. Without having changed 
anything but the amount of members in the destination  there is now a datatsets 
value != null and the group is synchronized and thus emptied finally.

No errors are displayed, neither in debug mode. Just:


Aug 04 12:31:45 - DEBUG - In object "CN=SYNC-TEST,xxxxx":  Attribute "member" 
will not be written to the destination
....
Aug 04 12:31:45 - INFO  - All entries: 1, to modify entries: 0, successfully 
modified entries: 0, errors: 0


It is again a couple of days I deal with this problem. Any idea anybody?



Thank you in advance,

Jutta








--------------------
Jutta Biernath
Freie Universität Berlin
Zentraleinrichtung für Datenverarbeitung (ZEDAT)
Identity & Customer Management, FUDIS
Fabeckstr. 32
14195 Berlin
Tel. +49 30 838-75090
Fax +49 30 838-475090

Von: Biernath, Jutta [mailto:[email protected]]
Gesendet: Donnerstag, 16. Juli 2015 14:24
An: Clément OUDOT <[email protected]>; TAMONE Francois 
<[email protected]>; [email protected]
Cc: 'FUDIS' <[email protected]>
Betreff: AW: [lsc-users] javax.naming.NamingException: LDAP response read timed 
out

Hi Clément, hi François,

>>>> would advice to set threads to 1 (-t1). You indeed found the good 
>>>> parameter to set the timeout value: -i. But it is not normal to have an 
>>>> error, what shows the log file?

it seems that the error has something to do with the threading. Reproducing the 
error on a high debug level shows:

Jul 16 13:26:15 - ERROR - Error while modifying entry XXX in directory 
:javax.naming.NamingException: LDAP response read timed out, timeout 
used:-1ms.; remaining name 'XXX'
Jul 16 13:26:15 - ERROR - Error while synchronizing ID XXX: 
java.lang.Exception: Technical problem while applying modifications to the 
destination
Jul 16 13:26:15 - DEBUG - java.lang.Exception: Technical problem while applying 
modifications to the destination
java.lang.Exception: Technical problem while applying modifications to the 
destination
     at org.lsc.SynchronizeTask.run(AbstractSynchronize.java:825) 
[lsc-core-2.1.3.jar:na]
     at org.lsc.SynchronizeTask.run(AbstractSynchronize.java:709) 
[lsc-core-2.1.3.jar:na]
     at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
[na:1.7.0_75]
     at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
[na:1.7.0_75]
     at java.lang.Thread.run(Thread.java:745) [na:1.7.0_75]

Again, the group was nevertheless synchronized.


>>>>> Unfortunately not, because LSC must get the full entry to compare it to 
>>>>> the destination entry and compute the differences.

I understand that you must touch the entire group to identify which differences 
are to be done. But after identifiying them it would be possible to add/remove 
just the (formerly) identified memberships of a group, I think.


Best regards,

Jutta




--------------------
Jutta Biernath
Freie Universität Berlin
Zentraleinrichtung für Datenverarbeitung (ZEDAT)
Identity & Customer Management, FUDIS
Fabeckstr. 32
14195 Berlin
Tel. +49 30 838-75090
Fax +49 30 838-475090
_______________________________________________________________
Ldap Synchronization Connector (LSC) - http://lsc-project.org

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

Reply via email to