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
