[ 
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

        

Reply via email to