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>(&amp;(objectClass=user)(sn=*)(mail=*))</getAllFilter>
        <getOneFilter>(&amp;(objectClass=user)(mail={mail}))</getOneFilter>
        <cleanFilter>(&amp;(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

Reply via email to