Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » EMF » [CDO] Failing event PREPARE in state CLEAN : state machine issue with legacy mode
[CDO] Failing event PREPARE in state CLEAN : state machine issue with legacy mode [message #696981] Fri, 15 July 2011 08:48 Go to next message
Alex Lagarde is currently offline Alex LagardeFriend
Messages: 193
Registered: May 2010
Senior Member

Hi everyone !

I'm experimenting some difficulties with CDO Legacy mode :
I've got an element A containing an element B.


When a user U1 creates several instances of A (containing instances of
B) and commits,
then the user U2 gets the following error :

java.lang.IllegalStateException: Failing event PREPARE in state CLEAN 
for CDOLegacyWrapper[SquareSpec@OID701] (data=Pair[Transaction 1 [MAIN], 
[]])
at 
org.eclipse.net4j.util.fsm.FiniteStateMachine.process(FiniteStateMachine.java:153)
at 
org.eclipse.emf.internal.cdo.view.CDOStateMachine.prepare(CDOStateMachine.java:215)
at 
org.eclipse.emf.internal.cdo.view.CDOStateMachine.attach(CDOStateMachine.java:185)
at 
org.eclipse.emf.cdo.eresource.impl.CDOResourceImpl.attached(CDOResourceImpl.java:1217)
at 
org.eclipse.emf.cdo.eresource.impl.CDOResourceImpl.attached(CDOResourceImpl.java:1208)
at 
org.eclipse.emf.ecore.impl.BasicEObjectImpl.eBasicSetContainer(BasicEObjectImpl.java:1342)
at 
org.eclipse.emf.ecore.impl.BasicEObjectImpl.eInverseAdd(BasicEObjectImpl.java:1423)
at my.package.AImpl.setOwnedB(AImpl.java:434)
at my.package.AImpl.eSet(AImpl.java:713)
at 
org.eclipse.emf.ecore.impl.BasicEObjectImpl.eSet(BasicEObjectImpl.java:1081)
at 
org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstanceFeature(CDOLegacyWrapper.java:556)
at 
org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstance(CDOLegacyWrapper.java:403)
at 
org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.cdoInternalPostLoad(CDOLegacyWrapper.java:282)
at 
org.eclipse.emf.internal.cdo.view.AbstractCDOView.cleanObject(AbstractCDOView.java:859)
at 
org.eclipse.emf.internal.cdo.view.AbstractCDOView.createObject(AbstractCDOView.java:797)
at 
org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject(AbstractCDOView.java:693)
at 
org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl.getObject(CDOTransactionImpl.java:1023)
at 
org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl.getObject(CDOTransactionImpl.java:1)
at 
org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.getEObjectFromPotentialID(CDOLegacyWrapper.java:715)
at 
org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstanceContainer(CDOLegacyWrapper.java:437)
at 
org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstance(CDOLegacyWrapper.java:399)
at 
org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.cdoInternalPostLoad(CDOLegacyWrapper.java:282)
at 
org.eclipse.emf.internal.cdo.view.AbstractCDOView.cleanObject(AbstractCDOView.java:859)
at 
org.eclipse.emf.internal.cdo.view.AbstractCDOView.createObject(AbstractCDOView.java:797)
at 
org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject(AbstractCDOView.java:693)
at 
org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl.getObject(CDOTransactionImpl.java:1023)
at 
org.eclipse.emf.internal.cdo.view.AbstractCDOView.convertIDToObject(AbstractCDOView.java:1005)
at 
org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertIDToObject(CDOStoreImpl.java:660)
at 
org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertToEMF(CDOStoreImpl.java:628)
at org.eclipse.emf.internal.cdo.view.CDOStoreImpl.get(CDOStoreImpl.java:187)
at 
org.eclipse.emf.internal.cdo.view.CDOStoreImpl.isSet(CDOStoreImpl.java:219)
at 
org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstanceFeature(CDOLegacyWrapper.java:463)
at 
org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstance(CDOLegacyWrapper.java:403)
at 
org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.cdoInternalPostLoad(CDOLegacyWrapper.java:282)
at 
org.eclipse.emf.internal.cdo.view.AbstractCDOView.cleanObject(AbstractCDOView.java:859)
at 
org.eclipse.emf.internal.cdo.view.AbstractCDOView.createObject(AbstractCDOView.java:797)
at 
org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject(AbstractCDOView.java:693)
at 
org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl.getObject(CDOTransactionImpl.java:1023)
at 
org.eclipse.emf.internal.cdo.view.AbstractCDOView.convertIDToObject(AbstractCDOView.java:1005)
at 
org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertIDToObject(CDOStoreImpl.java:660)
at 
org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertToEMF(CDOStoreImpl.java:628)
at 
org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.getValueFromRevision(CDOLegacyWrapper.java:603)
at 
org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstanceFeature(CDOLegacyWrapper.java:487)
at 
org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstance(CDOLegacyWrapper.java:403)
at 
org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.cdoInternalPostLoad(CDOLegacyWrapper.java:282)
at 
org.eclipse.emf.internal.cdo.view.AbstractCDOView.cleanObject(AbstractCDOView.java:859)
at 
org.eclipse.emf.internal.cdo.view.AbstractCDOView.createObject(AbstractCDOView.java:797)
at 
org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject(AbstractCDOView.java:693)
at 
org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl.getObject(CDOTransactionImpl.java:1023)
at 
org.eclipse.emf.internal.cdo.view.AbstractCDOView.convertIDToObject(AbstractCDOView.java:1005)
at 
org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertIDToObject(CDOStoreImpl.java:660)
at 
org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertToEMF(CDOStoreImpl.java:628)
at 
org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.getValueFromRevision(CDOLegacyWrapper.java:603)
at 
org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstanceFeature(CDOLegacyWrapper.java:487)
at 
org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstance(CDOLegacyWrapper.java:403)
at 
org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.cdoInternalPostLoad(CDOLegacyWrapper.java:282)
at 
org.eclipse.emf.internal.cdo.view.AbstractCDOView.cleanObject(AbstractCDOView.java:859)
at 
org.eclipse.emf.internal.cdo.view.AbstractCDOView.createObject(AbstractCDOView.java:797)
at 
org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject(AbstractCDOView.java:693)
at 
org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl.getObject(CDOTransactionImpl.java:1023)
at 
org.eclipse.emf.internal.cdo.view.AbstractCDOView.convertIDToObject(AbstractCDOView.java:1005)
at 
org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertIDToObject(CDOStoreImpl.java:660)
at 
org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertToEMF(CDOStoreImpl.java:628)
at 
org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.getValueFromRevision(CDOLegacyWrapper.java:603)
at 
org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstanceFeature(CDOLegacyWrapper.java:501)
at 
org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstance(CDOLegacyWrapper.java:403)
at 
org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.cdoInternalPostLoad(CDOLegacyWrapper.java:282)
at 
org.eclipse.emf.internal.cdo.view.AbstractCDOView.cleanObject(AbstractCDOView.java:859)
at 
org.eclipse.emf.internal.cdo.view.AbstractCDOView.createObject(AbstractCDOView.java:797)
at 
org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject(AbstractCDOView.java:693)
at 
org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl.getObject(CDOTransactionImpl.java:1023)
at 
org.eclipse.emf.internal.cdo.view.AbstractCDOView.convertIDToObject(AbstractCDOView.java:1005)
at 
org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertIDToObject(CDOStoreImpl.java:660)
at 
org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertToEMF(CDOStoreImpl.java:628)
at 
org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.getValueFromRevision(CDOLegacyWrapper.java:603)
at 
org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstanceFeature(CDOLegacyWrapper.java:487)
at 
org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstance(CDOLegacyWrapper.java:403)
at 
org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.cdoInternalPostLoad(CDOLegacyWrapper.java:282)
at 
org.eclipse.emf.internal.cdo.view.AbstractCDOView.cleanObject(AbstractCDOView.java:859)
at 
org.eclipse.emf.internal.cdo.view.AbstractCDOView.createObject(AbstractCDOView.java:797)
at 
org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject(AbstractCDOView.java:693)
at 
org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl.getObject(CDOTransactionImpl.java:1023)
at 
org.eclipse.emf.internal.cdo.view.AbstractCDOView.convertIDToObject(AbstractCDOView.java:1005)
at 
org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertIDToObject(CDOStoreImpl.java:660)
at 
org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertToEMF(CDOStoreImpl.java:628)
at 
org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.getValueFromRevision(CDOLegacyWrapper.java:603)
at 
org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstanceFeature(CDOLegacyWrapper.java:487)
at 
org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstance(CDOLegacyWrapper.java:403)
at 
org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.cdoInternalPostLoad(CDOLegacyWrapper.java:282)
at 
org.eclipse.emf.internal.cdo.view.CDOStateMachine$InvalidateTransition.execute(CDOStateMachine.java:754)
at 
org.eclipse.emf.internal.cdo.view.CDOStateMachine$InvalidateTransition.execute(CDOStateMachine.java:1)
at 
org.eclipse.net4j.util.fsm.FiniteStateMachine.process(FiniteStateMachine.java:162)
at 
org.eclipse.emf.internal.cdo.view.CDOStateMachine.invalidate(CDOStateMachine.java:362)
at 
org.eclipse.emf.internal.cdo.view.AbstractCDOView.invalidate(AbstractCDOView.java:1169)
at 
org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl.invalidate(CDOTransactionImpl.java:2107)
at 
org.eclipse.emf.internal.cdo.view.CDOViewImpl.doInvalidate(CDOViewImpl.java:501)
at 
org.eclipse.emf.internal.cdo.view.CDOViewImpl$InvalidationRunnable.run(CDOViewImpl.java:1237)
at org.eclipse.net4j.util.concurrent.QueueRunner.work(QueueRunner.java:26)
at org.eclipse.net4j.util.concurrent.QueueRunner.work(QueueRunner.java:1)
at org.eclipse.net4j.util.concurrent.QueueWorker.doWork(QueueWorker.java:81)
at org.eclipse.net4j.util.concurrent.QueueWorker.work(QueueWorker.java:72)
at 
org.eclipse.net4j.util.concurrent.Worker$WorkerThread.run(Worker.java:206)


CDO State machine refuses to prepare and attach a CLEAN object, so I'm
thinking that attach() should not be called, but as it is the
InternalEObject who calls it there is nothing I can do.

I've tried 2 solutions that solves my problem :
1 - in the CDOResourceImpl.attached(EObject) method, if first check the
cdoState() of my cdoObject before calling attached(InternalCDOObject,
InternalCDOTransaction) : if it's CDOState.CLEAN, I do nothing. I'm not
fond of that solution, as it modifies CDO behaviour for no good reason.
2 - in the CDOStateMachine, I simply replace the following transitions :
init(CDOState.CLEAN, CDOEvent.PREPARE, FAIL);
init(CDOState.CLEAN, CDOEvent.ATTACH, FAIL);


by :
init(CDOState.CLEAN, CDOEvent.PREPARE, IGNORE);
init(CDOState.CLEAN, CDOEvent.ATTACH, IGNORE);



Do anyone see a better solution ? Is there something I'm missing ?

Cheers,
Alex
Re: [CDO] Failing event PREPARE in state CLEAN : state machine issue with legacy mode [message #697003 is a reply to message #696981] Fri, 15 July 2011 09:11 Go to previous messageGo to next message
Eike Stepper is currently offline Eike StepperFriend
Messages: 6682
Registered: July 2009
Senior Member
Am 15.07.2011 10:48, schrieb Alex Lagarde:
> Hi everyone !
>
> I'm experimenting some difficulties with CDO Legacy mode :
> I've got an element A containing an element B.
>
>
> When a user U1 creates several instances of A (containing instances of B) and commits,
> then the user U2 gets the following error :
>
>
> java.lang.IllegalStateException: Failing event PREPARE in state CLEAN for CDOLegacyWrapper[SquareSpec@OID701] (data=Pair[Transaction 1 [MAIN], []])
I susect a bug in the legacy model implementation. Martin, what do you think?

Cheers
/Eike

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


> at org.eclipse.net4j.util.fsm.FiniteStateMachine.process(FiniteStateMachine.java:153)
> at org.eclipse.emf.internal.cdo.view.CDOStateMachine.prepare(CDOStateMachine.java:215)
> at org.eclipse.emf.internal.cdo.view.CDOStateMachine.attach(CDOStateMachine.java:185)
> at org.eclipse.emf.cdo.eresource.impl.CDOResourceImpl.attached(CDOResourceImpl.java:1217)
> at org.eclipse.emf.cdo.eresource.impl.CDOResourceImpl.attached(CDOResourceImpl.java:1208)
> at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eBasicSetContainer(BasicEObjectImpl.java:1342)
> at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eInverseAdd(BasicEObjectImpl.java:1423)
> at my.package.AImpl.setOwnedB(AImpl.java:434)
> at my.package.AImpl.eSet(AImpl.java:713)
> at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eSet(BasicEObjectImpl.java:1081)
> at org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstanceFeature(CDOLegacyWrapper.java:556)
> at org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstance(CDOLegacyWrapper.java:403)
> at org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.cdoInternalPostLoad(CDOLegacyWrapper.java:282)
> at org.eclipse.emf.internal.cdo.view.AbstractCDOView.cleanObject(AbstractCDOView.java:859)
> at org.eclipse.emf.internal.cdo.view.AbstractCDOView.createObject(AbstractCDOView.java:797)
> at org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject(AbstractCDOView.java:693)
> at org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl.getObject(CDOTransactionImpl.java:1023)
> at org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl.getObject(CDOTransactionImpl.java:1)
> at org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.getEObjectFromPotentialID(CDOLegacyWrapper.java:715)
> at org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstanceContainer(CDOLegacyWrapper.java:437)
> at org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstance(CDOLegacyWrapper.java:399)
> at org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.cdoInternalPostLoad(CDOLegacyWrapper.java:282)
> at org.eclipse.emf.internal.cdo.view.AbstractCDOView.cleanObject(AbstractCDOView.java:859)
> at org.eclipse.emf.internal.cdo.view.AbstractCDOView.createObject(AbstractCDOView.java:797)
> at org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject(AbstractCDOView.java:693)
> at org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl.getObject(CDOTransactionImpl.java:1023)
> at org.eclipse.emf.internal.cdo.view.AbstractCDOView.convertIDToObject(AbstractCDOView.java:1005)
> at org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertIDToObject(CDOStoreImpl.java:660)
> at org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertToEMF(CDOStoreImpl.java:628)
> at org.eclipse.emf.internal.cdo.view.CDOStoreImpl.get(CDOStoreImpl.java:187)
> at org.eclipse.emf.internal.cdo.view.CDOStoreImpl.isSet(CDOStoreImpl.java:219)
> at org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstanceFeature(CDOLegacyWrapper.java:463)
> at org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstance(CDOLegacyWrapper.java:403)
> at org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.cdoInternalPostLoad(CDOLegacyWrapper.java:282)
> at org.eclipse.emf.internal.cdo.view.AbstractCDOView.cleanObject(AbstractCDOView.java:859)
> at org.eclipse.emf.internal.cdo.view.AbstractCDOView.createObject(AbstractCDOView.java:797)
> at org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject(AbstractCDOView.java:693)
> at org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl.getObject(CDOTransactionImpl.java:1023)
> at org.eclipse.emf.internal.cdo.view.AbstractCDOView.convertIDToObject(AbstractCDOView.java:1005)
> at org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertIDToObject(CDOStoreImpl.java:660)
> at org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertToEMF(CDOStoreImpl.java:628)
> at org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.getValueFromRevision(CDOLegacyWrapper.java:603)
> at org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstanceFeature(CDOLegacyWrapper.java:487)
> at org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstance(CDOLegacyWrapper.java:403)
> at org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.cdoInternalPostLoad(CDOLegacyWrapper.java:282)
> at org.eclipse.emf.internal.cdo.view.AbstractCDOView.cleanObject(AbstractCDOView.java:859)
> at org.eclipse.emf.internal.cdo.view.AbstractCDOView.createObject(AbstractCDOView.java:797)
> at org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject(AbstractCDOView.java:693)
> at org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl.getObject(CDOTransactionImpl.java:1023)
> at org.eclipse.emf.internal.cdo.view.AbstractCDOView.convertIDToObject(AbstractCDOView.java:1005)
> at org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertIDToObject(CDOStoreImpl.java:660)
> at org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertToEMF(CDOStoreImpl.java:628)
> at org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.getValueFromRevision(CDOLegacyWrapper.java:603)
> at org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstanceFeature(CDOLegacyWrapper.java:487)
> at org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstance(CDOLegacyWrapper.java:403)
> at org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.cdoInternalPostLoad(CDOLegacyWrapper.java:282)
> at org.eclipse.emf.internal.cdo.view.AbstractCDOView.cleanObject(AbstractCDOView.java:859)
> at org.eclipse.emf.internal.cdo.view.AbstractCDOView.createObject(AbstractCDOView.java:797)
> at org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject(AbstractCDOView.java:693)
> at org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl.getObject(CDOTransactionImpl.java:1023)
> at org.eclipse.emf.internal.cdo.view.AbstractCDOView.convertIDToObject(AbstractCDOView.java:1005)
> at org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertIDToObject(CDOStoreImpl.java:660)
> at org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertToEMF(CDOStoreImpl.java:628)
> at org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.getValueFromRevision(CDOLegacyWrapper.java:603)
> at org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstanceFeature(CDOLegacyWrapper.java:501)
> at org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstance(CDOLegacyWrapper.java:403)
> at org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.cdoInternalPostLoad(CDOLegacyWrapper.java:282)
> at org.eclipse.emf.internal.cdo.view.AbstractCDOView.cleanObject(AbstractCDOView.java:859)
> at org.eclipse.emf.internal.cdo.view.AbstractCDOView.createObject(AbstractCDOView.java:797)
> at org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject(AbstractCDOView.java:693)
> at org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl.getObject(CDOTransactionImpl.java:1023)
> at org.eclipse.emf.internal.cdo.view.AbstractCDOView.convertIDToObject(AbstractCDOView.java:1005)
> at org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertIDToObject(CDOStoreImpl.java:660)
> at org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertToEMF(CDOStoreImpl.java:628)
> at org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.getValueFromRevision(CDOLegacyWrapper.java:603)
> at org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstanceFeature(CDOLegacyWrapper.java:487)
> at org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstance(CDOLegacyWrapper.java:403)
> at org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.cdoInternalPostLoad(CDOLegacyWrapper.java:282)
> at org.eclipse.emf.internal.cdo.view.AbstractCDOView.cleanObject(AbstractCDOView.java:859)
> at org.eclipse.emf.internal.cdo.view.AbstractCDOView.createObject(AbstractCDOView.java:797)
> at org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject(AbstractCDOView.java:693)
> at org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl.getObject(CDOTransactionImpl.java:1023)
> at org.eclipse.emf.internal.cdo.view.AbstractCDOView.convertIDToObject(AbstractCDOView.java:1005)
> at org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertIDToObject(CDOStoreImpl.java:660)
> at org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertToEMF(CDOStoreImpl.java:628)
> at org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.getValueFromRevision(CDOLegacyWrapper.java:603)
> at org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstanceFeature(CDOLegacyWrapper.java:487)
> at org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstance(CDOLegacyWrapper.java:403)
> at org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.cdoInternalPostLoad(CDOLegacyWrapper.java:282)
> at org.eclipse.emf.internal.cdo.view.CDOStateMachine$InvalidateTransition.execute(CDOStateMachine.java:754)
> at org.eclipse.emf.internal.cdo.view.CDOStateMachine$InvalidateTransition.execute(CDOStateMachine.java:1)
> at org.eclipse.net4j.util.fsm.FiniteStateMachine.process(FiniteStateMachine.java:162)
> at org.eclipse.emf.internal.cdo.view.CDOStateMachine.invalidate(CDOStateMachine.java:362)
> at org.eclipse.emf.internal.cdo.view.AbstractCDOView.invalidate(AbstractCDOView.java:1169)
> at org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl.invalidate(CDOTransactionImpl.java:2107)
> at org.eclipse.emf.internal.cdo.view.CDOViewImpl.doInvalidate(CDOViewImpl.java:501)
> at org.eclipse.emf.internal.cdo.view.CDOViewImpl$InvalidationRunnable.run(CDOViewImpl.java:1237)
> at org.eclipse.net4j.util.concurrent.QueueRunner.work(QueueRunner.java:26)
> at org.eclipse.net4j.util.concurrent.QueueRunner.work(QueueRunner.java:1)
> at org.eclipse.net4j.util.concurrent.QueueWorker.doWork(QueueWorker.java:81)
> at org.eclipse.net4j.util.concurrent.QueueWorker.work(QueueWorker.java:72)
> at org.eclipse.net4j.util.concurrent.Worker$WorkerThread.run(Worker.java:206)
> 

>
> CDO State machine refuses to prepare and attach a CLEAN object, so I'm thinking that attach() should not be called, but as it is the InternalEObject who calls it there is nothing I can do.
>
> I've tried 2 solutions that solves my problem :
> 1 - in the CDOResourceImpl.attached(EObject) method, if first check the cdoState() of my cdoObject before calling attached(InternalCDOObject, InternalCDOTransaction) : if it's CDOState.CLEAN, I do nothing. I'm not fond of that solution, as it modifies CDO behaviour for no good reason.
> 2 - in the CDOStateMachine, I simply replace the following transitions :
>
> init(CDOState.CLEAN, CDOEvent.PREPARE, FAIL);
> init(CDOState.CLEAN, CDOEvent.ATTACH, FAIL);
> 

>
> by :
>
> init(CDOState.CLEAN, CDOEvent.PREPARE, IGNORE);
> init(CDOState.CLEAN, CDOEvent.ATTACH, IGNORE);
> 

>
>
> Do anyone see a better solution ? Is there something I'm missing ?
>
> Cheers,
> Alex
>


Re: [CDO] Failing event PREPARE in state CLEAN : state machine issue with legacy mode [message #697036 is a reply to message #697003] Fri, 15 July 2011 10:53 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by:

Am 15.07.2011 11:11, schrieb Eike Stepper:
> Am 15.07.2011 10:48, schrieb Alex Lagarde:
>> Hi everyone !
>>
>> I'm experimenting some difficulties with CDO Legacy mode :
>> I've got an element A containing an element B.
>>
>>
>> When a user U1 creates several instances of A (containing instances of
>> B) and commits,
>> then the user U2 gets the following error :
>>
>>
>> java.lang.IllegalStateException: Failing event PREPARE in state CLEAN
>> for CDOLegacyWrapper[SquareSpec@OID701] (data=Pair[Transaction 1
>> [MAIN], []])
> I susect a bug in the legacy model implementation. Martin, what do you
> think?

This one reminds me of Bug 347135
(https://bugs.eclipse.org/bugs/show_bug.cgi?id=347135). It could be
related to the changes we introduced in NATIVE. But I am not absolutely
sure.

Alex, could you please file a separated bug for this issue. Then I'll
investigate it and merge the bugs if it turns out that they are somehow
related.

Cheers,

Martin

> 
> Cheers
> /Eike
> 
> ----
> http://www.esc-net.de
> http://thegordian.blogspot.com
> http://twitter.com/eikestepper
> 
> 
>> at
>> org.eclipse.net4j.util.fsm.FiniteStateMachine.process(FiniteStateMachine.java:153)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.CDOStateMachine.prepare(CDOStateMachine.java:215)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.CDOStateMachine.attach(CDOStateMachine.java:185)
>>
>> at
>> org.eclipse.emf.cdo.eresource.impl.CDOResourceImpl.attached(CDOResourceImpl.java:1217)
>>
>> at
>> org.eclipse.emf.cdo.eresource.impl.CDOResourceImpl.attached(CDOResourceImpl.java:1208)
>>
>> at
>> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eBasicSetContainer(BasicEObjectImpl.java:1342)
>>
>> at
>> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eInverseAdd(BasicEObjectImpl.java:1423)
>>
>> at my.package.AImpl.setOwnedB(AImpl.java:434)
>> at my.package.AImpl.eSet(AImpl.java:713)
>> at
>> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eSet(BasicEObjectImpl.java:1081)
>>
>> at
>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstanceFeature(CDOLegacyWrapper.java:556)
>>
>> at
>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstance(CDOLegacyWrapper.java:403)
>>
>> at
>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.cdoInternalPostLoad(CDOLegacyWrapper.java:282)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.cleanObject(AbstractCDOView.java:859)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.createObject(AbstractCDOView.java:797)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject(AbstractCDOView.java:693)
>>
>> at
>> org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl.getObject(CDOTransactionImpl.java:1023)
>>
>> at
>> org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl.getObject(CDOTransactionImpl.java:1)
>>
>> at
>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.getEObjectFromPotentialID(CDOLegacyWrapper.java:715)
>>
>> at
>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstanceContainer(CDOLegacyWrapper.java:437)
>>
>> at
>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstance(CDOLegacyWrapper.java:399)
>>
>> at
>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.cdoInternalPostLoad(CDOLegacyWrapper.java:282)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.cleanObject(AbstractCDOView.java:859)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.createObject(AbstractCDOView.java:797)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject(AbstractCDOView.java:693)
>>
>> at
>> org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl.getObject(CDOTransactionImpl.java:1023)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.convertIDToObject(AbstractCDOView.java:1005)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertIDToObject(CDOStoreImpl.java:660)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertToEMF(CDOStoreImpl.java:628)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.CDOStoreImpl.get(CDOStoreImpl.java:187)
>> at
>> org.eclipse.emf.internal.cdo.view.CDOStoreImpl.isSet(CDOStoreImpl.java:219)
>>
>> at
>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstanceFeature(CDOLegacyWrapper.java:463)
>>
>> at
>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstance(CDOLegacyWrapper.java:403)
>>
>> at
>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.cdoInternalPostLoad(CDOLegacyWrapper.java:282)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.cleanObject(AbstractCDOView.java:859)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.createObject(AbstractCDOView.java:797)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject(AbstractCDOView.java:693)
>>
>> at
>> org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl.getObject(CDOTransactionImpl.java:1023)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.convertIDToObject(AbstractCDOView.java:1005)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertIDToObject(CDOStoreImpl.java:660)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertToEMF(CDOStoreImpl.java:628)
>>
>> at
>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.getValueFromRevision(CDOLegacyWrapper.java:603)
>>
>> at
>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstanceFeature(CDOLegacyWrapper.java:487)
>>
>> at
>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstance(CDOLegacyWrapper.java:403)
>>
>> at
>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.cdoInternalPostLoad(CDOLegacyWrapper.java:282)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.cleanObject(AbstractCDOView.java:859)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.createObject(AbstractCDOView.java:797)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject(AbstractCDOView.java:693)
>>
>> at
>> org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl.getObject(CDOTransactionImpl.java:1023)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.convertIDToObject(AbstractCDOView.java:1005)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertIDToObject(CDOStoreImpl.java:660)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertToEMF(CDOStoreImpl.java:628)
>>
>> at
>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.getValueFromRevision(CDOLegacyWrapper.java:603)
>>
>> at
>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstanceFeature(CDOLegacyWrapper.java:487)
>>
>> at
>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstance(CDOLegacyWrapper.java:403)
>>
>> at
>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.cdoInternalPostLoad(CDOLegacyWrapper.java:282)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.cleanObject(AbstractCDOView.java:859)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.createObject(AbstractCDOView.java:797)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject(AbstractCDOView.java:693)
>>
>> at
>> org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl.getObject(CDOTransactionImpl.java:1023)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.convertIDToObject(AbstractCDOView.java:1005)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertIDToObject(CDOStoreImpl.java:660)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertToEMF(CDOStoreImpl.java:628)
>>
>> at
>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.getValueFromRevision(CDOLegacyWrapper.java:603)
>>
>> at
>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstanceFeature(CDOLegacyWrapper.java:501)
>>
>> at
>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstance(CDOLegacyWrapper.java:403)
>>
>> at
>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.cdoInternalPostLoad(CDOLegacyWrapper.java:282)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.cleanObject(AbstractCDOView.java:859)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.createObject(AbstractCDOView.java:797)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject(AbstractCDOView.java:693)
>>
>> at
>> org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl.getObject(CDOTransactionImpl.java:1023)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.convertIDToObject(AbstractCDOView.java:1005)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertIDToObject(CDOStoreImpl.java:660)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertToEMF(CDOStoreImpl.java:628)
>>
>> at
>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.getValueFromRevision(CDOLegacyWrapper.java:603)
>>
>> at
>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstanceFeature(CDOLegacyWrapper.java:487)
>>
>> at
>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstance(CDOLegacyWrapper.java:403)
>>
>> at
>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.cdoInternalPostLoad(CDOLegacyWrapper.java:282)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.cleanObject(AbstractCDOView.java:859)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.createObject(AbstractCDOView.java:797)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject(AbstractCDOView.java:693)
>>
>> at
>> org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl.getObject(CDOTransactionImpl.java:1023)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.convertIDToObject(AbstractCDOView.java:1005)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertIDToObject(CDOStoreImpl.java:660)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertToEMF(CDOStoreImpl.java:628)
>>
>> at
>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.getValueFromRevision(CDOLegacyWrapper.java:603)
>>
>> at
>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstanceFeature(CDOLegacyWrapper.java:487)
>>
>> at
>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstance(CDOLegacyWrapper.java:403)
>>
>> at
>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.cdoInternalPostLoad(CDOLegacyWrapper.java:282)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.CDOStateMachine$InvalidateTransition.execute(CDOStateMachine.java:754)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.CDOStateMachine$InvalidateTransition.execute(CDOStateMachine.java:1)
>>
>> at
>> org.eclipse.net4j.util.fsm.FiniteStateMachine.process(FiniteStateMachine.java:162)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.CDOStateMachine.invalidate(CDOStateMachine.java:362)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.invalidate(AbstractCDOView.java:1169)
>>
>> at
>> org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl.invalidate(CDOTransactionImpl.java:2107)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.CDOViewImpl.doInvalidate(CDOViewImpl.java:501)
>>
>> at
>> org.eclipse.emf.internal.cdo.view.CDOViewImpl$InvalidationRunnable.run(CDOViewImpl.java:1237)
>>
>> at
>> org.eclipse.net4j.util.concurrent.QueueRunner.work(QueueRunner.java:26)
>> at org.eclipse.net4j.util.concurrent.QueueRunner.work(QueueRunner.java:1)
>> at
>> org.eclipse.net4j.util.concurrent.QueueWorker.doWork(QueueWorker.java:81)
>> at
>> org.eclipse.net4j.util.concurrent.QueueWorker.work(QueueWorker.java:72)
>> at
>> org.eclipse.net4j.util.concurrent.Worker$WorkerThread.run(Worker.java:206)
>>
>> 

>>
>> CDO State machine refuses to prepare and attach a CLEAN object, so I'm
>> thinking that attach() should not be called, but as it is the
>> InternalEObject who calls it there is nothing I can do.
>>
>> I've tried 2 solutions that solves my problem :
>> 1 - in the CDOResourceImpl.attached(EObject) method, if first check
>> the cdoState() of my cdoObject before calling
>> attached(InternalCDOObject, InternalCDOTransaction) : if it's
>> CDOState.CLEAN, I do nothing. I'm not fond of that solution, as it
>> modifies CDO behaviour for no good reason.
>> 2 - in the CDOStateMachine, I simply replace the following transitions :
>>
>> init(CDOState.CLEAN, CDOEvent.PREPARE, FAIL);
>> init(CDOState.CLEAN, CDOEvent.ATTACH, FAIL);
>> 

>>
>> by :
>>
>> init(CDOState.CLEAN, CDOEvent.PREPARE, IGNORE);
>> init(CDOState.CLEAN, CDOEvent.ATTACH, IGNORE);
>> 

>>
>>
>> Do anyone see a better solution ? Is there something I'm missing ?
>>
>> Cheers,
>> Alex
>>
Re: [CDO] Failing event PREPARE in state CLEAN : state machine issue with legacy mode [message #697056 is a reply to message #697036] Fri, 15 July 2011 12:34 Go to previous message
Alex Lagarde is currently offline Alex LagardeFriend
Messages: 193
Registered: May 2010
Senior Member

I've opened the following bug :
https://bugs.eclipse.org/bugs/show_bug.cgi?id=352204.

Martin, I don't think this issue is related to bug 347135, because my
elements are in state CLEAN (and not DIRTY).

I'm thinking that attach() is called when calling eInverseAdd on the
internalEObject, although the cdoobject has already been attached.

Thanks for your fast replies
Alex


Le 15/07/2011 12:53, Martin Flügge a écrit :
> Am 15.07.2011 11:11, schrieb Eike Stepper:
>> Am 15.07.2011 10:48, schrieb Alex Lagarde:
>>> Hi everyone !
>>>
>>> I'm experimenting some difficulties with CDO Legacy mode :
>>> I've got an element A containing an element B.
>>>
>>>
>>> When a user U1 creates several instances of A (containing instances of
>>> B) and commits,
>>> then the user U2 gets the following error :
>>>
>>>
>>> java.lang.IllegalStateException: Failing event PREPARE in state CLEAN
>>> for CDOLegacyWrapper[SquareSpec@OID701] (data=Pair[Transaction 1
>>> [MAIN], []])
>> I susect a bug in the legacy model implementation. Martin, what do you
>> think?
>
> This one reminds me of Bug 347135
> (https://bugs.eclipse.org/bugs/show_bug.cgi?id=347135). It could be
> related to the changes we introduced in NATIVE. But I am not absolutely
> sure.
>
> Alex, could you please file a separated bug for this issue. Then I'll
> investigate it and merge the bugs if it turns out that they are somehow
> related.
>
> Cheers,
>
> Martin
>
>>
>> Cheers
>> /Eike
>>
>> ----
>> http://www.esc-net.de
>> http://thegordian.blogspot.com
>> http://twitter.com/eikestepper
>>
>>
>>> at
>>> org.eclipse.net4j.util.fsm.FiniteStateMachine.process(FiniteStateMachine.java:153)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.CDOStateMachine.prepare(CDOStateMachine.java:215)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.CDOStateMachine.attach(CDOStateMachine.java:185)
>>>
>>> at
>>> org.eclipse.emf.cdo.eresource.impl.CDOResourceImpl.attached(CDOResourceImpl.java:1217)
>>>
>>> at
>>> org.eclipse.emf.cdo.eresource.impl.CDOResourceImpl.attached(CDOResourceImpl.java:1208)
>>>
>>> at
>>> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eBasicSetContainer(BasicEObjectImpl.java:1342)
>>>
>>> at
>>> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eInverseAdd(BasicEObjectImpl.java:1423)
>>>
>>> at my.package.AImpl.setOwnedB(AImpl.java:434)
>>> at my.package.AImpl.eSet(AImpl.java:713)
>>> at
>>> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eSet(BasicEObjectImpl.java:1081)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstanceFeature(CDOLegacyWrapper.java:556)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstance(CDOLegacyWrapper.java:403)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.cdoInternalPostLoad(CDOLegacyWrapper.java:282)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.cleanObject(AbstractCDOView.java:859)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.createObject(AbstractCDOView.java:797)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject(AbstractCDOView.java:693)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl.getObject(CDOTransactionImpl.java:1023)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl.getObject(CDOTransactionImpl.java:1)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.getEObjectFromPotentialID(CDOLegacyWrapper.java:715)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstanceContainer(CDOLegacyWrapper.java:437)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstance(CDOLegacyWrapper.java:399)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.cdoInternalPostLoad(CDOLegacyWrapper.java:282)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.cleanObject(AbstractCDOView.java:859)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.createObject(AbstractCDOView.java:797)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject(AbstractCDOView.java:693)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl.getObject(CDOTransactionImpl.java:1023)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.convertIDToObject(AbstractCDOView.java:1005)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertIDToObject(CDOStoreImpl.java:660)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertToEMF(CDOStoreImpl.java:628)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.CDOStoreImpl.get(CDOStoreImpl.java:187)
>>> at
>>> org.eclipse.emf.internal.cdo.view.CDOStoreImpl.isSet(CDOStoreImpl.java:219)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstanceFeature(CDOLegacyWrapper.java:463)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstance(CDOLegacyWrapper.java:403)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.cdoInternalPostLoad(CDOLegacyWrapper.java:282)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.cleanObject(AbstractCDOView.java:859)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.createObject(AbstractCDOView.java:797)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject(AbstractCDOView.java:693)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl.getObject(CDOTransactionImpl.java:1023)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.convertIDToObject(AbstractCDOView.java:1005)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertIDToObject(CDOStoreImpl.java:660)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertToEMF(CDOStoreImpl.java:628)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.getValueFromRevision(CDOLegacyWrapper.java:603)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstanceFeature(CDOLegacyWrapper.java:487)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstance(CDOLegacyWrapper.java:403)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.cdoInternalPostLoad(CDOLegacyWrapper.java:282)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.cleanObject(AbstractCDOView.java:859)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.createObject(AbstractCDOView.java:797)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject(AbstractCDOView.java:693)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl.getObject(CDOTransactionImpl.java:1023)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.convertIDToObject(AbstractCDOView.java:1005)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertIDToObject(CDOStoreImpl.java:660)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertToEMF(CDOStoreImpl.java:628)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.getValueFromRevision(CDOLegacyWrapper.java:603)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstanceFeature(CDOLegacyWrapper.java:487)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstance(CDOLegacyWrapper.java:403)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.cdoInternalPostLoad(CDOLegacyWrapper.java:282)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.cleanObject(AbstractCDOView.java:859)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.createObject(AbstractCDOView.java:797)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject(AbstractCDOView.java:693)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl.getObject(CDOTransactionImpl.java:1023)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.convertIDToObject(AbstractCDOView.java:1005)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertIDToObject(CDOStoreImpl.java:660)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertToEMF(CDOStoreImpl.java:628)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.getValueFromRevision(CDOLegacyWrapper.java:603)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstanceFeature(CDOLegacyWrapper.java:501)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstance(CDOLegacyWrapper.java:403)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.cdoInternalPostLoad(CDOLegacyWrapper.java:282)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.cleanObject(AbstractCDOView.java:859)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.createObject(AbstractCDOView.java:797)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject(AbstractCDOView.java:693)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl.getObject(CDOTransactionImpl.java:1023)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.convertIDToObject(AbstractCDOView.java:1005)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertIDToObject(CDOStoreImpl.java:660)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertToEMF(CDOStoreImpl.java:628)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.getValueFromRevision(CDOLegacyWrapper.java:603)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstanceFeature(CDOLegacyWrapper.java:487)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstance(CDOLegacyWrapper.java:403)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.cdoInternalPostLoad(CDOLegacyWrapper.java:282)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.cleanObject(AbstractCDOView.java:859)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.createObject(AbstractCDOView.java:797)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.getObject(AbstractCDOView.java:693)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl.getObject(CDOTransactionImpl.java:1023)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.convertIDToObject(AbstractCDOView.java:1005)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertIDToObject(CDOStoreImpl.java:660)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.CDOStoreImpl.convertToEMF(CDOStoreImpl.java:628)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.getValueFromRevision(CDOLegacyWrapper.java:603)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstanceFeature(CDOLegacyWrapper.java:487)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.revisionToInstance(CDOLegacyWrapper.java:403)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.object.CDOLegacyWrapper.cdoInternalPostLoad(CDOLegacyWrapper.java:282)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.CDOStateMachine$InvalidateTransition.execute(CDOStateMachine.java:754)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.CDOStateMachine$InvalidateTransition.execute(CDOStateMachine.java:1)
>>>
>>> at
>>> org.eclipse.net4j.util.fsm.FiniteStateMachine.process(FiniteStateMachine.java:162)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.CDOStateMachine.invalidate(CDOStateMachine.java:362)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.AbstractCDOView.invalidate(AbstractCDOView.java:1169)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl.invalidate(CDOTransactionImpl.java:2107)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.CDOViewImpl.doInvalidate(CDOViewImpl.java:501)
>>>
>>> at
>>> org.eclipse.emf.internal.cdo.view.CDOViewImpl$InvalidationRunnable.run(CDOViewImpl.java:1237)
>>>
>>> at
>>> org.eclipse.net4j.util.concurrent.QueueRunner.work(QueueRunner.java:26)
>>> at org.eclipse.net4j.util.concurrent.QueueRunner.work(QueueRunner.java:1)
>>> at
>>> org.eclipse.net4j.util.concurrent.QueueWorker.doWork(QueueWorker.java:81)
>>> at
>>> org.eclipse.net4j.util.concurrent.QueueWorker.work(QueueWorker.java:72)
>>> at
>>> org.eclipse.net4j.util.concurrent.Worker$WorkerThread.run(Worker.java:206)
>>>
>>> 

>>>
>>> CDO State machine refuses to prepare and attach a CLEAN object, so I'm
>>> thinking that attach() should not be called, but as it is the
>>> InternalEObject who calls it there is nothing I can do.
>>>
>>> I've tried 2 solutions that solves my problem :
>>> 1 - in the CDOResourceImpl.attached(EObject) method, if first check
>>> the cdoState() of my cdoObject before calling
>>> attached(InternalCDOObject, InternalCDOTransaction) : if it's
>>> CDOState.CLEAN, I do nothing. I'm not fond of that solution, as it
>>> modifies CDO behaviour for no good reason.
>>> 2 - in the CDOStateMachine, I simply replace the following transitions :
>>>
>>> init(CDOState.CLEAN, CDOEvent.PREPARE, FAIL);
>>> init(CDOState.CLEAN, CDOEvent.ATTACH, FAIL);
>>> 

>>>
>>> by :
>>>
>>> init(CDOState.CLEAN, CDOEvent.PREPARE, IGNORE);
>>> init(CDOState.CLEAN, CDOEvent.ATTACH, IGNORE);
>>> 

>>>
>>>
>>> Do anyone see a better solution ? Is there something I'm missing ?
>>>
>>> Cheers,
>>> Alex
>>>
>
Previous Topic:[CDO / Dawn] Tutorial issue
Next Topic:[CDO] Cannot modify a frozen revision
Goto Forum:
  


Current Time: Fri Apr 19 12:14:15 GMT 2024

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

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

Back to the top