Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 246803 - Clear cache on read error
Summary: Clear cache on read error
Status: RESOLVED FIXED
Alias: None
Product: Equinox
Classification: Eclipse Project
Component: p2 (show other bugs)
Version: 3.4   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: 3.5 M6   Edit
Assignee: John Arthorne CLA
QA Contact:
URL:
Whiteboard:
Keywords:
: 248667 (view as bug list)
Depends on:
Blocks: 248602
  Show dependency tree
 
Reported: 2008-09-09 21:24 EDT by Olivier Thomann CLA
Modified: 2009-02-17 17:08 EST (History)
3 users (show)

See Also:


Attachments
Fix v01 (1.51 KB, patch)
2009-02-17 17:08 EST, John Arthorne CLA
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Olivier Thomann CLA 2008-09-09 21:24:06 EDT
When I tried to add the 3.5 integration builds update site, I got:

org.eclipse.equinox.internal.provisional.p2.core.ProvisionException: Unable to read repository at file:/D:/eclipse/I0806/eclipse/p2/org.eclipse.equinox.p2.metadata.repository/cache/content1246609472.jar
at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryIO.read(MetadataRepositoryIO.java:74)
at org.eclipse.equinox.internal.provisional.spi.p2.metadata.repository.SimpleMetadataRepositoryFactory.validateAndLoad(SimpleMetadataRepositoryFactory.java:116)
at org.eclipse.equinox.internal.provisional.spi.p2.metadata.repository.SimpleMetadataRepositoryFactory.load(SimpleMetadataRepositoryFactory.java:85)
at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:485)
at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:451)
at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:435)
at org.eclipse.equinox.internal.p2.director.SimplePlanner.updatesFor(SimplePlanner.java:384)
at org.eclipse.equinox.internal.provisional.p2.ui.query.QueryableUpdates.query(QueryableUpdates.java:48)
at org.eclipse.equinox.internal.provisional.p2.ui.actions.UpdateAction.getProvisioningPlan(UpdateAction.java:71)
at org.eclipse.equinox.internal.provisional.p2.ui.actions.ProfileModificationAction$1.run(ProfileModificationAction.java:62)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)
Caused by: java.io.IOException: Fin de fichier prématurée.
at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryIO$Parser.parse(MetadataRepositoryIO.java:198)
at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryIO.read(MetadataRepositoryIO.java:56)
... 10 more

using eclipse.buildId=I20080903-1200
java.fullversion=J2RE 1.6.0 IBM J9 2.4 Windows XP x86-32 jvmwi3260-20080415_18762 (JIT enabled, AOT enabled)
J9VM - 20080415_018762_lHdSMr
JIT  - r9_20080415_1520
GC   - 20080415_AA
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=fr_CA
Command-line arguments:  -os win32 -ws win32 -arch x86 -consolelog -console

A second stack trace was also found in the .log file:
java.io.IOException: Fin de fichier prématurée.
at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryIO$Parser.parse(MetadataRepositoryIO.java:198)
at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryIO.read(MetadataRepositoryIO.java:56)
at org.eclipse.equinox.internal.provisional.spi.p2.metadata.repository.SimpleMetadataRepositoryFactory.validateAndLoad(SimpleMetadataRepositoryFactory.java:116)
at org.eclipse.equinox.internal.provisional.spi.p2.metadata.repository.SimpleMetadataRepositoryFactory.load(SimpleMetadataRepositoryFactory.java:85)
at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:485)
at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:451)
at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:435)
at org.eclipse.equinox.internal.p2.director.SimplePlanner.updatesFor(SimplePlanner.java:384)
at org.eclipse.equinox.internal.provisional.p2.ui.query.QueryableUpdates.query(QueryableUpdates.java:48)
at org.eclipse.equinox.internal.provisional.p2.ui.actions.UpdateAction.getProvisioningPlan(UpdateAction.java:71)
at org.eclipse.equinox.internal.provisional.p2.ui.actions.ProfileModificationAction$1.run(ProfileModificationAction.java:62)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)
Comment 1 Pascal Rapicault CLA 2008-12-17 23:36:21 EST
We need to look into this as part of our effort to improve error message.
Comment 2 John Arthorne CLA 2009-01-02 13:18:28 EST
I think the problem here is that a corrupt local cache will continue to fail as long as the cache file timestamp remains the same as the remote file. We should clear the local cache on read failure so that it will re-fetch the content on a subsequent read.
Comment 3 John Arthorne CLA 2009-01-12 17:14:12 EST
*** Bug 248667 has been marked as a duplicate of this bug. ***
Comment 4 John Arthorne CLA 2009-02-17 17:08:15 EST
Created attachment 125952 [details]
Fix v01
Comment 5 John Arthorne CLA 2009-02-17 17:08:55 EST
Fixed in HEAD.