Issue Details (XML | Word | Printable)

Key: JCR-754
Type: Bug Bug
Status: Closed Closed
Resolution: Duplicate
Priority: Blocker Blocker
Assignee: Jukka Zitting
Reporter: Andrzej Dengusiak
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
Jackrabbit Content Repository

Exception when concurrently adding nodes with JCA and XA transactions

Created: 20/Feb/07 11:48 AM   Updated: 08/Aug/07 06:58 AM
Return to search
Component/s: jackrabbit-core, jackrabbit-jca, transactions, versioning
Affects Version/s: 1.2.1
Fix Version/s: None

Time Tracking:
Not Specified

File Attachments:
  Size
Zip Archive dms_test_case.zip 2007-02-20 11:55 AM Andrzej Dengusiak 9.50 MB
Environment: JBoss 4.0.3SP1, Java 1.4.2_12-b03,
Issue Links:
Reference
 

Resolution Date: 09/Mar/07 09:03 AM


 Description  « Hide
We're using Jackrabbit 1.2.1 with JCA, versioning and XA transactions on JBoss 4.0.3SP1.
Everything works fine as long as there is only one user accessing repository and adding nodes at a given time.
But sometimes if there are more users concurrently adding nodes under the same node, following error occurs:

2007-02-16 17:39:30,545 INFO [STDOUT] Caused by: javax.jcr.RepositoryException: 14fad421-1276-47b2-b667-50b2013944e3: 14fad421-1276-47b2-b667-50b2013944e3
2007-02-16 17:39:30,545 INFO [STDOUT] at org.apache.jackrabbit.core.version.NodeStateEx.store(NodeStateEx.java:504)
2007-02-16 17:39:30,595 INFO [STDOUT] at org.apache.jackrabbit.core.version.AbstractVersionManager.createVersionHistory(AbstractVersionManager.java:306)
2007-02-16 17:39:30,595 INFO [STDOUT] at org.apache.jackrabbit.core.version.XAVersionManager.createVersionHistory(XAVersionManager.java:144)
2007-02-16 17:39:30,595 INFO [STDOUT] at org.apache.jackrabbit.core.ItemImpl.initVersionHistories(ItemImpl.java:771)
2007-02-16 17:39:30,595 INFO [STDOUT] at org.apache.jackrabbit.core.ItemImpl.save(ItemImpl.java:1181)
2007-02-16 17:39:30,595 INFO [STDOUT] at org.apache.jackrabbit.core.SessionImpl.save(SessionImpl.java:821)
2007-02-16 17:39:30,595 INFO [STDOUT] at org.apache.jackrabbit.jca.JCASessionHandle.save(JCASessionHandle.java:178)
2007-02-16 17:39:30,595 INFO [STDOUT] at xxx.dms.helpers.DmsHelper.saveSession(DmsHelper.java:131)
2007-02-16 17:39:30,595 INFO [STDOUT] at xxx.dms.ejb.DmsSessionBean.addDocumentMetadata(DmsSessionBean.java:173)
2007-02-16 17:39:30,595 INFO [STDOUT] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2007-02-16 17:39:30,595 INFO [STDOUT] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
2007-02-16 17:39:30,595 INFO [STDOUT] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
2007-02-16 17:39:30,595 INFO [STDOUT] at java.lang.reflect.Method.invoke(Method.java:324)
2007-02-16 17:39:30,595 INFO [STDOUT] at org.jboss.invocation.Invocation.performCall(Invocation.java:359)
2007-02-16 17:39:30,595 INFO [STDOUT] at org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(StatelessSessionContainer.java:237)
2007-02-16 17:39:30,595 INFO [STDOUT] at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:158)
2007-02-16 17:39:30,595 INFO [STDOUT] at org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSessionInstanceInterceptor.java:169)
2007-02-16 17:39:30,595 INFO [STDOUT] at org.jboss.ws.server.ServiceEndpointInterceptor.invoke(ServiceEndpointInterceptor.java:64)
2007-02-16 17:39:30,595 INFO [STDOUT] at org.jboss.ejb.plugins.CallValidationInterceptor.invoke(CallValidationInterceptor.java:63)
2007-02-16 17:39:30,655 INFO [STDOUT] at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:121)
2007-02-16 17:39:30,655 INFO [STDOUT] at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:350)
2007-02-16 17:39:30,655 INFO [STDOUT] at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:181)
2007-02-16 17:39:30,655 INFO [STDOUT] at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:168)
2007-02-16 17:39:30,655 INFO [STDOUT] at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:205)
2007-02-16 17:39:30,655 INFO [STDOUT] at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:136)
2007-02-16 17:39:30,655 INFO [STDOUT] at org.jboss.ejb.SessionContainer.internalInvoke(SessionContainer.java:648)
2007-02-16 17:39:30,655 INFO [STDOUT] at org.jboss.ejb.Container.invoke(Container.java:954)
2007-02-16 17:39:30,655 INFO [STDOUT] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2007-02-16 17:39:30,655 INFO [STDOUT] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
2007-02-16 17:39:30,655 INFO [STDOUT] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
2007-02-16 17:39:30,655 INFO [STDOUT] at java.lang.reflect.Method.invoke(Method.java:324)
2007-02-16 17:39:30,665 INFO [STDOUT] at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
2007-02-16 17:39:30,665 INFO [STDOUT] at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
2007-02-16 17:39:30,665 INFO [STDOUT] at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
2007-02-16 17:39:30,665 INFO [STDOUT] at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
2007-02-16 17:39:30,665 INFO [STDOUT] at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
2007-02-16 17:39:30,665 INFO [STDOUT] at org.jboss.invocation.jrmp.server.JRMPInvoker$MBeanServerAction.invoke(JRMPInvoker.java:819)
2007-02-16 17:39:30,715 INFO [STDOUT] at org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:420)
2007-02-16 17:39:30,715 INFO [STDOUT] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2007-02-16 17:39:30,715 INFO [STDOUT] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
2007-02-16 17:39:30,715 INFO [STDOUT] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
2007-02-16 17:39:30,715 INFO [STDOUT] at java.lang.reflect.Method.invoke(Method.java:324)
2007-02-16 17:39:30,715 INFO [STDOUT] at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:261)
2007-02-16 17:39:30,715 INFO [STDOUT] at sun.rmi.transport.Transport$1.run(Transport.java:148)
2007-02-16 17:39:30,715 INFO [STDOUT] at java.security.AccessController.doPrivileged(Native Method)
2007-02-16 17:39:30,715 INFO [STDOUT] at sun.rmi.transport.Transport.serviceCall(Transport.java:144)
2007-02-16 17:39:30,715 INFO [STDOUT] at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460)
2007-02-16 17:39:30,715 INFO [STDOUT] at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701)
2007-02-16 17:39:30,715 INFO [STDOUT] ... 1 more
2007-02-16 17:39:30,715 INFO [STDOUT] Caused by: org.apache.jackrabbit.core.state.NoSuchItemStateException: 14fad421-1276-47b2-b667-50b2013944e3
2007-02-16 17:39:30,715 INFO [STDOUT] at org.apache.jackrabbit.core.state.SharedItemStateManager.getItemState(SharedItemStateManager.java:261)
2007-02-16 17:39:30,715 INFO [STDOUT] at org.apache.jackrabbit.core.state.LocalItemStateManager.getNodeState(LocalItemStateManager.java:95)
2007-02-16 17:39:30,715 INFO [STDOUT] at org.apache.jackrabbit.core.state.LocalItemStateManager.getItemState(LocalItemStateManager.java:150)
2007-02-16 17:39:30,715 INFO [STDOUT] at org.apache.jackrabbit.core.state.XAItemStateManager.getItemState(XAItemStateManager.java:226)
2007-02-16 17:39:30,715 INFO [STDOUT] at org.apache.jackrabbit.core.version.NodeStateEx.store(NodeStateEx.java:532)
2007-02-16 17:39:30,715 INFO [STDOUT] at org.apache.jackrabbit.core.version.NodeStateEx.store(NodeStateEx.java:502)
2007-02-16 17:39:30,775 INFO [STDOUT] ... 48 more

Sometimes we get StaleItemStateException as well.

We're using org.apache.jackrabbit.core.fs.local.LocalFileSystem
and org.apache.jackrabbit.core.persistence.db.OraclePersistenceManager with external BLOBs

This issue is blocking production use of Jackrabbit for us.

regards,
Andrzej Dengusiak, PB Polsoft


 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Andrzej Dengusiak added a comment - 20/Feb/07 11:55 AM
I'm attaching file containing EJB with a method adding nodes and other files for deployment on JBoss and a simple code running 20 threads running that EJB method concurrently.

Stefan Guggisberg added a comment - 21/Feb/07 01:26 PM
seems to be related to JCR-18

Jukka Zitting added a comment - 09/Mar/07 09:03 AM
Resolving as a duplicate of JCR-18.

Creating a mix:versionable node is a versioning operation, and needs to be explicitly synchronized since we still unfortunately don't support concurrent versioning.

The required synchronization can be achieved either with a JCR lock or with some external locking mechanism.