[JBoss JIRA] (GTNPORTAL-3341) Cannot delete users with OracleDB because of "ORA-02292: integrity constraint (XXXXX) violated"
by Tran Trung Thanh (JIRA)
[ https://issues.jboss.org/browse/GTNPORTAL-3341?page=com.atlassian.jira.pl... ]
Tran Trung Thanh commented on GTNPORTAL-3341:
---------------------------------------------
PR for gatein 3.5.x: https://github.com/gatein/gatein-portal/pull/890
I only backport partial fix from Gatein 3.6 which avoids using empty string
> Cannot delete users with OracleDB because of "ORA-02292: integrity constraint (XXXXX) violated"
> -----------------------------------------------------------------------------------------------
>
> Key: GTNPORTAL-3341
> URL: https://issues.jboss.org/browse/GTNPORTAL-3341
> Project: GateIn Portal
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: Identity integration
> Affects Versions: 3.6.3.Final
> Reporter: Marek Posolda
> Assignee: Marek Posolda
> Fix For: 3.6.4.Final, 3.7.0.Final
>
>
> Description of problem:
> Cannot delete users with OracleDB (reproducible at least on version 11gR2) because of "ORA-02292: integrity constraint (XXXXX) violated - child record found"[1]. The child record is in the JBID_IO_ATTR table[2].
> [1]
> 2013-12-05 15:40:25,846 DEBUG [org.hibernate.util.JDBCExceptionReporter] (http-127.0.0.1-8080-1) Could not execute JDBC batch update [delete from jbid_io where ID=?]
> java.sql.BatchUpdateException: ORA-02292: integrity constraint (ORAUSER.FK4DC61D7E992317F0) violated - child record found
> at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:10345)
> at oracle.jdbc.driver.OracleStatementWrapper.executeBatch(OracleStatementWrapper.java:230)
> at org.jboss.resource.adapter.jdbc.CachedPreparedStatement.executeBatch(CachedPreparedStatement.java:476)
> at org.jboss.resource.adapter.jdbc.WrappedStatement.executeBatch(WrappedStatement.java:774)
> at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
> at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)
> at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:265)
> at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:171)
> at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
> at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50)
> at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1030)
> at sun.reflect.GeneratedMethodAccessor346.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:343)
> at com.sun.proxy.$Proxy266.flush(Unknown Source)
> at org.picketlink.idm.impl.store.hibernate.HibernateIdentityStoreImpl.removeIdentityObject(HibernateIdentityStoreImpl.java:622)
> at org.picketlink.idm.impl.repository.WrapperIdentityStoreRepository.removeIdentityObject(WrapperIdentityStoreRepository.java:158)
> at org.picketlink.idm.impl.api.session.managers.PersistenceManagerImpl.removeUser(PersistenceManagerImpl.java:231)
> at org.exoplatform.services.organization.idm.UserDAOImpl.removeUser(UserDAOImpl.java:268)
> [2]
> JBID_IO_ATTR:
> ATTRIBUTE_ID 423
> IDENTITY_OBJECT_ID 413
> NAME user.language
> ATTRIBUTE_TYPE text
> BIN_VALUE_ID NULL
> How reproducible: 100 %
> Steps to Reproduce:
> 1. Change gatein-idm and gatein-jcr to use OracleDB.
> 2. Start EPP
> 3. Login as root
> 4. Create a user
> 5. Delete the user
> Actual results:
> Cannot delete the user.
> Expected results:
> The user is deleted.
> Additional info:
> Some user attributes are deleted, so this process is not transactional.
--
This message was sent by Atlassian JIRA
(v6.2.6#6264)