CDO Concurrent Modfiication Exception [message #1761211] |
Mon, 08 May 2017 21:48  |
Eclipse User |
|
|
|
I've been developing an application using EMF, CDO, RAP/E4.
When a view part is displayed it opens a cdo transaction, and performs jface databinding between the widgets and the objects retrieved from the transaction.
A session listener is used to receive notification of changes by other clients. On such an event, the transaction in the view part is rolled back. The decision was that which ever client commits first wins and other clients will rollback rather than deal with merging.
Occasionally I observe the stracktrace beneath indicating concurrent modification, but I have had difficulty generating the error in a repeatable manner, making it rather difficult to pin down. It happens in perhaps 1/20 commits. Has anyone seen this before?
At first I thought perhaps the issue was accessing the shared transaction object possibly from multiple threads, but it sounds like CDOTransaction objects are generally thread safe. I would appreciate any advice.
Would I be correct to assume this error is being thrown on the CDO Server side and not the client side?
I'm using CDO 4.5.0.v20160607-1254
Thanks!
java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextNode(Unknown Source)
at java.util.HashMap$KeyIterator.next(Unknown Source)
at java.util.Collections$UnmodifiableCollection$1.next(Unknown Source)
at org.eclipse.emf.cdo.common.lock.CDOLockUtil.createLockState(CDOLockUtil.java:67)
at org.eclipse.emf.cdo.internal.server.Repository.toCDOLockStates(Repository.java:1832)
at org.eclipse.emf.cdo.internal.server.Repository.lock(Repository.java:1773)
at org.eclipse.emf.cdo.internal.server.Repository.lock(Repository.java:1727)
at org.eclipse.emf.cdo.server.internal.net4j.protocol.LockObjectsIndication.indicating(LockObjectsIndication.java:66)
at org.eclipse.emf.cdo.server.internal.net4j.protocol.CDOServerIndication.indicating(CDOServerIndication.java:107)
at org.eclipse.net4j.signal.IndicationWithResponse.doExtendedInput(IndicationWithResponse.java:100)
at org.eclipse.net4j.signal.Signal.doInput(Signal.java:377)
at org.eclipse.net4j.signal.IndicationWithResponse.execute(IndicationWithResponse.java:73)
at org.eclipse.emf.cdo.server.internal.net4j.protocol.CDOServerWriteIndication.execute(CDOServerWriteIndication.java:39)
at org.eclipse.net4j.signal.Signal.runSync(Signal.java:283)
at org.eclipse.net4j.signal.Signal.run(Signal.java:162)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
|
|
|
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.03590 seconds