Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » EMF » [EMF] [CDO] ConcurrentModificationException when setting setTrackingModification(true)(Problem with CDOResource)
[EMF] [CDO] ConcurrentModificationException when setting setTrackingModification(true) [message #1223430] Mon, 23 December 2013 11:04 Go to next message
Leonid Ripeynih is currently offline Leonid RipeynihFriend
Messages: 110
Registered: February 2012
Senior Member
When trying to use graphiti with CDO (4.2.0) i've run into a following problem: calling setTrackingModification(true) on diagram resource immediately results in java.util.ConcurrentModificationException.

Here is the stack trace:

java.util.ConcurrentModificationException
 at java.util.HashMap$HashIterator.nextEntry(HashMap.java:793)
 at java.util.HashMap$EntryIterator.next(HashMap.java:834)
 at java.util.HashMap$EntryIterator.next(HashMap.java:832)
 at org.eclipse.net4j.util.ref.ReferenceValueMap2$EntrySetIterator.hasNext(ReferenceValueMap2.java:408)
 at java.util.AbstractMap$2$1.hasNext(AbstractMap.java:356)
 at java.util.Collections$UnmodifiableCollection$1.hasNext(Collections.java:1007)
 at org.eclipse.emf.cdo.util.CDOLazyContentAdapter.addCleanObjectHandler(CDOLazyContentAdapter.java:123)
 at org.eclipse.emf.cdo.util.CDOLazyContentAdapter.setTarget(CDOLazyContentAdapter.java:61)
 at org.eclipse.emf.ecore.util.EContentAdapter.setTarget(EContentAdapter.java:182)
 at org.eclipse.emf.ecore.impl.MinimalEObjectImpl$1ArrayDelegatingAdapterList.didAdd(MinimalEObjectImpl.java:489)
 at org.eclipse.emf.ecore.impl.MinimalEObjectImpl$1ArrayDelegatingAdapterList.didAdd(MinimalEObjectImpl.java:1)
 at org.eclipse.emf.common.util.ArrayDelegatingEList.addUnique(ArrayDelegatingEList.java:389)
 at org.eclipse.emf.common.util.AbstractEList.add(AbstractEList.java:301)
 at org.eclipse.emf.cdo.eresource.impl.CDOResourceImpl.setTrackingModification(CDOResourceImpl.java:499)


Is there anything im doing wrong?
Re: [EMF] [CDO] ConcurrentModificationException when setting setTrackingModification(true) [message #1226979 is a reply to message #1223430] Fri, 03 January 2014 07:59 Go to previous messageGo to next message
Eike Stepper is currently offline Eike StepperFriend
Messages: 5588
Registered: July 2009
Senior Member
Hi Leonid,

I also experience this problem recently and I was about to commit a simple fix for it. But then I looked at
CDOLazyContentAdapter a little bit longer and thought it should be reimplemented from scratch without extending
EContentAdapter. If you want me to fix the ConcurrentModificationException separately, please submit a bugzilla and I'll
look at it.

Cheers
/Eike

----
http://www.esc-net.de
http://thegordian.blogspot.com
http://twitter.com/eikestepper



Am 23.12.2013 12:04, schrieb Leonid Ripeynih:
> When trying to use graphiti with CDO (4.2.0) i've run into a following problem: calling setTrackingModification(true)
> on diagram resource immediately results in java.util.ConcurrentModificationException.
>
> Here is the stack trace:
>
>
> java.util.ConcurrentModificationException
> at java.util.HashMap$HashIterator.nextEntry(HashMap.java:793)
> at java.util.HashMap$EntryIterator.next(HashMap.java:834)
> at java.util.HashMap$EntryIterator.next(HashMap.java:832)
> at org.eclipse.net4j.util.ref.ReferenceValueMap2$EntrySetIterator.hasNext(ReferenceValueMap2.java:408)
> at java.util.AbstractMap$2$1.hasNext(AbstractMap.java:356)
> at java.util.Collections$UnmodifiableCollection$1.hasNext(Collections.java:1007)
> at org.eclipse.emf.cdo.util.CDOLazyContentAdapter.addCleanObjectHandler(CDOLazyContentAdapter.java:123)
> at org.eclipse.emf.cdo.util.CDOLazyContentAdapter.setTarget(CDOLazyContentAdapter.java:61)
> at org.eclipse.emf.ecore.util.EContentAdapter.setTarget(EContentAdapter.java:182)
> at org.eclipse.emf.ecore.impl.MinimalEObjectImpl$1ArrayDelegatingAdapterList.didAdd(MinimalEObjectImpl.java:489)
> at org.eclipse.emf.ecore.impl.MinimalEObjectImpl$1ArrayDelegatingAdapterList.didAdd(MinimalEObjectImpl.java:1)
> at org.eclipse.emf.common.util.ArrayDelegatingEList.addUnique(ArrayDelegatingEList.java:389)
> at org.eclipse.emf.common.util.AbstractEList.add(AbstractEList.java:301)
> at org.eclipse.emf.cdo.eresource.impl.CDOResourceImpl.setTrackingModification(CDOResourceImpl.java:499)
>
>
> Is there anything im doing wrong?
Re: [EMF] [CDO] ConcurrentModificationException when setting setTrackingModification(true) [message #1227050 is a reply to message #1226979] Fri, 03 January 2014 11:43 Go to previous messageGo to next message
Christophe Bouhier is currently offline Christophe BouhierFriend
Messages: 937
Registered: July 2009
Senior Member
On 03-01-14 08:59, Eike Stepper wrote:
> Hi Leonid,
>
> I also experience this problem recently and I was about to commit a
> simple fix for it. But then I looked at CDOLazyContentAdapter a little
> bit longer and thought it should be reimplemented from scratch without
> extending EContentAdapter. If you want me to fix the
> ConcurrentModificationException separately, please submit a bugzilla and
Yes this is a known issue with the CDOLazyContentAdapter.
I reported this bug here:

https://bugs.eclipse.org/bugs/show_bug.cgi?id=399723

I spend quiet some time using the CDOLazyContentAdapter and trying
to change it so it can deal with anything else than a Resource as a
root. My conclusion, it's very broken..and indeed needs to be redone.
The root cause of the concurrentmod, is that walking an object (For
example to check containment, will trigger objects to be loaded, which
will update the ObjectHandler and fire concurrentmod exception.


> I'll look at it.
>
> Cheers
> /Eike
>
> ----
> http://www.esc-net.de
> http://thegordian.blogspot.com
> http://twitter.com/eikestepper
>
>
>
> Am 23.12.2013 12:04, schrieb Leonid Ripeynih:
>> When trying to use graphiti with CDO (4.2.0) i've run into a following
>> problem: calling setTrackingModification(true) on diagram resource
>> immediately results in java.util.ConcurrentModificationException.
>>
>> Here is the stack trace:
>>
>>
>> java.util.ConcurrentModificationException
>> at java.util.HashMap$HashIterator.nextEntry(HashMap.java:793)
>> at java.util.HashMap$EntryIterator.next(HashMap.java:834)
>> at java.util.HashMap$EntryIterator.next(HashMap.java:832)
>> at
>> org.eclipse.net4j.util.ref.ReferenceValueMap2$EntrySetIterator.hasNext(ReferenceValueMap2.java:408)
>>
>> at java.util.AbstractMap$2$1.hasNext(AbstractMap.java:356)
>> at
>> java.util.Collections$UnmodifiableCollection$1.hasNext(Collections.java:1007)
>>
>> at
>> org.eclipse.emf.cdo.util.CDOLazyContentAdapter.addCleanObjectHandler(CDOLazyContentAdapter.java:123)
>>
>> at
>> org.eclipse.emf.cdo.util.CDOLazyContentAdapter.setTarget(CDOLazyContentAdapter.java:61)
>>
>> at
>> org.eclipse.emf.ecore.util.EContentAdapter.setTarget(EContentAdapter.java:182)
>>
>> at
>> org.eclipse.emf.ecore.impl.MinimalEObjectImpl$1ArrayDelegatingAdapterList.didAdd(MinimalEObjectImpl.java:489)
>>
>> at
>> org.eclipse.emf.ecore.impl.MinimalEObjectImpl$1ArrayDelegatingAdapterList.didAdd(MinimalEObjectImpl.java:1)
>>
>> at
>> org.eclipse.emf.common.util.ArrayDelegatingEList.addUnique(ArrayDelegatingEList.java:389)
>>
>> at org.eclipse.emf.common.util.AbstractEList.add(AbstractEList.java:301)
>> at
>> org.eclipse.emf.cdo.eresource.impl.CDOResourceImpl.setTrackingModification(CDOResourceImpl.java:499)
>>
>>
>>
>> Is there anything im doing wrong?
>
Re: [EMF] [CDO] ConcurrentModificationException when setting setTrackingModification(true) [message #1227372 is a reply to message #1227050] Sat, 04 January 2014 09:32 Go to previous messageGo to next message
Eike Stepper is currently offline Eike StepperFriend
Messages: 5588
Registered: July 2009
Senior Member
Am 03.01.2014 12:43, schrieb Christophe Bouhier:
> On 03-01-14 08:59, Eike Stepper wrote:
>> Hi Leonid,
>>
>> I also experience this problem recently and I was about to commit a
>> simple fix for it. But then I looked at CDOLazyContentAdapter a little
>> bit longer and thought it should be reimplemented from scratch without
>> extending EContentAdapter. If you want me to fix the
>> ConcurrentModificationException separately, please submit a bugzilla and
> Yes this is a known issue with the CDOLazyContentAdapter.
> I reported this bug here:
>
> https://bugs.eclipse.org/bugs/show_bug.cgi?id=399723
That bug is more like an umbrella bug. I've now fixed the ConcurrentModificationException via:

424889: ConcurrentModificationException in CDOLazyContentAdapter
https://bugs.eclipse.org/bugs/show_bug.cgi?id=424889

Cheers
/Eike

----
http://www.esc-net.de
http://thegordian.blogspot.com
http://twitter.com/eikestepper


>
> I spend quiet some time using the CDOLazyContentAdapter and trying
> to change it so it can deal with anything else than a Resource as a root. My conclusion, it's very broken..and indeed
> needs to be redone.
> The root cause of the concurrentmod, is that walking an object (For example to check containment, will trigger objects
> to be loaded, which will update the ObjectHandler and fire concurrentmod exception.
>
>
>> I'll look at it.
>>
>> Cheers
>> /Eike
>>
>> ----
>> http://www.esc-net.de
>> http://thegordian.blogspot.com
>> http://twitter.com/eikestepper
>>
>>
>>
>> Am 23.12.2013 12:04, schrieb Leonid Ripeynih:
>>> When trying to use graphiti with CDO (4.2.0) i've run into a following
>>> problem: calling setTrackingModification(true) on diagram resource
>>> immediately results in java.util.ConcurrentModificationException.
>>>
>>> Here is the stack trace:
>>>
>>>
>>> java.util.ConcurrentModificationException
>>> at java.util.HashMap$HashIterator.nextEntry(HashMap.java:793)
>>> at java.util.HashMap$EntryIterator.next(HashMap.java:834)
>>> at java.util.HashMap$EntryIterator.next(HashMap.java:832)
>>> at
>>> org.eclipse.net4j.util.ref.ReferenceValueMap2$EntrySetIterator.hasNext(ReferenceValueMap2.java:408)
>>>
>>> at java.util.AbstractMap$2$1.hasNext(AbstractMap.java:356)
>>> at
>>> java.util.Collections$UnmodifiableCollection$1.hasNext(Collections.java:1007)
>>>
>>> at
>>> org.eclipse.emf.cdo.util.CDOLazyContentAdapter.addCleanObjectHandler(CDOLazyContentAdapter.java:123)
>>>
>>> at
>>> org.eclipse.emf.cdo.util.CDOLazyContentAdapter.setTarget(CDOLazyContentAdapter.java:61)
>>>
>>> at
>>> org.eclipse.emf.ecore.util.EContentAdapter.setTarget(EContentAdapter.java:182)
>>>
>>> at
>>> org.eclipse.emf.ecore.impl.MinimalEObjectImpl$1ArrayDelegatingAdapterList.didAdd(MinimalEObjectImpl.java:489)
>>>
>>> at
>>> org.eclipse.emf.ecore.impl.MinimalEObjectImpl$1ArrayDelegatingAdapterList.didAdd(MinimalEObjectImpl.java:1)
>>>
>>> at
>>> org.eclipse.emf.common.util.ArrayDelegatingEList.addUnique(ArrayDelegatingEList.java:389)
>>>
>>> at org.eclipse.emf.common.util.AbstractEList.add(AbstractEList.java:301)
>>> at
>>> org.eclipse.emf.cdo.eresource.impl.CDOResourceImpl.setTrackingModification(CDOResourceImpl.java:499)
>>>
>>>
>>>
>>> Is there anything im doing wrong?
>>
>
Re: [EMF] [CDO] ConcurrentModificationException when setting setTrackingModification(true) [message #1230955 is a reply to message #1223430] Mon, 13 January 2014 12:57 Go to previous messageGo to next message
Leonid Ripeynih is currently offline Leonid RipeynihFriend
Messages: 110
Registered: February 2012
Senior Member
Eike, after applying the fix, error has changed to:

java.lang.IllegalStateException: Different object was registered for OID3693
 at org.eclipse.emf.internal.cdo.view.AbstractCDOView.registerObject(AbstractCDOView.java:1324)
 at org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject(AbstractCDOView.java:923)
 at org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl.getObject(CDOTransactionImpl.java:1150)
 at org.eclipse.emf.internal.cdo.view.AbstractCDOView.convertIDToObject(AbstractCDOView.java:1255)
 at org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertIDToObject(CDOStoreImpl.java:702)
 at org.eclipse.emf.internal.cdo.view.CDOStoreImpl.getContainer(CDOStoreImpl.java:129)
 at org.eclipse.emf.internal.cdo.CDOObjectImpl.eInternalContainer(CDOObjectImpl.java:707)
 at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eInternalResource(BasicEObjectImpl.java:929)
 at org.eclipse.emf.internal.cdo.CDOObjectImpl.eInternalResource(CDOObjectImpl.java:581)
 at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eResource(BasicEObjectImpl.java:920)
 at org.eclipse.emf.internal.cdo.CDOObjectImpl.cdoResource(CDOObjectImpl.java:166)
 at org.eclipse.emf.cdo.util.CDOLazyContentAdapter.isContained(CDOLazyContentAdapter.java:208)
 at org.eclipse.emf.cdo.util.CDOLazyContentAdapter.addCleanObjectHandler(CDOLazyContentAdapter.java:124)
 at org.eclipse.emf.cdo.util.CDOLazyContentAdapter.setTarget(CDOLazyContentAdapter.java:60)
 at org.eclipse.emf.ecore.util.EContentAdapter.setTarget(EContentAdapter.java:182)
 at org.eclipse.emf.ecore.impl.MinimalEObjectImpl$1ArrayDelegatingAdapterList.didAdd(MinimalEObjectImpl.java:489)
 at org.eclipse.emf.ecore.impl.MinimalEObjectImpl$1ArrayDelegatingAdapterList.didAdd(MinimalEObjectImpl.java:1)
 at org.eclipse.emf.common.util.ArrayDelegatingEList.addUnique(ArrayDelegatingEList.java:389)
 at org.eclipse.emf.common.util.AbstractEList.add(AbstractEList.java:301)
 at org.eclipse.emf.cdo.eresource.impl.CDOResourceImpl.setTrackingModification(CDOResourceImpl.java:499)


Don't you know, what can it be?
Re: [EMF] [CDO] ConcurrentModificationException when setting setTrackingModification(true) [message #1242235 is a reply to message #1230955] Sun, 09 February 2014 07:35 Go to previous message
Eike Stepper is currently offline Eike StepperFriend
Messages: 5588
Registered: July 2009
Senior Member
Am 13.01.2014 13:57, schrieb Leonid Ripeynih:
> Eike, after applying the fix, error has changed to:
>
>
> java.lang.IllegalStateException: Different object was registered for OID3693
> at org.eclipse.emf.internal.cdo.view.AbstractCDOView.registerObject(AbstractCDOView.java:1324)
> at org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject(AbstractCDOView.java:923)
> at org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl.getObject(CDOTransactionImpl.java:1150)
> at org.eclipse.emf.internal.cdo.view.AbstractCDOView.convertIDToObject(AbstractCDOView.java:1255)
> at org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertIDToObject(CDOStoreImpl.java:702)
> at org.eclipse.emf.internal.cdo.view.CDOStoreImpl.getContainer(CDOStoreImpl.java:129)
> at org.eclipse.emf.internal.cdo.CDOObjectImpl.eInternalContainer(CDOObjectImpl.java:707)
> at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eInternalResource(BasicEObjectImpl.java:929)
> at org.eclipse.emf.internal.cdo.CDOObjectImpl.eInternalResource(CDOObjectImpl.java:581)
> at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eResource(BasicEObjectImpl.java:920)
> at org.eclipse.emf.internal.cdo.CDOObjectImpl.cdoResource(CDOObjectImpl.java:166)
> at org.eclipse.emf.cdo.util.CDOLazyContentAdapter.isContained(CDOLazyContentAdapter.java:208)
> at org.eclipse.emf.cdo.util.CDOLazyContentAdapter.addCleanObjectHandler(CDOLazyContentAdapter.java:124)
> at org.eclipse.emf.cdo.util.CDOLazyContentAdapter.setTarget(CDOLazyContentAdapter.java:60)
> at org.eclipse.emf.ecore.util.EContentAdapter.setTarget(EContentAdapter.java:182)
> at org.eclipse.emf.ecore.impl.MinimalEObjectImpl$1ArrayDelegatingAdapterList.didAdd(MinimalEObjectImpl.java:489)
> at org.eclipse.emf.ecore.impl.MinimalEObjectImpl$1ArrayDelegatingAdapterList.didAdd(MinimalEObjectImpl.java:1)
> at org.eclipse.emf.common.util.ArrayDelegatingEList.addUnique(ArrayDelegatingEList.java:389)
> at org.eclipse.emf.common.util.AbstractEList.add(AbstractEList.java:301)
> at org.eclipse.emf.cdo.eresource.impl.CDOResourceImpl.setTrackingModification(CDOResourceImpl.java:499)
I've added this stacktrace to https://bugs.eclipse.org/bugs/show_bug.cgi?id=424889

Cheers
/Eike

----
http://www.esc-net.de
http://thegordian.blogspot.com
http://twitter.com/eikestepper
Previous Topic:how to create a CDO repository
Next Topic:[CDO] Can different idGenerationLocations be used on a same server ?
Goto Forum:
  


Current Time: Fri Dec 19 17:38:48 GMT 2014

Powered by FUDForum. Page generated in 0.02376 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software