[
https://issues.apache.org/jira/browse/JCR-2272?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13108699#comment-13108699
]
Jukka Zitting commented on JCR-2272:
------------------------------------
The latest patch looks like a reasonable step forward. I'll try to review the
attached traces to better understand also the deeper interactions here.
Meanwhile, some comments:
* The SQLIntegrityConstraintViolationException class is only available since
Java 6. As an alternative we could try to interpret the value returned by the
SQLException.getSQLState() method.
* I couldn't get the ConcurrentImportTest to fail with the latest patch despite
numerous attempts, but that might be just due to my pretty fast server and the
relatively low level of concurrency in the test case. Or then everything is
just fine. :-)
* What I do see instead is plenty of warnings like the following. I didn't
check yet if this is because of the changes in the patch or something we'd in
any case need to fix.
15:01:43.975 WARN [Executor 0] ItemSaveOperation.java:885
/testroot/9afd33fd-b66d-4c8f-9d02-0fe16245d0bc/jcr:mixinTypes: failed to
restore transient state
javax.jcr.RepositoryException:
org.apache.jackrabbit.core.state.ItemStateException: there's already a property
state instance with id
9afd33fd-b66d-4c8f-9d02-0fe16245d0bc/{http://www.jcp.org/jcr/1.0}mixinTypes
at
org.apache.jackrabbit.core.PropertyImpl.restoreTransient(PropertyImpl.java:197)
~[classes/:na]
at
org.apache.jackrabbit.core.ItemSaveOperation.restoreTransientItems(ItemSaveOperation.java:879)
[classes/:na]
at
org.apache.jackrabbit.core.ItemSaveOperation.perform(ItemSaveOperation.java:277)
[classes/:na]
at
org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:200)
[classes/:na]
at org.apache.jackrabbit.core.ItemImpl.perform(ItemImpl.java:91)
[classes/:na]
at org.apache.jackrabbit.core.ItemImpl.save(ItemImpl.java:329)
[classes/:na]
at
org.apache.jackrabbit.core.session.SessionSaveOperation.perform(SessionSaveOperation.java:64)
[classes/:na]
at
org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:200)
[classes/:na]
at org.apache.jackrabbit.core.SessionImpl.perform(SessionImpl.java:360)
[classes/:na]
at org.apache.jackrabbit.core.SessionImpl.save(SessionImpl.java:809)
[classes/:na]
at
org.apache.jackrabbit.core.ConcurrentImportTest$1.execute(ConcurrentImportTest.java:95)
[test-classes/:na]
at
org.apache.jackrabbit.core.AbstractConcurrencyTest$Executor.run(AbstractConcurrencyTest.java:209)
[test-classes/:na]
at java.lang.Thread.run(Thread.java:662) [na:1.6.0_23]
Caused by: org.apache.jackrabbit.core.state.ItemStateException: there's already
a property state instance with id
9afd33fd-b66d-4c8f-9d02-0fe16245d0bc/{http://www.jcp.org/jcr/1.0}mixinTypes
at
org.apache.jackrabbit.core.state.SessionItemStateManager.createTransientPropertyState(SessionItemStateManager.java:631)
~[classes/:na]
at
org.apache.jackrabbit.core.PropertyImpl.restoreTransient(PropertyImpl.java:191)
~[classes/:na]
... 12 common frames omitted
> Errors during concurrent session import of nodes with same UUIDs
> ----------------------------------------------------------------
>
> Key: JCR-2272
> URL: https://issues.apache.org/jira/browse/JCR-2272
> Project: Jackrabbit Content Repository
> Issue Type: Bug
> Components: jackrabbit-core, xml
> Affects Versions: 2.0-alpha8
> Reporter: Tobias Bocanegra
> Attachments: 2272.patch, JCR-2272.patch, JCR-2272_NPE.patch,
> JCR-2272__Errors_during_concurrent_session_import_of_nodes_with_same_UUIDs.patch,
> JCR-2272_revised.patch, JCR2272.Sep12.patch, JCR2272.Sep13.patch,
> JCR2272.Sep13b.patch, JCR2272.Sep15.patch, JCR2272.Sep6.patch, t4.html,
> t4.txt, t5.txt
>
>
> 21.08.2009 16:22:14 *ERROR* [Executor 0] ConnectionRecoveryManager: could not
> execute statement, reason: The statement was aborted because it would have
> caused a duplicate key value in a unique or primary key constraint or unique
> index identified by 'SQL090821042140130' defined on 'DEFAULT_BUNDLE'.,
> state/code: 23505/20000 (ConnectionRecoveryManager.java, line 453)
> 21.08.2009 16:22:14 *ERROR* [Executor 0] BundleDbPersistenceManager: failed
> to write bundle: 6c292772-349e-42b3-8255-7729615c67de
> (BundleDbPersistenceManager.java, line 1212)
> ERROR 23505: The statement was aborted because it would have caused a
> duplicate key value in a unique or primary key constraint or unique index
> identified by 'SQL090821042140130' defined on 'DEFAULT_BUNDLE'.
> at org.apache.derby.iapi.error.StandardException.newException(Unknown
> Source)
> at
> org.apache.derby.impl.sql.execute.IndexChanger.insertAndCheckDups(Unknown
> Source)
> at org.apache.derby.impl.sql.execute.IndexChanger.doInsert(Unknown
> Source)
> at org.apache.derby.impl.sql.execute.IndexChanger.insert(Unknown Source)
> at org.apache.derby.impl.sql.execute.IndexSetChanger.insert(Unknown
> Source)
> at org.apache.derby.impl.sql.execute.RowChangerImpl.insertRow(Unknown
> Source)
> at
> org.apache.derby.impl.sql.execute.InsertResultSet.normalInsertCore(Unknown
> Source)
> at org.apache.derby.impl.sql.execute.InsertResultSet.open(Unknown
> Source)
> at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown
> Source)
> at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown
> Source)
> at
> org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown
> Source)
> at org.apache.derby.impl.jdbc.EmbedPreparedStatement.execute(Unknown
> Source)
> at
> org.apache.jackrabbit.core.persistence.bundle.util.ConnectionRecoveryManager.executeStmtInternal(ConnectionRecoveryManager.java:371)
> at
> org.apache.jackrabbit.core.persistence.bundle.util.ConnectionRecoveryManager.executeStmtInternal(ConnectionRecoveryManager.java:298)
> at
> org.apache.jackrabbit.core.persistence.bundle.util.ConnectionRecoveryManager.executeStmt(ConnectionRecoveryManager.java:261)
> at
> org.apache.jackrabbit.core.persistence.bundle.util.ConnectionRecoveryManager.executeStmt(ConnectionRecoveryManager.java:239)
> at
> org.apache.jackrabbit.core.persistence.bundle.BundleDbPersistenceManager.storeBundle(BundleDbPersistenceManager.java:1209)
> at
> org.apache.jackrabbit.core.persistence.bundle.AbstractBundlePersistenceManager.putBundle(AbstractBundlePersistenceManager.java:709)
> at
> org.apache.jackrabbit.core.persistence.bundle.AbstractBundlePersistenceManager.storeInternal(AbstractBundlePersistenceManager.java:651)
> at
> org.apache.jackrabbit.core.persistence.bundle.AbstractBundlePersistenceManager.store(AbstractBundlePersistenceManager.java:527)
> at
> org.apache.jackrabbit.core.persistence.bundle.BundleDbPersistenceManager.store(BundleDbPersistenceManager.java:563)
> at
> org.apache.jackrabbit.core.state.SharedItemStateManager$Update.end(SharedItemStateManager.java:724)
> at
> org.apache.jackrabbit.core.state.SharedItemStateManager.update(SharedItemStateManager.java:1101)
> at
> org.apache.jackrabbit.core.state.LocalItemStateManager.update(LocalItemStateManager.java:351)
> at
> org.apache.jackrabbit.core.state.XAItemStateManager.update(XAItemStateManager.java:354)
> at
> org.apache.jackrabbit.core.state.LocalItemStateManager.update(LocalItemStateManager.java:326)
> at
> org.apache.jackrabbit.core.state.SessionItemStateManager.update(SessionItemStateManager.java:326)
> at org.apache.jackrabbit.core.ItemImpl.save(ItemImpl.java:1098)
> at org.apache.jackrabbit.core.SessionImpl.save(SessionImpl.java:925)
> at
> org.apache.jackrabbit.core.ConcurrentImportTest$1.execute(ConcurrentImportTest.java:73)
> at
> org.apache.jackrabbit.core.AbstractConcurrencyTest$Executor.run(AbstractConcurrencyTest.java:209)
> at java.lang.Thread.run(Thread.java:637)
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira