[
https://issues.apache.org/jira/browse/JCR-2272?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13109393#comment-13109393
]
Jukka Zitting commented on JCR-2272:
------------------------------------
There's a pretty nasty case of an IllegalStateException (a RuntimeException)
being thrown by ItemState.connect() when it detects an inconsistency caused by
this problem. To make such issues more visible and easier to catch I changed
the exception to an ItemStateException in revision 1173558 of the JCR-2272
branch.
One very troublesome effect of that exception is that it can cause a repository
deadlock since the cluster lock never gets released in SISM.Update.end() when
the exception gets thrown from within the ChangeLog.persisted() call. I'll look
into making the cluster lock handling more robust (move the unlocking to a
finally block) before digging deeper into this consistency problem.
> 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