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 |
|
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 |
|
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
>
Cheers
/Eike
----
http://www.esc-net.de
http://thegordian.blogspot.com
http://twitter.com/eikestepper
|
|
|
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 |
Eclipse User |
|
|
|
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 |
|
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
>>>
>
|
|
|
Goto Forum:
Current Time: Fri Apr 19 12:14:15 GMT 2024
Powered by FUDForum. Page generated in 0.01895 seconds
|