Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 269470

Summary: are mirrors and download.php working ok?
Product: Community Reporter: David Williams <david_williams>
Component: Cross-ProjectAssignee: Cross-Project issues <cross-project.inbox>
Status: RESOLVED INVALID QA Contact:
Severity: normal    
Priority: P3 CC: john.arthorne, richard.gronback
Version: unspecified   
Target Milestone: ---   
Hardware: PC   
OS: Windows XP   
Whiteboard:

Description David Williams CLA 2009-03-20 02:19:51 EDT
The reason I ask is that while trying to do many Galileo monster builds, we got a LOT of "file not found" exceptions from various mirrors. 

For one, I thought the mirror system is supposed to avoid quite a bit of that, with it's system of TIME stamps? 

For another thing, I thought I'd be cleaver and trick the mirroring system by 'touching' my files. I thought that would have made them all seem "out of sync" and thus would have always gone directly to eclipse.org. But, to my surprise, just minutes afterward, some were still being reported in sync, I guess, but still had missing files. 


Sorry not formatted well, but the following list has sites and URLS that were  collected over an hour or two. 3 or 4 mirror sites ... always a different file. 

So, I'm just opening this in case it is useful to you ... perhaps this is all normal processing flow for the mirrors and it is always this way ... and perhaps the son of the update manager :) is handling them just as well as his father did. 

= = = = 
galileo-I20090319-0747.log.txt:  java.io.FileNotFoundException: http://www.software-mirror.com/eclipse/webtools/milestones/features/org.eclipse.wst.common.fproj_3.1.0.v200901260254-377-8s733L394A3AAH.jar
galileo-I20090319-1634.log.txt:  java.io.FileNotFoundException: http://mirror.cc.columbia.edu/pub/software/eclipse/webtools/milestones/features/org.eclipse.wst.server_userdoc.feature_3.1.0.v200903071919-209L7w311A12343145.jar
galileo-I20090319-2253.log.txt:  java.io.FileNotFoundException: http://mirror.cc.columbia.edu/pub/software/eclipse/webtools/milestones/plugins/org.eclipse.wst.sse.core_1.1.400.v200903120635.jar
galileo-I20090320-0029.log.txt:  java.io.FileNotFoundException: http://mirror.cc.columbia.edu/pub/software/eclipse/webtools/milestones/features/org.eclipse.wst_3.1.0.v200810090150-7I5-8h_qUa6-RvEZ1rk2DSz-H6jj.jar
galileo-I20090320-0051.log.txt:  java.io.FileNotFoundException: http://mirror.cc.columbia.edu/pub/software/eclipse/webtools/milestones/plugins/org.eclipse.wst.common.modulecore_1.1.300.v200903120000.jar
galileo-I20090320-0051.log.txt:  java.io.FileNotFoundException: http://www.cs.rit.edu/mirrors/eclipse/webtools/milestones/plugins/org.eclipse.wst.web.ui_1.1.300.v200902242300.jar
galileo-I20090320-0051.log.txt:  java.io.FileNotFoundException: http://www.software-mirror.com/eclipse/webtools/milestones/features/org.eclipse.wst.web_ui.feature_3.1.0.v200901280206-7R77FSgEVw2xSggAokqaGieo7Je0.jar
galileo-I20090320-0113.log.txt:  java.io.FileNotFoundException: http://www.cs.rit.edu/mirrors/eclipse/webtools/milestones/features/org.eclipse.wst_3.1.0.v200810090150-7I5-8h_qUa6-RvEZ1rk2DSz-H6jj.jar
galileo-I20090320-0113.log.txt:  java.io.FileNotFoundException: http://www.cs.rit.edu/mirrors/eclipse/webtools/milestones/plugins/org.eclipse.wst.html.core_1.1.300.v200903120608.jar
galileo-I20090320-0113.log.txt:  java.io.FileNotFoundException: http://www.cs.rit.edu/mirrors/eclipse/webtools/milestones/plugins/org.eclipse.wst.html.ui_1.0.400.v200903120608.jar
galileo-I20090320-0148.log.txt:  java.io.FileNotFoundException: http://www.cs.rit.edu/mirrors/eclipse/webtools/milestones/plugins/org.eclipse.wst.common.modulecore_1.1.300.v200903120000.jar
Comment 1 Denis Roy CLA 2009-03-20 09:42:16 EDT
(In reply to comment #0)
> The reason I ask is that while trying to do many Galileo monster builds, we got
> a LOT of "file not found" exceptions from various mirrors. 

I don't understand. download.eclipse.org is mere inches away from build.eclipse.org, really, so I'm not sure why you're getting your jars from the States.

This is the one instance where it is preferable to use download.eclipse.org directly without mirrors -- they are all connected to the same Gigabit switch.
 
> For one, I thought the mirror system is supposed to avoid quite a bit of that,
> with it's system of TIME stamps? 

It does, but it's not perfect.  I just tried accessing all the links below, and they all worked but one (software-mirror).  Does java.io.FileNotFound get returned if there is a timeout or any other condition?

Comment 2 Richard Gronback CLA 2009-03-20 09:45:19 EDT
I've added -Declipse.p2.mirrors=false to the p2.director command that installs features in the base during the build, so hopefully we won't have many mirror issues in Galileo from now on.
Comment 3 John Arthorne CLA 2009-03-20 11:36:57 EDT
Disabling mirrors is probably the right answer for this particular case, but we don't want to recommend this to people not running directly on eclipse.org machines. The mirroring always puts the eclipse.org sites *last* in the mirrors list, so it is never contacted unless all mirrors fail. I don't think Denis would be pleased with the result if we put it at the top of the mirror list, but I can make that change if given the word ;)

Also, as mentioned on cross-project, p2 was giving up on FileNotFoundException rather than retrying, but this has been fixed recently.
Comment 4 John Arthorne CLA 2009-03-20 11:51:46 EDT
Just discussed this Pascal and Matthew "mirror guru" Piggott. Our only theory is that the ganymatic is getting started before the mirroring of those sites has completed. For example if the Ganymatic is kicked off very soon after a project has contributed (or recontributed) their bits to their update site, then that update site may not have completed mirroring yet. We have found it can sometimes take up to 24 hours for mirrors to fully propagate after a large build contribution. Those links are fine now, but it's hard to say if they had content at the time the failure occurred. In any case, disabling mirroring here should solve the problems, as will the recent p2 fix that will exhaustively try every mirror (including eclipse.org) before giving up on a file.
Comment 5 David Williams CLA 2009-03-20 12:23:33 EDT

> then that update site may not have completed mirroring yet

But in this case, it shouldn't be returned by download.php right? 

Feel free to close this as invalid or works for me. 

I was just surprised since I know that in the past, when we (accidentally) touched a file in update site directory, the list of mirrors would immediately drop to zero, and stay at zero for an hour or two (until some had synced up). 

So, I was surprised my hacky work-around attempt didn't work. (And Richard has fixed the script so our eclipse based builds won't use the mirrors, so I won't try to fool the mirroring system again :) 

So, I'm not worried ... just thought you might want to know in case it was a sign somethign was amiss. 



Comment 6 Denis Roy CLA 2009-03-20 13:20:17 EDT
(In reply to comment #4)
> Our only theory
> is that the ganymatic is getting started before the mirroring of those sites
> has completed.

Agreed, but judging by the filename (org.eclipse.wst.common.modulecore_1.1.300.v200903120000.jar) I would assume that seven hours from David's bug post to my attempt shouldn't have mattered.  Therefore, I'm curious to know why he got a not found error when the file "should" be 8 days old (if the name can be believed).

David:

I just tried the 'touch' technique, and it still works.
http://www.eclipse.org/downloads/download.php?file=/technology/babel/eclipse_properties-R-3.4.tar.gz

That file had about 40 mirror sites until I touched it.  A refresh of that page showed me zero mirrors.
Comment 7 David Williams CLA 2009-03-20 13:32:45 EDT
(In reply to comment #6)
> (In reply to comment #4)

> when the file "should" be 8 days old (if the name can be believed).

Yeah, can't believe those names. That's more a name of when it was last changed in cvs and built, as opposed to it's age. 

I wonder if P2 has a stale mirror list? (i.e. caches it too long) ... but, I know in my little scenario, I started P2 after I did the touch ... so, I'd think it'd get a fresh list of mirrors each invocation? 

Comment 8 Denis Roy CLA 2009-03-20 13:45:13 EDT
Another thing that can come into play is requesting a mirrorsURL based on a directory instead of a file.  For instance, no matter how much you touch this file:

2009-03-20 13:45 eclipse_properties-R-3.4.tar.gz

It will not not update the parent directory timestamp:

2009-03-20 11:36 .

I've recommended against using a directory for the mirrorsURL for this reason, but JohnA doesn't want to believe me. I may need to bribe him with beer.
Comment 9 John Arthorne CLA 2009-03-20 16:14:05 EDT
Mmm, beer.

Ah, what you argued previously was sort of the opposite (bug 266280 comment 16). There you suggested against the directory timestamp because it changed too *frequently*. This didn't bother me so much - better too frequent and getting less mirrors than not enough and getting incorrect results. Combining these comments I get:

 - adding/removing files changes directory timestamp
 - touching files doesn't change directory timestamp

I have entered bug 269570 to address this in p2. There is still no perfect answer because we are downloading hundreds of files, so whatever timestamp we use won't always be accurate.
Comment 10 David Williams CLA 2009-04-02 01:37:13 EDT
I think from all the discussion, things are working as best they can. 

Thanks everyone for checking.