Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 334659

Summary: Reoccurring ConcurrentModificationExceptions at commits of 1 transaction at the time.
Product: [Modeling] EMF Reporter: Wim Bast <wim.bast>
Component: cdo.coreAssignee: Eike Stepper <stepper>
Status: CLOSED DUPLICATE QA Contact: Eike Stepper <stepper>
Severity: normal    
Priority: P3    
Version: 4.0   
Target Milestone: ---   
Hardware: All   
OS: All   
Whiteboard:

Description Wim Bast CLA 2011-01-18 10:28:37 EST
Build Identifier: 4.0

Exception:

       java.util.ConcurrentModificationException: Attempt by Transaction[43:1] to modify historical revision: Blob@OID20383 <mailto:Blob@OID20383 <mailto:Blob@OID20383>>:0v112
       org.eclipse.net4j.signal.RemoteException: java.util.ConcurrentModificationException: Attempt by Transaction[43:1] to modify historical revision: Blob@OID20383 <mailto:Blob@OID20383 <mailto:Blob@OID20383>>:0v112


       at org.eclipse.net4j.signal.RequestWithConfirmation.setRemoteException(RequestWithConfirmation.java:128)
       at org.eclipse.net4j.signal.SignalProtocol.handleRemoteException(SignalProtocol.java:423)
       at org.eclipse.net4j.signal.RemoteExceptionIndication.indicating(RemoteExceptionIndication.java:63)
       at org.eclipse.net4j.signal.Indication.doExtendedInput(Indication.java:55)
       at org.eclipse.net4j.signal.Signal.doInput(Signal.java:316)
       at org.eclipse.net4j.signal.Indication.execute(Indication.java:49)
       at org.eclipse.net4j.signal.Signal.runSync(Signal.java:241)
       at org.eclipse.net4j.signal.Signal.run(Signal.java:147)
       at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
       at java.lang.Thread.run(Unknown Source)
       Caused by: java.util.ConcurrentModificationException: Attempt by Transaction[43:1] to modify historical revision: Blob@OID20383 <mailto:Blob@OID20383 <mailto:Blob@OID20383>>:0v112


       at org.eclipse.emf.cdo.internal.server.TransactionCommitContext.computeDirtyObject(TransactionCommitContext.java:871)
       at org.eclipse.emf.cdo.internal.server.TransactionCommitContext.computeDirtyObjects(TransactionCommitContext.java:841)
       at org.eclipse.emf.cdo.internal.server.TransactionCommitContext.write(TransactionCommitContext.java:381)
       at org.eclipse.emf.cdo.spi.server.InternalCommitContext$1.runLoop(InternalCommitContext.java:40)
       at org.eclipse.emf.cdo.spi.server.InternalCommitContext$1.runLoop(InternalCommitContext.java:1)
       at org.eclipse.net4j.util.om.monitor.ProgressDistributor.run(ProgressDistributor.java:96)
       at org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTransactionIndication.indicatingCommit(CommitTransactionIndication.java:231)
       at org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTransactionIndication.indicating(CommitTransactionIndication.java:88)
       at org.eclipse.emf.cdo.server.internal.net4j.protocol.CDOServerIndicationWithMonitoring.indicating(CDOServerIndicationWithMonitoring.java:109)
       at org.eclipse.net4j.signal.IndicationWithMonitoring.indicating(IndicationWithMonitoring.java:84)
       at org.eclipse.net4j.signal.IndicationWithResponse.doExtendedInput(IndicationWithResponse.java:90)
       at org.eclipse.net4j.signal.Signal.doInput(Signal.java:316)
       at org.eclipse.net4j.signal.IndicationWithResponse.execute(IndicationWithResponse.java:63)
       at org.eclipse.net4j.signal.IndicationWithMonitoring.execute(IndicationWithMonitoring.java:63)
       at org.eclipse.net4j.signal.Signal.runSync(Signal.java:241)
       at org.eclipse.net4j.signal.Signal.run(Signal.java:147)
       at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:898)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:920)
       at java.lang.Thread.run(Thread.java:736)

Reproducible: Always

Steps to Reproduce:
1. Commit 2 updates to the same CDOObject within 2 transactions (nearly) at the same time. No locking is used.
2. Handle the exception by rolling back the transaction.
3. Keep both transactions open and try to make a change and commit it again.
4. ConcurrentModificationExceptions will keep occurring: Even if changes are made and committed within only 1 of the 2 transactions.
Comment 1 Eike Stepper CLA 2011-01-25 13:57:41 EST
Duplicate of bug 329254

*** This bug has been marked as a duplicate of bug 329254 ***