[ https://issues.apache.org/jira/browse/JCR-721?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Stefan Guggisberg resolved JCR-721.
-----------------------------------
Resolution: Fixed
martijn, thanks for the excellent and spot-on issue ananlysis, great job!
i fixed the issue, i.e. endless loop in DatabasePersistenceManager.store(ChangeLog), as suggested
in svn r508429.
i agree that it would be nice if a more descriptive exception would be thrown (e.g. StaleItemStateException).
unfortunately this would require a seperate select stmt for every property insert and therefore
negatively affect performance. i don't think it's worth it.
> Duplicate key in DatabasePersistenceManager
> -------------------------------------------
>
> Key: JCR-721
> URL: https://issues.apache.org/jira/browse/JCR-721
> Project: Jackrabbit
> Issue Type: Bug
> Components: core
> Affects Versions: 1.2.1
> Environment: JackRabbit 1.2.1 using the default Derby repository.xml.
> Reporter: Martijn Hendriks
> Assigned To: Stefan Guggisberg
> Attachments: Jcr721Test.java
>
>
> Hi,
> I ran into the exception pasted below. We had 2 threads that both were saving. Maybe
it is a race condition?
> Regards,
> Martijn Hendriks
> <GX> creative online development B.V.
>
> t: 024 - 3888 261
> f: 024 - 3888 621
> e: martijnh@gx.nl
>
> Wijchenseweg 111
> 6538 SW Nijmegen
> http://www.gx.nl/
> Jan 26, 2007 2:23:36 PM org.apache.jackrabbit.core.persistence.db.DatabasePersistenceManager
store
> SEVERE: failed to write property state: e3847bad-f1ee-4adb-a109-e134900935b7/{http://gx.nl}edit_language
> ERROR 23505: The statement was aborted because it would have caused a duplicate key value
in a unique or primary key constraint or unique in dex identified by 'DEFAULT_PROP_IDX' defined
on 'DEFAULT_PROP'.
> 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.db.DatabasePersistenceManager.executeStmt(DatabasePersistenceManager.java:835)
> at org.apache.jackrabbit.core.persistence.db.DatabasePersistenceManager.store(DatabasePersistenceManager.java:466)
> at org.apache.jackrabbit.core.persistence.AbstractPersistenceManager.store(AbstractPersistenceManager.java:75)
> at org.apache.jackrabbit.core.persistence.db.DatabasePersistenceManager.store(DatabasePersistenceManager.java:274)
> at org.apache.jackrabbit.core.state.SharedItemStateManager$Update.end(SharedItemStateManager.java:675)
> at org.apache.jackrabbit.core.state.SharedItemStateManager.update(SharedItemStateManager.java:808)
> at org.apache.jackrabbit.core.state.LocalItemStateManager.update(LocalItemStateManager.java:326)
> at org.apache.jackrabbit.core.state.XAItemStateManager.update(XAItemStateManager.java:313)
> at org.apache.jackrabbit.core.state.LocalItemStateManager.update(LocalItemStateManager.java:302)
> at org.apache.jackrabbit.core.state.SessionItemStateManager.update(SessionItemStateManager.java:295)
> at org.apache.jackrabbit.core.ItemImpl.save(ItemImpl.java:1210)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
|