Community
Participate
Working Groups
When I attempt to install from http://update.atlassian.com/atlassian-eclipse-plugin/weekly/e3.4/site.xml into the latest M7 build, I get an unexpected error dialog and a few entries in the log: -- Error Details -- Date: Mon May 03 08:33:27 EDT 2010 Message: Unhandled event loop exception Severity: Error Product: Eclipse SDK 3.6.0.v201004291549 (org.eclipse.sdk.ide) Plugin: org.eclipse.ui Session Data: eclipse.buildId=I20100429-1549 java.version=1.6.0_17 java.vendor=Apple Inc. BootLoader constants: OS=macosx, ARCH=x86_64, WS=cocoa, NL=en_US Framework arguments: -keyring /Users/peter/.eclipse_keyring -showlocation Command-line arguments: -os macosx -ws cocoa -arch x86_64 -keyring /Users/peter/.eclipse_keyring -showlocation Exception Stack Trace: org.eclipse.core.runtime.AssertionFailedException: null argument: at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:85) at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:73) at org.eclipse.equinox.internal.p2.operations.PlanAnalyzer.computeResolutionResult(PlanAnalyzer.java:64) at org.eclipse.equinox.internal.p2.operations.PlannerResolutionJob.getResolutionResult(PlannerResolutionJob.java:104) at org.eclipse.equinox.p2.operations.ProfileChangeOperation.getResolutionResult(ProfileChangeOperation.java:216) at org.eclipse.equinox.internal.p2.ui.dialogs.ProvisioningOperationWizard.getCurrentStatus(ProvisioningOperationWizard.java:232) at org.eclipse.equinox.internal.p2.ui.dialogs.ResolutionStatusPage.updateStatus(ResolutionStatusPage.java:72) at org.eclipse.equinox.internal.p2.ui.dialogs.SizeComputingWizardPage.updateStatus(SizeComputingWizardPage.java:119) at org.eclipse.equinox.internal.p2.ui.dialogs.ProvisioningOperationWizard.planChanged(ProvisioningOperationWizard.java:170) at org.eclipse.equinox.internal.p2.ui.dialogs.WizardWithLicenses.planChanged(WizardWithLicenses.java:67) at org.eclipse.equinox.internal.p2.ui.dialogs.ProvisioningOperationWizard.recomputePlan(ProvisioningOperationWizard.java:217) at org.eclipse.equinox.internal.p2.ui.dialogs.ProvisioningOperationWizard.getNextPage(ProvisioningOperationWizard.java:104) at org.eclipse.equinox.internal.p2.ui.dialogs.WizardWithLicenses.getNextPage(WizardWithLicenses.java:58) at org.eclipse.jface.wizard.WizardPage.getNextPage(WizardPage.java:172) at org.eclipse.jface.wizard.WizardDialog.nextPressed(WizardDialog.java:887) at org.eclipse.jface.wizard.WizardDialog.buttonPressed(WizardDialog.java:426) at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:624) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:234) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Display.sendEvent(Display.java:3734) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1335) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1358) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1343) at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1155) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3594) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3250) at org.eclipse.jface.window.Window.runEventLoop(Window.java:825) at org.eclipse.jface.window.Window.open(Window.java:801) at org.eclipse.equinox.p2.ui.ProvisioningUI.openInstallWizard(ProvisioningUI.java:206) at org.eclipse.equinox.internal.p2.ui.sdk.InstallNewSoftwareHandler.doExecute(InstallNewSoftwareHandler.java:31) at org.eclipse.equinox.internal.p2.ui.sdk.PreloadingRepositoryHandler.doExecuteAndLoad(PreloadingRepositoryHandler.java:84) at org.eclipse.equinox.internal.p2.ui.sdk.PreloadingRepositoryHandler.execute(PreloadingRepositoryHandler.java:41) at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:293) 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:241) at org.eclipse.ui.menus.CommandContributionItem.handleWidgetSelection(CommandContributionItem.java:820) at org.eclipse.ui.menus.CommandContributionItem.access$19(CommandContributionItem.java:806) at org.eclipse.ui.menus.CommandContributionItem$5.handleEvent(CommandContributionItem.java:796) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Display.sendEvent(Display.java:3734) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1335) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1358) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1343) at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1155) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3594) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3250) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2601) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2565) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2399) at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:669) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:662) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115) 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:369) 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:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:619) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574) at org.eclipse.equinox.launcher.Main.run(Main.java:1407) Preceding exception: eclipse.buildId=I20100429-1549 java.version=1.6.0_17 java.vendor=Apple Inc. BootLoader constants: OS=macosx, ARCH=x86_64, WS=cocoa, NL=en_US Framework arguments: -keyring /Users/peter/.eclipse_keyring -showlocation Command-line arguments: -os macosx -ws cocoa -arch x86_64 -keyring /Users/peter/.eclipse_keyring -showlocation Error Mon May 03 08:33:27 EDT 2010 Location must be absolute: %25update.label java.lang.IllegalArgumentException: Location must be absolute: %25update.label at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.checkValidLocation(AbstractRepositoryManager.java:703) at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.contains(AbstractRepositoryManager.java:250) at org.eclipse.equinox.p2.engine.ProvisioningContext.isEnabled(ProvisioningContext.java:231) at org.eclipse.equinox.p2.engine.ProvisioningContext.loadMetadataRepository(ProvisioningContext.java:213) at org.eclipse.equinox.p2.engine.ProvisioningContext.getLoadedMetadataRepositories(ProvisioningContext.java:179) at org.eclipse.equinox.p2.engine.ProvisioningContext.getMetadata(ProvisioningContext.java:255) at org.eclipse.equinox.internal.p2.director.SimplePlanner.gatherAvailableInstallableUnits(SimplePlanner.java:256) at org.eclipse.equinox.internal.p2.director.SimplePlanner.getSolutionFor(SimplePlanner.java:316) at org.eclipse.equinox.internal.p2.director.SimplePlanner.getProvisioningPlan(SimplePlanner.java:372) at org.eclipse.equinox.internal.p2.operations.PlannerResolutionJob.runModal(PlannerResolutionJob.java:76) at org.eclipse.equinox.p2.operations.ProfileChangeOperation.resolveModal(ProfileChangeOperation.java:115) at org.eclipse.equinox.internal.p2.ui.dialogs.ProvisioningOperationWizard$1.run(ProvisioningOperationWizard.java:206) at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121) I'm not sure if there something wrong with the update site (looks like valid old-style update site). This does not happen in M6.
The underlying problem is also described in bug 311338 (underlying error is the same). Keeping this bug open and retitling to catch the error on the UI side a little earlier. It is indeed an "unexpected error" from the UI point of view, but we could detect this a little earlier with a better error than assertion failed. (Note to self: check for null plan in PlannerResolutionJob.getResolutionResult())
Created attachment 167014 [details] patch to PlannerResolutionJob This patch ensures that if there is a null plan at the time a resolution result is requested, that a proper status is returned. The patch can be tested by trying to install anything from http://download.eclipse.org/releases/staging (without the patch for bug 311338 loaded). Before the patch, you get the IAE in the error dialog (that is bug 311338). The problem on the UI side is that the wizard still has the next button enabled and pushing the next button gives you an assertion error in the log. The wizard at that point is broken unless you select something new. After the patch, you still get the IAE in the error dialog, but now the next button is disabled as it would be for any failed resolution, and the error message shows as: Your original request has been modified. Unexpected Error. Could not process the request. Check the error log for details.
Pascal, can you please review this patch? Note that you have to test it *without* the patch for bug 311338 loaded. This patch ensures that if any other runtime exceptions were to occur during planning, that the wizard catches the null plan and reports the status back to the user rather than being broken.
Patch released.