| Summary: | [installer] installer logging and error messages | ||||||
|---|---|---|---|---|---|---|---|
| Product: | [Eclipse Project] Equinox | Reporter: | Volker Wegert <eclipse> | ||||
| Component: | p2 | Assignee: | P2 Inbox <equinox.p2-inbox> | ||||
| Status: | RESOLVED DUPLICATE | QA Contact: | |||||
| Severity: | normal | ||||||
| Priority: | P3 | CC: | pascal, pmcnerthney | ||||
| Version: | 3.4 | ||||||
| Target Milestone: | --- | ||||||
| Hardware: | Macintosh | ||||||
| OS: | Mac OS X - Carbon (unsup.) | ||||||
| Whiteboard: | |||||||
| Attachments: |
|
||||||
|
Description
Volker Wegert
I confirm that I have seen this too. I fail to understand why the download would fail the first time and then work. Created attachment 140560 [details]
Error log from failed p2installer run
I just encountered this very issue using the 3.5 installer from here: http://download.eclipse.org/equinox/drops/R-3.5-200906111540/equinox.p2.installer-3.5-linux.gtk.x86.tar.gz Every time I ran it to install the default Eclipse SDK, the dialog box would tell me that, "An error occurred while collecting items to be installed". I have attached a log from one such run. When debugging this issue under a Java debugger, it would sometimes work correctly. This lead me to suspect some kind of threading issue. Upon further investigation, I determined that the issue is in the org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager class. AbstractRepositoryManager listens to IProvisioningEventBus events. When a RepositoryEvent of type DISCOVERED occurs, that URI is added to the collections of known repositories, using the enabled setting in the event. What I found happening was such an event for the http://download.eclipse.org/eclipse/updates/3.5 repository, with the enabled flag set to false. If this location has not yet been added, this causes a RepositoryInfo entry to be added for this location with isEnabled set to false. Then, when the http://download.eclipse.org/eclipse/updates/3.5 repository is added using the void addRepository(IRepository repository, boolean signalAdd, String suffix) method, the version of RepositoryInfo added from the IProvisioningEventBus event is used, rather than creating a new RepositoryInfo with isEnabled set to true. So this is very dependent on thread scheduling. If the IProvisioningEventBus RepositoryEvent DISCOVERED event is scheduled after the normal adding of this repository, then the problem does not occur. But if the IProvisioningEventBus event is scheduled before, then this repository is left in a state where isEnabled is set to false. Thanks Patrick. Someone else recently came to the same conclusion and provided a patch, so I'll mark this as a duplicate. *** This bug has been marked as a duplicate of bug 282427 *** |