Hello: I am new to LSC and I am occasionally getting a ConcurrentModificationException when synchronizing from active directory to postgres:
java.util.ConcurrentModificationException: null at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:859) ~[na:1.7.0_75] at java.util.ArrayList$Itr.next(ArrayList.java:831) ~[na:1.7.0_75] at org.lsc.beans.BeanComparator.getWriteAttributes(BeanComparator.java:436) ~[lsc-core-2.1.3.jar:na] at org.lsc.beans.BeanComparator.getUpdatedObject(BeanComparator.java:252) ~[lsc-core-2.1.3.jar:na] at org.lsc.beans.BeanComparator.calculateModifications(BeanComparator.java:176) ~[lsc-core-2.1.3.jar:na] at org.lsc.SynchronizeTask.run(AbstractSynchronize.java:773) [lsc-core-2.1.3.jar:na] at org.lsc.SynchronizeTask.run(AbstractSynchronize.java:707) [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] Most of the operations are successful, but I occasionally get one or two of these errors during an LSC run. At this point I am just running some small synchronization tests (only 14 users or so in active directory). I am basically using the configuration files from the postgres sample, except that I have substituted the active directory source for the opendj source. Is there any reason this should be happening and anyway I can work around this issue? Thanks! Milad I am using LSC 2.1.3, here are my config files: <?xml version="1.0" ?> <lsc xmlns="http://lsc-project.org/XSD/lsc-core-2.1.xsd" revision="1"> <connections> <ldapConnection> <name>ldap-src-conn</name> <url>ldap://XXX.XXX.XXX.XXX:XXX/DC=XXX,DC=XXX</url> <username>CN=XXXX,CN=XXX,DC=XXX,DC=XXX</username> <password>XXXXX</password> <authentication>SIMPLE</authentication> <referral>IGNORE</referral> <derefAliases>NEVER</derefAliases> <version>VERSION_3</version> <pageSize>-1</pageSize> <factory>com.sun.jndi.ldap.LdapCtxFactory</factory> <tlsActivated>false</tlsActivated> </ldapConnection> <databaseConnection> <name>jdbc-dst-conn</name> <url>jdbc:postgresql://XXX.XXX.XXX.XXX:5432/lsc</url> <username>lsc</username> <password>lsc</password> <driver>org.postgresql.Driver</driver> </databaseConnection> </connections> <tasks> <task> <name>People</name> <bean>org.lsc.beans.SimpleBean</bean> <ldapSourceService> <name>ad-source-service</name> <connection reference="ldap-src-conn" /> <baseDn>CN=XXX,DC=XXX,DC=XXX</baseDn> <pivotAttributes> <string>mail</string> </pivotAttributes> <fetchedAttributes> <string>description</string> <string>cn</string> <string>sn</string> <string>mail</string> <string>givenName</string> <string>samAccountName</string> <string>userPrincipalName</string> </fetchedAttributes> <getAllFilter>(&(objectClass=user)(sn=*)(mail=*))</getAllFilter> <getOneFilter>(&(objectClass=user)(mail={mail}))</getOneFilter> <cleanFilter>(&(objectClass=user)(mail={mail}))</cleanFilter> </ldapSourceService> <databaseDestinationService> <name>postgresql-src-service</name> <connection reference="jdbc-dst-conn" /> <requestNameForList>getInetOrgPersonList</requestNameForList> <requestNameForObject>getInetOrgPerson</requestNameForObject> <requestsNameForInsert><string>insertInetOrgPerson</string></requestsNameForInsert> <requestsNameForUpdate><string>updateInetOrgPerson</string></requestsNameForUpdate> <requestsNameForDelete><string>deleteInetOrgPerson</string></requestsNameForDelete> </databaseDestinationService> <propertiesBasedSyncOptions> <mainIdentifier>"uid="+srcBean.getDatasetFirstValueById("samAccountName") + ",ou=Sample,dc=lsc-project,dc=org"</mainIdentifier> <defaultDelimiter>;</defaultDelimiter> <defaultPolicy>FORCE</defaultPolicy> <conditions> <changeId>false</changeId> </conditions> </propertiesBasedSyncOptions> </task> </tasks> </lsc> <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" " http://www.ibatis.com/dtd/sql-map-2.dtd"> <sqlMap namespace="InetOrgPerson"> <select id="getInetOrgPerson" resultClass="java.util.HashMap" parameterClass="java.util.Map"> Select 'inetOrgPerson' objectClass, pers.id, TRIM(pers.uid) as uid, TRIM(pers.sn) as sn, TRIM(pers.givenname) as givenName, TRIM(pers.cn) as cn, TRIM(pers.mail) as mail, TRIM(pers.address) as address, TRIM(pers.telephonenumber) as telephoneNumber FROM inetorgperson pers WHERE pers.mail = #mail# </select> <insert id="insertInetOrgPerson" parameterClass="java.util.Map"> INSERT INTO inetorgperson ( uid, sn, givenname, cn, mail, address, telephonenumber) VALUES ( #samaccountname#, #sn#, #givenname#, #cn#, #mail#, #address#, #telephonenumber# ) </insert> <update id="updateInetOrgPerson" parameterClass="java.util.Map"> UPDATE inetorgperson SET uid = #samaccountname#, sn = #sn# , givenname = #givenname#, cn = #cn#, address = #address#, telephonenumber = #telephonenumber# WHERE mail = #mail# </update> <delete id="deleteInetOrgPerson" parameterClass="java.util.Map"> DELETE FROM inetorgperson WHERE mail = #mail# </delete> <select id="getInetOrgPersonList" resultClass="java.util.HashMap"> SELECT pers."mail" AS mail FROM inetorgperson pers </select> </sqlMap>
_______________________________________________________________ Ldap Synchronization Connector (LSC) - http://lsc-project.org lsc-users mailing list [email protected] http://lists.lsc-project.org/listinfo/lsc-users

