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

Bug 433311

Summary: The consistency check excepion message of EquinoxManipulatorImpl is deceiving
Product: [Eclipse Project] Equinox Reporter: Andras Kovi <allprog>
Component: p2Assignee: P2 Inbox <equinox.p2-inbox>
Status: CLOSED DUPLICATE QA Contact:
Severity: normal    
Priority: P3 CC: mistria
Version: 3.9.0 Kepler   
Target Milestone: ---   
Hardware: PC   
OS: Linux   
See Also: https://bugs.eclipse.org/bugs/show_bug.cgi?id=329619
Whiteboard:

Description Andras Kovi CLA 2014-04-23 10:24:01 EDT
I'm trying to create an automated installer in the command line. Currently I'm trying to install the Xtend SDK.

This is the script I'm running:

site_kepler="http://download.eclipse.org/releases/kepler"
site_xtext_releases="http://download.eclipse.org/modeling/tmf/xtext/updates/composite/releases"
eclipse/eclipse \
   -data $HOME/workspace-automated \
   -clean \
   -consolelog \
   -noSplash \
   -application org.eclipse.equinox.p2.director \
   -repository $site_kepler,$site_xtext_releases \
   -installIU org.eclipse.xtend.sdk.feature.group  \
   -profile SDKProfile \
   -followReferences \
   -bundlepool $HOME/.eclipse_bundlepool \
   -destination $PWD/eclipse 

But it fails:

!ENTRY org.eclipse.equinox.p2.touchpoint.eclipse 4 0 2014-04-22 17:15:14.544
!MESSAGE Error while loading manipulator.
!STACK 0
java.lang.IllegalStateException: The framework persistent data location (/home/andras/installer/eclipse/configuration) is not the same as the framework configuration location (/home/andras/installer/eclipse/configuration).
	at org.eclipse.equinox.internal.frameworkadmin.equinox.EquinoxManipulatorImpl.checkConsistencyOfFwConfigLocAndFwPersistentDataLoc(EquinoxManipulatorImpl.java:65)
	at org.eclipse.equinox.internal.frameworkadmin.equinox.EquinoxManipulatorImpl.loadWithoutFwPersistentData(EquinoxManipulatorImpl.java:348)
	at org.eclipse.equinox.internal.frameworkadmin.equinox.EquinoxManipulatorImpl.load(EquinoxManipulatorImpl.java:319)
	at org.eclipse.equinox.internal.p2.touchpoint.eclipse.LazyManipulator.loadDelegate(LazyManipulator.java:55)
	at org.eclipse.equinox.internal.p2.touchpoint.eclipse.LazyManipulator.getConfigData(LazyManipulator.java:108)
	at org.eclipse.equinox.internal.p2.touchpoint.eclipse.actions.SetProgramPropertyAction.execute(SetProgramPropertyAction.java:38)
	at org.eclipse.equinox.internal.p2.engine.ParameterizedProvisioningAction.execute(ParameterizedProvisioningAction.java:38)
	at org.eclipse.equinox.internal.p2.engine.Phase.mainPerform(Phase.java:183)
	at org.eclipse.equinox.internal.p2.engine.Phase.perform(Phase.java:95)
	at org.eclipse.equinox.internal.p2.engine.PhaseSet.perform(PhaseSet.java:47)
	at org.eclipse.equinox.internal.p2.engine.Engine.perform(Engine.java:75)
	at org.eclipse.equinox.internal.p2.engine.Engine.perform(Engine.java:44)
	at org.eclipse.equinox.internal.provisional.p2.director.PlanExecutionHelper.executePlan(PlanExecutionHelper.java:41)
	at org.eclipse.equinox.internal.provisional.p2.director.PlanExecutionHelper.executePlan(PlanExecutionHelper.java:23)
	at org.eclipse.equinox.internal.p2.director.app.DirectorApplication.executePlan(DirectorApplication.java:783)
	at org.eclipse.equinox.internal.p2.director.app.DirectorApplication.planAndExecute(DirectorApplication.java:776)
	at org.eclipse.equinox.internal.p2.director.app.DirectorApplication.performProvisioningActions(DirectorApplication.java:763)
	at org.eclipse.equinox.internal.p2.director.app.DirectorApplication.run(DirectorApplication.java:1063)
	at org.eclipse.equinox.internal.p2.director.app.DirectorApplication.start(DirectorApplication.java:1245)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:354)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:181)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:636)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:591)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1450)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1426)
Installation failed.
An error occurred while configuring the installed items
 session context was:(profile=SDKProfile, phase=org.eclipse.equinox.internal.p2.engine.phases.Configure, operand=null --> [R]org.eclipse.equinox.ds 1.4.101.v20130813-1853, action=org.eclipse.equinox.internal.p2.touchpoint.eclipse.actions.SetProgramPropertyAction).
 Error while loading manipulator.
Caused by: Application failed, log file location: /home/andras/workspace-automated/.metadata/.log

I figured out the files it compares are different but they point to the same location:

fwConfigLocation File (id=56) eclipse/configuration
fwPersistentDataLocation File (id=68) /home/andras/installer/eclipse/configuration


The exception message contains the absolute path of the files which are bit-by-bit the same and doesn't show the real difference.

For more info check: https://www.eclipse.org/forums/index.php/t/708256/
Comment 1 Mickael Istria CLA 2014-04-23 10:42:02 EDT
Have you spotted, it seems to be a matter of comparing the absolute path instead of comparing directly files.
Do you think you could create a patch for this and contribute it via Gerrit?
Comment 2 Andras Kovi CLA 2014-04-23 11:37:17 EDT
I think the patch for #329619 effectively solves this issue as well.
Comment 3 Andras Kovi CLA 2014-04-23 11:37:38 EDT

*** This bug has been marked as a duplicate of bug 329619 ***