| [news.eclipse.technology.equinox] Re: P2 "Headless Updating on Startup" not working |
scott brown wrote:
bringing back an old topic
I've downloaded the 3.5 release and tried my best to find all the p2 documentation I could. I tried Susan's example for "Headless Updating on Startup," including her p2Util class with my application, but i'm running into an issue: I get an "Invalid Thread Access"
I'll include the stack trace from the workspace .log and from our application log below. the line from P2Util that seems to cause the error is:
manager.loadRepository(reposToSearch[i], loadMonitor.newChild(100 / reposToSearch.length));
Can anyone else reproduce this?
workspace .log stack trace:
!ENTRY org.eclipse.ecf.provider.filetransfer 4 1001 2009-06-26 14:45:19.815org.eclipse.jface.dialogs.ProgressIndicator.worked(ProgressIndicator.java:139)
!MESSAGE Transfer Exception
!STACK 0
org.eclipse.swt.SWTException: Invalid thread access
at org.eclipse.swt.SWT.error(SWT.java:3884)
at org.eclipse.swt.SWT.error(SWT.java:3799)
at org.eclipse.swt.SWT.error(SWT.java:3770)
at org.eclipse.swt.widgets.Widget.error(Widget.java:463)
at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:355)
at org.eclipse.swt.widgets.ProgressBar.getSelection(ProgressBar.java:191)
at
atorg.eclipse.jface.dialogs.ProgressMonitorDialog$ProgressMonitor.internalWorked(ProgressMonitorDialog.java:246)
atorg.eclipse.jface.dialogs.ProgressMonitorDialog$ProgressMonitor.worked(ProgressMonitorDialog.java:241)
at org.eclipse.core.runtime.SubMonitor$RootInfo.worked(SubMonitor.java:284)org.eclipse.equinox.internal.p2.repository.FileReader.handleTransferEvent(FileReader.java:161)
at org.eclipse.core.runtime.SubMonitor.internalWorked(SubMonitor.java:570)
at org.eclipse.core.runtime.SubMonitor.worked(SubMonitor.java:585)
at
atorg.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer.fireTransferReceiveDataEvent(AbstractRetrieveFileTransfer.java:318)
atorg.eclipse.ecf.provider.filetransfer.httpclient.HttpClientRetrieveFileTransfer.fireTransferReceiveDataEvent(HttpClientRetrieveFileTransfer.java:1013)
atorg.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer.handleReceivedData(AbstractRetrieveFileTransfer.java:213)
atorg.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer$1.performFileTransfer(AbstractRetrieveFileTransfer.java:141)
at org.eclipse.ecf.filetransfer.FileTransferJob.run(FileTransferJob.java:73)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
our application's stack trace
[2009-06-26 14:45:19,908] ERROR: org.eclipse.equinox.internal.provisional.p2.core.ProvisionException: Unable to read repository at http://foobar/content.jar. (P2Util.java:run:128) org.eclipse.equinox.internal.provisional.p2.core.ProvisionException: Unable to read repository at http://foobar/content.jar.org.eclipse.equinox.internal.p2.metadata.repository.CacheManager.updateCache(CacheManager.java:416)
at
atorg.eclipse.equinox.internal.p2.metadata.repository.CacheManager.createCache(CacheManager.java:195)
atorg.eclipse.equinox.internal.provisional.spi.p2.metadata.repository.SimpleMetadataRepositoryFactory.getLocalFile(SimpleMetadataRepositoryFactory.java:60)
atorg.eclipse.equinox.internal.provisional.spi.p2.metadata.repository.SimpleMetadataRepositoryFactory.validateAndLoad(SimpleMetadataRepositoryFactory.java:99)
atorg.eclipse.equinox.internal.provisional.spi.p2.metadata.repository.SimpleMetadataRepositoryFactory.load(SimpleMetadataRepositoryFactory.java:87)
atorg.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.factoryLoad(MetadataRepositoryManager.java:54)
atorg.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:669)
atorg.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:617)
atorg.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:92)
atorg.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:88)
at foobar.P2Util$1.run(P2Util.java:123)org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:464)
at
at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:372)org.eclipse.jface.dialogs.ProgressMonitorDialog.run(ProgressMonitorDialog.java:507)
at
at foobar..P2Util.checkForUpdates(P2Util.java:207)foobar.ApplicationWorkbenchAdvisor.postStartup(ApplicationWorkbenchAdvisor.java:119)
at foobar..Updater.performP2Update(Updater.java:110)
at
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2343)org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at foobar.Application.start(Application.java:67)
at
atorg.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
atorg.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368)org.eclipse.jface.dialogs.ProgressIndicator.worked(ProgressIndicator.java:139)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514)
at org.eclipse.equinox.launcher.Main.run(Main.java:1311)
Caused by: org.eclipse.swt.SWTException: Invalid thread access
at org.eclipse.swt.SWT.error(SWT.java:3884)
at org.eclipse.swt.SWT.error(SWT.java:3799)
at org.eclipse.swt.SWT.error(SWT.java:3770)
at org.eclipse.swt.widgets.Widget.error(Widget.java:463)
at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:355)
at org.eclipse.swt.widgets.ProgressBar.getSelection(ProgressBar.java:191)
at
atorg.eclipse.jface.dialogs.ProgressMonitorDialog$ProgressMonitor.internalWorked(ProgressMonitorDialog.java:246)
atorg.eclipse.jface.dialogs.ProgressMonitorDialog$ProgressMonitor.worked(ProgressMonitorDialog.java:241)
at org.eclipse.core.runtime.SubMonitor$RootInfo.worked(SubMonitor.java:284)org.eclipse.equinox.internal.p2.repository.FileReader.handleTransferEvent(FileReader.java:161)
at org.eclipse.core.runtime.SubMonitor.internalWorked(SubMonitor.java:570)
at org.eclipse.core.runtime.SubMonitor.worked(SubMonitor.java:585)
at
atorg.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer.fireTransferReceiveDataEvent(AbstractRetrieveFileTransfer.java:318)
atorg.eclipse.ecf.provider.filetransfer.httpclient.HttpClientRetrieveFileTransfer.fireTransferReceiveDataEvent(HttpClientRetrieveFileTransfer.java:1013)
atorg.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer.handleReceivedData(AbstractRetrieveFileTransfer.java:213)
atorg.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer$1.performFileTransfer(AbstractRetrieveFileTransfer.java:141)
at org.eclipse.ecf.filetransfer.FileTransferJob.run(FileTransferJob.java:73)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)