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

Bug 340139

Summary: CDO Offline Workspace doesn't work with DBStore
Product: [Modeling] EMF Reporter: Szabolcs Bardy <szbardy>
Component: cdo.coreAssignee: Project Inbox <emf.cdo-inbox>
Status: CLOSED WONTFIX QA Contact:
Severity: normal    
Priority: P3 CC: bulrich, stepper, zstorok
Version: 4.0   
Target Milestone: ---   
Hardware: PC   
OS: Windows 7   
Whiteboard:

Description Szabolcs Bardy CLA 2011-03-16 07:30:26 EDT
Build Identifier: 

The new CDO Offline Workspace feature works well when MEMStore is used, but fails when using a DBStore. When the remote repository is changed and trying to update the local repository the following exception is thrown:

org.eclipse.net4j.signal.RemoteException: java.lang.IllegalStateException: No type found for OID4
	at org.eclipse.net4j.signal.RequestWithConfirmation.setRemoteException(RequestWithConfirmation.java:128)
	at org.eclipse.net4j.signal.SignalProtocol.handleRemoteException(SignalProtocol.java:423)
	at org.eclipse.net4j.signal.RemoteExceptionIndication.indicating(RemoteExceptionIndication.java:63)
	at org.eclipse.net4j.signal.Indication.doExtendedInput(Indication.java:55)
	at org.eclipse.net4j.signal.Signal.doInput(Signal.java:326)
	at org.eclipse.net4j.signal.Indication.execute(Indication.java:49)
	at org.eclipse.net4j.signal.Signal.runSync(Signal.java:251)
	at org.eclipse.net4j.signal.Signal.run(Signal.java:147)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.IllegalStateException: No type found for OID4
	at org.eclipse.emf.cdo.server.internal.db.DBStoreAccessor.getObjectType(DBStoreAccessor.java:194)
	at org.eclipse.emf.cdo.server.internal.db.DBStoreAccessor.readRevision(DBStoreAccessor.java:207)
	at org.eclipse.emf.cdo.internal.server.Repository.loadRevisions(Repository.java:441)
	at org.eclipse.emf.cdo.internal.common.revision.CDORevisionManagerImpl.loadRevisions(CDORevisionManagerImpl.java:352)
	at org.eclipse.emf.cdo.internal.common.revision.CDORevisionManagerImpl.getRevisions(CDORevisionManagerImpl.java:263)
	at org.eclipse.emf.cdo.internal.common.revision.CDORevisionManagerImpl.getRevision(CDORevisionManagerImpl.java:246)
	at org.eclipse.emf.cdo.spi.common.revision.RevisionInfo.execute(RevisionInfo.java:132)
	at org.eclipse.emf.cdo.server.internal.net4j.protocol.LoadRevisionsIndication.responding(LoadRevisionsIndication.java:169)
	at org.eclipse.emf.cdo.server.internal.net4j.protocol.CDOServerIndication.responding(CDOServerIndication.java:133)
	at org.eclipse.net4j.signal.IndicationWithResponse.doExtendedOutput(IndicationWithResponse.java:96)
	at org.eclipse.net4j.signal.Signal.doOutput(Signal.java:296)
	at org.eclipse.net4j.signal.IndicationWithResponse.execute(IndicationWithResponse.java:65)
	at org.eclipse.emf.cdo.server.internal.net4j.protocol.CDOReadIndication.execute(CDOReadIndication.java:36)
	... 5 more


When trying to commit a change to the remote repository the following exception is thrown:

java.lang.IllegalStateException: begin() has not been called
	at org.eclipse.net4j.util.om.monitor.AbstractMonitor.checkBegun(AbstractMonitor.java:143)
	at org.eclipse.net4j.util.om.monitor.AbstractMonitor.fork(AbstractMonitor.java:65)
	at org.eclipse.net4j.util.om.monitor.AbstractMonitor.fork(AbstractMonitor.java:71)
	at org.eclipse.emf.cdo.server.internal.db.DBStoreAccessor.rawDelete(DBStoreAccessor.java:1244)
	at org.eclipse.emf.cdo.internal.workspace.CDOWorkspaceImpl.adjustLocally(CDOWorkspaceImpl.java:412)
	at org.eclipse.emf.cdo.internal.workspace.CDOWorkspaceImpl.checkin(CDOWorkspaceImpl.java:358)


Reproducible: Always
Comment 1 Eike Stepper CLA 2011-04-12 09:44:43 EDT
Just a note: I'd like to implement a new CDOID strategy for client-side assigned UUIDs first...
Comment 2 Eike Stepper CLA 2011-06-23 04:27:15 EDT
Moving all open problem reports to 4.0
Comment 3 Eike Stepper CLA 2011-08-05 12:17:35 EDT
This problem is most probably caused by so called "local IDs" that are needed with server-assigned IDs. In 4.1 client-assigned UUIDs are now supported and recommended in all replication or offline scenarios. Please see bug 340139.

Please reopen this bug if it turns out that UUIDs do not solve the problem.
Comment 4 Eike Stepper CLA 2012-09-21 06:50:27 EDT
Closing.