Hi Francesco,

> From the stacktrace below I understand that Syncope is trying to do the
same as in the H2 case (e.g. create a new user when
> manually changing the attribute mapped as AccountId) but it fails because
some of the attributes mapped in Syncope for the
> ApacheDS resource have the 'UNIQUE' constraint defined in the related
attribute schema.

Excellent thanks, this explains the error.

One final (trivial) point, the DatabaseTableConnector has a key "Password
cipher algorithm (defaults to CLEARTEXT)" which is required. Why does
Syncope require a value here if there is a usable default value?

Colm.

On Fri, Sep 28, 2012 at 10:57 AM, Francesco Chicchiriccò <
[email protected]> wrote:

> On 28/09/2012 11:51, Colm O hEigeartaigh wrote:
>
>> Hi Francesco,
>>
>> > When you manually change some field - mapped as 'AccountId' in Syncope
>> - on an external resource, Syncope does not have
>> > anymore an handle to understand that the remote user object is linked
>> to an internal user.
>> > H2 behavior looks normal the but ApacheDS' does not sound: have you
>> tried to look at connid log during the further synchronization
>> > from ApacheDS?
>>
>> Here is the exception that appears in "core.log". The scenario is that a
>> user "bob" that was successfuly synchronized previously, has now been
>> renamed to "bob2" in the Apache DS backend. Should I open a JIRA for this?
>>
>
> From the stacktrace below I understand that Syncope is trying to do the
> same as in the H2 case (e.g. create a new user when manually changing the
> attribute mapped as AccountId) but it fails because some of the attributes
> mapped in Syncope for the ApacheDS resource have the 'UNIQUE' constraint
> defined in the related attribute schema.
>
> It looks like normal behavior to me.
>
> Regards.
>
>
>  10:45:57.806 ERROR org.apache.syncope.core.**scheduling.AbstractTaskJob
>> - Could not create user bob2
>> org.springframework.dao.**DataIntegrityViolationExceptio**n: The
>> transaction has been rolled back.  See the nested exceptions for details on
>> the errors that occurred.; nested exception is
>> <openjpa-2.2.0-r422266:1244990 fatal store error> org.apache.openjpa.**
>> persistence.**EntityExistsException: The transaction has been rolled
>> back.  See the nested exceptions for details on the errors that occurred.
>> FailedObject: org.apache.syncope.core.**persistence.beans.user.**
>> UAttrUniqueValue@36d544bf
>>     at org.springframework.orm.jpa.**EntityManagerFactoryUtils.**
>> convertJpaAccessExceptionIfPos**sible(**EntityManagerFactoryUtils.**java:318)
>> ~[spring-orm-3.1.2.RELEASE.**jar:3.1.2.RELEASE]
>>     at org.springframework.orm.jpa.**DefaultJpaDialect.**
>> translateExceptionIfPossible(**DefaultJpaDialect.java:120)
>> ~[spring-orm-3.1.2.RELEASE.**jar:3.1.2.RELEASE]
>>     at org.springframework.orm.jpa.**JpaTransactionManager.**doCommit(**
>> JpaTransactionManager.java:**516) ~[spring-orm-3.1.2.RELEASE.**
>> jar:3.1.2.RELEASE]
>>     at org.springframework.**transaction.support.**
>> AbstractPlatformTransactionMan**ager.processCommit(**
>> AbstractPlatformTransactionMan**ager.java:754)
>> ~[spring-tx-3.1.2.RELEASE.jar:**3.1.2.RELEASE]
>>     at org.springframework.**transaction.support.**
>> AbstractPlatformTransactionMan**ager.commit(**
>> AbstractPlatformTransactionMan**ager.java:723)
>> ~[spring-tx-3.1.2.RELEASE.jar:**3.1.2.RELEASE]
>>     at org.springframework.**transaction.interceptor.**
>> TransactionAspectSupport.**commitTransactionAfterReturnin**
>> g(TransactionAspectSupport.**java:394) ~[spring-tx-3.1.2.RELEASE.jar:**
>> 3.1.2.RELEASE]
>>     at org.springframework.**transaction.interceptor.**
>> TransactionInterceptor.invoke(**TransactionInterceptor.java:**120)
>> ~[spring-tx-3.1.2.RELEASE.jar:**3.1.2.RELEASE]
>>     at org.springframework.aop.**framework.**ReflectiveMethodInvocation.*
>> *proceed(**ReflectiveMethodInvocation.**java:172)
>> ~[spring-aop-3.1.2.RELEASE.**jar:3.1.2.RELEASE]
>>     at org.springframework.aop.**framework.JdkDynamicAopProxy.**
>> invoke(JdkDynamicAopProxy.**java:202) ~[spring-aop-3.1.2.RELEASE.**
>> jar:3.1.2.RELEASE]
>>     at $Proxy123.create(Unknown Source) ~[na:na]
>>     at 
>> org.apache.syncope.core.**scheduling.SyncJob.createUser(**SyncJob.java:331)
>> [SyncJob.class:na]
>>     at 
>> org.apache.syncope.core.**scheduling.SyncJob.**handleDelta(SyncJob.java:716)
>> [SyncJob.class:na]
>>     at 
>> org.apache.syncope.core.**scheduling.SyncJob$1.handle(**SyncJob.java:645)
>> [SyncJob$1.class:na]
>>     at org.apache.syncope.core.**propagation.**
>> ConnectorFacadeProxy$1.handle(**ConnectorFacadeProxy.java:374)
>> [ConnectorFacadeProxy$1.class:**na]
>>     at org.identityconnectors.**framework.impl.api.**StreamHandlerUtil$**
>> ObjectStreamHandlerAdapter.**handle(StreamHandlerUtil.java:**79)
>> [framework-internal-1.3.2.jar:**na]
>>     at org.identityconnectors.**framework.impl.api.**
>> BufferedResultsProxy.invoke(**BufferedResultsProxy.java:268)
>> [framework-internal-1.3.2.jar:**na]
>>     at org.identityconnectors.**framework.impl.api.**
>> DelegatingTimeoutProxy.invoke(**DelegatingTimeoutProxy.java:**102)
>> [framework-internal-1.3.2.jar:**na]
>>     at $Proxy173.search(Unknown Source) [na:na]
>>     at sun.reflect.**GeneratedMethodAccessor438.**invoke(Unknown Source)
>> ~[na:na]
>>     at sun.reflect.**DelegatingMethodAccessorImpl.**invoke(**
>> DelegatingMethodAccessorImpl.**java:25) ~[na:1.6.0_35]
>>     at java.lang.reflect.Method.**invoke(Method.java:597) ~[na:1.6.0_35]
>>     at org.identityconnectors.**framework.impl.api.**LoggingProxy.invoke(
>> **LoggingProxy.java:76) [framework-internal-1.3.2.jar:**na]
>>     at $Proxy173.search(Unknown Source) [na:na]
>>     at org.identityconnectors.**framework.impl.api.**
>> AbstractConnectorFacade.**search(**AbstractConnectorFacade.java:**142)
>> [framework-internal-1.3.2.jar:**na]
>>     at org.apache.syncope.core.**propagation.**ConnectorFacadeProxy.**
>> getAllObjects(**ConnectorFacadeProxy.java:364)
>> [ConnectorFacadeProxy.class:**na]
>>     at 
>> org.apache.syncope.core.**scheduling.SyncJob.doExecute(**SyncJob.java:640)
>> [SyncJob.class:na]
>>     at org.apache.syncope.core.**scheduling.AbstractTaskJob.**
>> execute(AbstractTaskJob.java:**101) [AbstractTaskJob.class:na]
>>     at org.quartz.core.JobRunShell.**run(JobRunShell.java:223)
>> [quartz-1.8.6.jar:na]
>>     at 
>> org.quartz.simpl.**SimpleThreadPool$WorkerThread.**run(SimpleThreadPool.java:549)
>> [quartz-1.8.6.jar:na]
>> Caused by: org.apache.openjpa.**persistence.**EntityExistsException: The
>> transaction has been rolled back.  See the nested exceptions for details on
>> the errors that occurred.
>>     at 
>> org.apache.openjpa.kernel.**BrokerImpl.newFlushException(**BrokerImpl.java:2337)
>> ~[openjpa-kernel-2.2.0.jar:2.**2.0]
>>     at org.apache.openjpa.kernel.**BrokerImpl.flush(BrokerImpl.**java:2174)
>> ~[openjpa-kernel-2.2.0.jar:2.**2.0]
>>     at 
>> org.apache.openjpa.kernel.**BrokerImpl.flushSafe(**BrokerImpl.java:2072)
>> ~[openjpa-kernel-2.2.0.jar:2.**2.0]
>>     at 
>> org.apache.openjpa.kernel.**BrokerImpl.beforeCompletion(**BrokerImpl.java:1990)
>> ~[openjpa-kernel-2.2.0.jar:2.**2.0]
>>     at 
>> org.apache.openjpa.kernel.**LocalManagedRuntime.commit(**LocalManagedRuntime.java:81)
>> ~[openjpa-kernel-2.2.0.jar:2.**2.0]
>>     at org.apache.openjpa.kernel.**BrokerImpl.commit(BrokerImpl.**java:1514)
>> ~[openjpa-kernel-2.2.0.jar:2.**2.0]
>>     at 
>> org.apache.openjpa.kernel.**DelegatingBroker.commit(**DelegatingBroker.java:933)
>> ~[openjpa-kernel-2.2.0.jar:2.**2.0]
>>     at org.apache.openjpa.**persistence.EntityManagerImpl.**
>> commit(EntityManagerImpl.java:**570) ~[openjpa-persistence-2.2.0.**
>> jar:2.2.0]
>>     at org.springframework.orm.jpa.**JpaTransactionManager.**doCommit(**
>> JpaTransactionManager.java:**512) ~[spring-orm-3.1.2.RELEASE.**
>> jar:3.1.2.RELEASE]
>>     ... 26 common frames omitted
>> Caused by: org.apache.openjpa.**persistence.**EntityExistsException:
>> Unique index or primary key violation: "U_TTRNQVL_STRINGVALUE_INDEX_9 ON
>> PUBLIC.UATTRUNIQUEVALUE(**STRINGVALUE, SCHEMA_NAME)"; SQL statement:
>> INSERT INTO PUBLIC.UAttrUniqueValue (ID, BOOLEANVALUE, DATEVALUE,
>> DOUBLEVALUE, LONGVALUE, STRINGVALUE, ATTRIBUTE_ID, SCHEMA_NAME) VALUES (?,
>> ?, ?, ?, ?, ?, ?, ?) [23505-168] {prepstmnt 271272750 INSERT INTO
>> PUBLIC.UAttrUniqueValue (ID, BOOLEANVALUE, DATEVALUE, DOUBLEVALUE,
>> LONGVALUE, STRINGVALUE, ATTRIBUTE_ID, SCHEMA_NAME) VALUES (?, ?, ?, ?, ?,
>> ?, ?, ?) [params=?, ?, ?, ?, ?, ?, ?, ?]} [code=23505, state=23505]
>>     at 
>> org.apache.openjpa.jdbc.sql.**DBDictionary.narrow(**DBDictionary.java:4903)
>> ~[openjpa-jdbc-2.2.0.jar:2.2.**0]
>>     at 
>> org.apache.openjpa.jdbc.sql.**DBDictionary.**newStoreException(**DBDictionary.java:4878)
>> ~[openjpa-jdbc-2.2.0.jar:2.2.**0]
>>     at 
>> org.apache.openjpa.jdbc.sql.**SQLExceptions.getStore(**SQLExceptions.java:136)
>> ~[openjpa-jdbc-2.2.0.jar:2.2.**0]
>>     at 
>> org.apache.openjpa.jdbc.sql.**SQLExceptions.getStore(**SQLExceptions.java:78)
>> ~[openjpa-jdbc-2.2.0.jar:2.2.**0]
>>     at org.apache.openjpa.jdbc.**kernel.**PreparedStatementManagerImpl.**
>> flushAndUpdate(**PreparedStatementManagerImpl.**java:143)
>> ~[openjpa-jdbc-2.2.0.jar:2.2.**0]
>>     at org.apache.openjpa.jdbc.**kernel.**BatchingPreparedStatementManag*
>> *erImpl.flushAndUpdate(**BatchingPreparedStatementManag**erImpl.java:79)
>> ~[openjpa-jdbc-2.2.0.jar:2.2.**0]
>>     at org.apache.openjpa.jdbc.**kernel.**PreparedStatementManagerImpl.**
>> flushInternal(**PreparedStatementManagerImpl.**java:99)
>> ~[openjpa-jdbc-2.2.0.jar:2.2.**0]
>>     at org.apache.openjpa.jdbc.**kernel.**PreparedStatementManagerImpl.**
>> flush(**PreparedStatementManagerImpl.**java:87)
>> ~[openjpa-jdbc-2.2.0.jar:2.2.**0]
>>     at org.apache.openjpa.jdbc.**kernel.**ConstraintUpdateManager.flush(*
>> *ConstraintUpdateManager.java:**357) ~[openjpa-jdbc-2.2.0.jar:2.2.**0]
>>     at org.apache.openjpa.jdbc.**kernel.**ConstraintUpdateManager.**
>> flushGraph(**ConstraintUpdateManager.java:**349)
>> ~[openjpa-jdbc-2.2.0.jar:2.2.**0]
>>     at org.apache.openjpa.jdbc.**kernel.**ConstraintUpdateManager.flush(*
>> *ConstraintUpdateManager.java:**97) ~[openjpa-jdbc-2.2.0.jar:2.2.**0]
>>     at org.apache.openjpa.jdbc.**kernel.**BatchingConstraintUpdateManage*
>> *r.flush(**BatchingConstraintUpdateManage**r.java:59)
>> ~[openjpa-jdbc-2.2.0.jar:2.2.**0]
>>     at org.apache.openjpa.jdbc.**kernel.AbstractUpdateManager.**
>> flush(AbstractUpdateManager.**java:103) ~[openjpa-jdbc-2.2.0.jar:2.2.**0]
>>     at org.apache.openjpa.jdbc.**kernel.AbstractUpdateManager.**
>> flush(AbstractUpdateManager.**java:76) ~[openjpa-jdbc-2.2.0.jar:2.2.**0]
>>     at 
>> org.apache.openjpa.jdbc.**kernel.JDBCStoreManager.flush(**JDBCStoreManager.java:713)
>> ~[openjpa-jdbc-2.2.0.jar:2.2.**0]
>>     at org.apache.openjpa.kernel.**DelegatingStoreManager.flush(**
>> DelegatingStoreManager.java:**131) ~[openjpa-kernel-2.2.0.jar:2.**2.0]
>>     at org.apache.openjpa.datacache.**DataCacheStoreManager.flush(**
>> DataCacheStoreManager.java:**661) ~[openjpa-kernel-2.2.0.jar:2.**2.0]
>>     at org.apache.openjpa.kernel.**DelegatingStoreManager.flush(**
>> DelegatingStoreManager.java:**131) ~[openjpa-kernel-2.2.0.jar:2.**2.0]
>>     ... 34 common frames omitted
>> Caused by: org.apache.openjpa.lib.jdbc.**ReportingSQLException: Unique
>> index or primary key violation: "U_TTRNQVL_STRINGVALUE_INDEX_9 ON
>> PUBLIC.UATTRUNIQUEVALUE(**STRINGVALUE, SCHEMA_NAME)"; SQL statement:
>> INSERT INTO PUBLIC.UAttrUniqueValue (ID, BOOLEANVALUE, DATEVALUE,
>> DOUBLEVALUE, LONGVALUE, STRINGVALUE, ATTRIBUTE_ID, SCHEMA_NAME) VALUES (?,
>> ?, ?, ?, ?, ?, ?, ?) [23505-168] {prepstmnt 271272750 INSERT INTO
>> PUBLIC.UAttrUniqueValue (ID, BOOLEANVALUE, DATEVALUE, DOUBLEVALUE,
>> LONGVALUE, STRINGVALUE, ATTRIBUTE_ID, SCHEMA_NAME) VALUES (?, ?, ?, ?, ?,
>> ?, ?, ?) [params=?, ?, ?, ?, ?, ?, ?, ?]} [code=23505, state=23505]
>>     at org.apache.openjpa.lib.jdbc.**LoggingConnectionDecorator.**wrap(**
>> LoggingConnectionDecorator.**java:247) ~[openjpa-lib-2.2.0.jar:2.2.0]
>>     at org.apache.openjpa.lib.jdbc.**LoggingConnectionDecorator.**wrap(**
>> LoggingConnectionDecorator.**java:223) ~[openjpa-lib-2.2.0.jar:2.2.0]
>>     at org.apache.openjpa.lib.jdbc.**LoggingConnectionDecorator.**
>> access$1000(**LoggingConnectionDecorator.**java:72)
>> ~[openjpa-lib-2.2.0.jar:2.2.0]
>>     at org.apache.openjpa.lib.jdbc.**LoggingConnectionDecorator$**
>> LoggingConnection$**LoggingPreparedStatement.**executeUpdate(**
>> LoggingConnectionDecorator.**java:1162) ~[openjpa-lib-2.2.0.jar:2.2.0]
>>     at org.apache.openjpa.lib.jdbc.**DelegatingPreparedStatement.**
>> executeUpdate(**DelegatingPreparedStatement.**java:272)
>> ~[openjpa-lib-2.2.0.jar:2.2.0]
>>     at org.apache.openjpa.jdbc.**kernel.JDBCStoreManager$**
>> CancelPreparedStatement.**executeUpdate(**JDBCStoreManager.java:1741)
>> ~[openjpa-jdbc-2.2.0.jar:2.2.**0]
>>     at org.apache.openjpa.jdbc.**kernel.**PreparedStatementManagerImpl.**
>> executeUpdate(**PreparedStatementManagerImpl.**java:267)
>> ~[openjpa-jdbc-2.2.0.jar:2.2.**0]
>>     at org.apache.openjpa.jdbc.**kernel.**PreparedStatementManagerImpl.**
>> flushAndUpdate(**PreparedStatementManagerImpl.**java:118)
>> ~[openjpa-jdbc-2.2.0.jar:2.2.**0]
>>     ... 47 common frames omitted
>>
>
> --
> Francesco Chicchiriccò
>
> ASF Member, Apache Cocoon PMC and Apache Syncope PPMC Member
> http://people.apache.org/~**ilgrosso/<http://people.apache.org/~ilgrosso/>
>
>


-- 
Colm O hEigeartaigh

Talend Community Coder
http://coders.talend.com

Reply via email to