[
https://issues.jboss.org/browse/GTNPORTAL-3341?page=com.atlassian.jira.pl...
]
Marek Posolda updated GTNPORTAL-3341:
-------------------------------------
Status: Pull Request Sent (was: Open)
Git Pull Request:
https://github.com/gatein/gatein-portal/pull/727
The issue is caused by the fact that Oracle doesn't know empty strings and it treats
them as null.
I added the fix on GateIn side. The fix will always use value null for value of
UserProfile attribute if it's empty string. It's quite dirty fix IMO, but it works
for all scenarios I tested (The empty string is used in GateIn just for attribute
"user.language" of UserProfile as this attribute is in UI represented by
comboBox. Other UserProfile attributes represented by text-fields are already send to
UserProfileHandler with value null if they are empty).
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 is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:
http://www.atlassian.com/software/jira