]
Trong Tran updated GTNPORTAL-3341:
----------------------------------
Fix Version/s: 3.5.11.Final
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.5.11.Final, 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.