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

Bug 313300

Summary: CDORevisionPrefetchingPolicy change breaks external references
Product: [Modeling] EMF Reporter: Erwin Betschart <erwin>
Component: cdo.coreAssignee: Eike Stepper <stepper>
Status: CLOSED FIXED QA Contact: Eike Stepper <stepper>
Severity: normal    
Priority: P3    
Version: 3.0   
Target Milestone: ---   
Hardware: PC   
OS: All   
Whiteboard:

Description Erwin Betschart CLA 2010-05-18 04:52:15 EDT
Build Identifier: 3.0

Recently the prefetching policy changed from NO_REVISION_PREFETCHING to DEFAULT_REVISION_PREFETCHING (in CDOViewImpl.OptionsImpl).

This change causes problems with external references:

!ENTRY org.eclipse.net4j 4 0 2010-05-18 10:50:59.332
!MESSAGE Can not get long id from external ID types
!STACK 0
java.lang.IllegalArgumentException: Can not get long id from external ID types
	at org.eclipse.emf.cdo.common.id.CDOIDUtil.getLong(CDOIDUtil.java:94)
	at org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.ObjectTypeCache.getObjectType(ObjectTypeCache.java:97)
	at org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.AbstractHorizontalMappingStrategy.readObjectType(AbstractHorizontalMappingStrategy.java:70)
	at org.eclipse.emf.cdo.server.internal.db.DBStoreAccessor.readObjectType(DBStoreAccessor.java:158)
	at org.eclipse.emf.cdo.server.internal.db.DBStoreAccessor.getObjectType(DBStoreAccessor.java:175)
	at org.eclipse.emf.cdo.server.internal.db.DBStoreAccessor.readRevision(DBStoreAccessor.java:200)
	at org.eclipse.emf.cdo.internal.server.Repository.loadRevisions(Repository.java:407)
	at org.eclipse.emf.cdo.internal.common.revision.CDORevisionManagerImpl.loadRevisions(CDORevisionManagerImpl.java:365)
	at org.eclipse.emf.cdo.internal.common.revision.CDORevisionManagerImpl.getRevisions(CDORevisionManagerImpl.java:268)
	at org.eclipse.emf.cdo.internal.common.revision.CDORevisionManagerImpl.getRevision(CDORevisionManagerImpl.java:250)
	at org.eclipse.emf.cdo.spi.common.revision.RevisionInfo.execute(RevisionInfo.java:131)
	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:126)
	at org.eclipse.net4j.signal.IndicationWithResponse.doExtendedOutput(IndicationWithResponse.java:96)
	at org.eclipse.net4j.signal.Signal.doOutput(Signal.java:285)
	at org.eclipse.net4j.signal.IndicationWithResponse.execute(IndicationWithResponse.java:65)
	at org.eclipse.emf.cdo.server.internal.net4j.protocol.CDOReadIndication.execute(CDOReadIndication.java:36)
	at org.eclipse.net4j.signal.Signal.runSync(Signal.java:240)
	at org.eclipse.net4j.signal.Signal.run(Signal.java:146)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:619)

Reproducible: Always
Comment 1 Eike Stepper CLA 2010-05-18 04:59:25 EDT
First, I changed back the default to NO_REVISION_PREFETCHING. Committed to HEAD.

Then I'll try to write a test case with prefetched external refs, and fix it in the server...
Comment 2 Eike Stepper CLA 2010-05-18 06:09:21 EDT
CDORevisionPrefetchingPolicy now ignores external refs.

Committed to HEAD
Comment 3 Eike Stepper CLA 2010-06-29 04:36:19 EDT
Available in 3.0 GA:
http://download.eclipse.org/modeling/emf/cdo/updates/3.0-releases/