[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[p2-dev] Software Updates - Revert Software Configuration p2 problems in RCP app

Hi
I need to fix this issue with our p2-enabled RCP app.
If I open the "Revert Configuration" dialog from the "Software Updates" dialog, I invariably get errors like:

"The configuration snapshot is no longer valid.
org.eclipse.equinox.internal.p2.core.ProvisionException"


Our RCP application is based on 3.4.2 and is built in two steps:

1) headless build using a product configuration file (see ant snippet below)
2) headless run of the org.eclipse.equinox.p2.director.app.application to produce the p2-enabled RCP (see ant snippet below)

We zip up and distribute 2), which is then unzipped and ran on machines where the repository  built in step 1) is no longer there.


Running the app built in step 2) - if we open the "Revert Configuration" dialog from the "Software Updates" dialog, as said we get

"The configuration snapshot is no longer valid.
org.eclipse.equinox.internal.p2.core.ProvisionException"

and the details button shows :

"The configuration snapshot is no longer valid.
  Problems resolving provisioning plan.
    No solution found because the problem in /tmp/p2EncodingNNNNNNNNNNNNNNNNNN.opb is unsatisfiable."


Even on the very first run of the application, the 'Revert Software Configuration" dialog shows 2 'Previous Configuration' entries:

1st, one with the timestamp of 'now' - selecting this causes the error above;
2nd, one with the timestamp of when the app was built;
selecting this causes no error, the finish button is enabled ... and if clicked, then the app will not restart. This is unrecoverable and one needs to delete and reinstall (unzip) the whole app.

I may open a bug - but I first need to know if there is nothing wrong with how we build the RCP application.
I had this problem for months - but now it's back to haunt me to get fixed.

I posted this on the rcp newsgroups too, but p2-dev may be more appropriate.

thanks
Edoardo


attached screenshots & stack trace.
appendix  - ANT snippets :

1) headless build using the product configuration file (see ant snippet below)
        <java jar="${launcher.jar}" jvm="${javaexec}" fork="true" failonerror="true">
            <jvmarg value="-Xms256m" />
            <jvmarg value="-Xmx768m" />
            <arg line="-clean" />
            <arg line="-application org.eclipse.ant.core.antRunner" />
            <arg line="-buildfile ${productBuild.xml}" />
            <arg line="-Dbuilder=@{build}" />
            <arg value="-Dproduct=@{product}" />
            <arg value="-Dconfigs=${configs}" />
            <arg line="-DbuildDirectory=@{build}" />
            <arg line="-DbaseLocation=@{eclipse}" />
            <arg line="-DbuildType=${buildType}" />
            <arg line="-DbuildId=${buildId}" />
            <arg line="-DarchivePrefix=${buildId}" />
            <arg line="-DforceContextQualifier=${qualifier}" />
            <arg line="-DjavacDebugInfo=true" />
            <arg line="-DjavacVerbose=false" />
            <arg line="-DjavacSource='@{javacspec}'" />
            <arg line="-DjavacTarget='@{javacspec}'" />
            <arg line="-Dgenerate.p2.metadata=true" />
            <arg line="-Dp2.metadata.repo=
file:@{repository}" />
            <arg line="-Dp2.artifact.repo=
file:@{repository}" />
            <arg value="-Dp2.metadata.repo.name=@{repositoryName}" />
            <arg value="-Dp2.artifact.repo.name=@{repositoryName}" />
            <arg line="-Dp2.flavor=tooling" />
            <arg line="-Dp2.publish.artifacts=true" />
        </java>


2) headless run of the org.eclipse.equinox.p2.director.app.application to produce the p2-enabled RCP (see ant snippet below)
<java jar="${launcher.jar}" fork="true" jvm="${javaexec}" failonerror="true">
            <jvmarg value="-Xms256m" />
            <jvmarg value="-Xmx768m" />
            <jvmarg value="-Declipse.p2.data.area=@{build}/@{product}/p2" />
            <arg line="-clean" />
            <arg line="-application org.eclipse.equinox.p2.director.app.application" />
            <arg line="-consoleLog" />
            <arg line="-metadataRepository
file:@{repository}" />
            <arg line="-artifactRepository
file:@{repository}" />
            <arg line="-installIU @{product}" />
            <arg line="-profile @{product}" />
            <arg line="-destination @{build}/@{product}" />
            <arg line="-bundlepool @{build}/@{product}" />
            <arg line="-p2.os @{os}" />
            <arg line="-p2.ws @{ws}" />
            <arg line="-p2.arch @{arch}" />
            <arg value="-roaming" />
            <arg line="-profileProperties org.eclipse.update.install.features=true" />
        </java>



--------------------------------------------------
regards,
Edoardo Comar
IBM United Kingdom Ltd.
ecomar@xxxxxxxxxx
Tel +44 (0)1962 81 5576 (external)  245576  (internal)
www.ibm.com/cics/explorer






Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number 741598.
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU






Attachment: screenshot-01.jpg
Description: JPEG image

Attachment: screenshot-02.jpg
Description: JPEG image

!ENTRY org.eclipse.equinox.p2.ui 4 0 2009-04-20 16:02:23.389
!MESSAGE The configuration snapshot is no longer valid.
!STACK 1
org.eclipse.equinox.internal.provisional.p2.core.ProvisionException: Problems resolving provisioning plan.
	at org.eclipse.equinox.internal.p2.rollback.FormerState$FormerStateProfile.<init>(FormerState.java:297)
	at org.eclipse.equinox.internal.p2.rollback.FormerState.IUToProfile(FormerState.java:144)
	at org.eclipse.equinox.internal.provisional.p2.ui.model.RollbackProfileElement.getProfileSnapshot(RollbackProfileElement.java:117)
	at org.eclipse.equinox.internal.p2.ui.dialogs.RevertProfileWizardPage$3.run(RevertProfileWizardPage.java:163)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.equinox.internal.p2.ui.dialogs.RevertProfileWizardPage.handleSelectionChanged(RevertProfileWizardPage.java:160)
	at org.eclipse.equinox.internal.p2.ui.dialogs.RevertProfileWizardPage$2.selectionChanged(RevertProfileWizardPage.java:111)
	at org.eclipse.jface.viewers.Viewer$2.run(Viewer.java:162)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
	at org.eclipse.core.runtime.Platform.run(Platform.java:880)
	at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
	at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
	at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java:160)
	at org.eclipse.jface.viewers.StructuredViewer.updateSelection(StructuredViewer.java:2062)
	at org.eclipse.jface.viewers.StructuredViewer.setSelection(StructuredViewer.java:1638)
	at org.eclipse.jface.viewers.TableViewer.setSelection(TableViewer.java:157)
	at org.eclipse.jface.viewers.Viewer.setSelection(Viewer.java:392)
	at org.eclipse.equinox.internal.p2.ui.dialogs.RevertProfileWizardPage.createControl(RevertProfileWizardPage.java:76)
	at org.eclipse.jface.wizard.Wizard.createPageControls(Wizard.java:170)
	at org.eclipse.jface.wizard.WizardDialog.createPageControls(WizardDialog.java:669)
	at org.eclipse.jface.wizard.WizardDialog.createContents(WizardDialog.java:543)
	at org.eclipse.jface.window.Window.create(Window.java:431)
	at org.eclipse.jface.dialogs.Dialog.create(Dialog.java:1089)
	at org.eclipse.equinox.internal.p2.ui.sdk.UpdateAndInstallDialog$20.run(UpdateAndInstallDialog.java:655)
	at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
	at org.eclipse.equinox.internal.p2.ui.sdk.UpdateAndInstallDialog.verticalButtonPressed(UpdateAndInstallDialog.java:732)
	at org.eclipse.equinox.internal.p2.ui.sdk.UpdateAndInstallDialog$21.handleEvent(UpdateAndInstallDialog.java:715)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1158)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3401)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3033)
	at org.eclipse.jface.window.Window.runEventLoop(Window.java:825)
	at org.eclipse.jface.window.Window.open(Window.java:801)
	at org.eclipse.equinox.internal.p2.ui.sdk.UpdateHandler.openDialog(UpdateHandler.java:55)
	at org.eclipse.equinox.internal.p2.ui.sdk.UpdateHandler.execute(UpdateHandler.java:46)
	at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:281)
	at org.eclipse.core.commands.Command.executeWithChecks(Command.java:476)
	at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508)
	at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:169)
	at org.eclipse.ui.internal.handlers.SlaveHandlerService.executeCommand(SlaveHandlerService.java:247)
	at org.eclipse.ui.menus.CommandContributionItem.handleWidgetSelection(CommandContributionItem.java:619)
	at org.eclipse.ui.menus.CommandContributionItem.access$10(CommandContributionItem.java:605)
	at org.eclipse.ui.menus.CommandContributionItem$4.handleEvent(CommandContributionItem.java:595)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1158)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3401)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3033)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2384)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2348)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2200)
	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:495)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:490)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at com.ibm.cics.explorer.application.ExplorerApplication.start(ExplorerApplication.java:39)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
	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:386)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
	at java.lang.reflect.Method.invoke(Method.java:599)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
Contains: No solution found because the problem in /tmp/p2Encoding5723188620131457327.opb is unsatisfiable.

=