For the S3 mirrors, there were three distinct issues at play.
Background: S3 is deals with "+" in backwards ways. The short version is that if you have a "+" in the name, you have to upload it three times to deal with character encoding problems -- once with "+", and then once with "%2B" and " " replacing any "+".
1. Amazon is now enforcing exact URL fetching. It used to be that if you requested "foo%2Bbar" and there was a file of "foo+bar", as long as your request was using utf-8 encoding you would get the file "foo+bar". Now, if you request "foo%2Bbar", even though the request is interpetted as "foo+bar" in ascii, you must have "foo%2Bbar" in the bucket.
2. My code had a bug where it was not properly syncronizing and checking the different encodings of "+". The result was that some "+" files were not getting pushed up.
3. My code had a second bug which was caused by archive.ubuntu.com not returning content-type in the http headers. Previously I was using the content-type header from archive.ubuntu.com to set the content type header for S3. However, recently that changed, which was causing syncronization problems.
The issue was fixed late last on 2012-05-23. After looking at the logs, the problems seems to have been fixed.
For the S3 mirrors, there were three distinct issues at play.
Background: S3 is deals with "+" in backwards ways. The short version is that if you have a "+" in the name, you have to upload it three times to deal with character encoding problems -- once with "+", and then once with "%2B" and " " replacing any "+".
1. Amazon is now enforcing exact URL fetching. It used to be that if you requested "foo%2Bbar" and there was a file of "foo+bar", as long as your request was using utf-8 encoding you would get the file "foo+bar". Now, if you request "foo%2Bbar", even though the request is interpetted as "foo+bar" in ascii, you must have "foo%2Bbar" in the bucket.
2. My code had a bug where it was not properly syncronizing and checking the different encodings of "+". The result was that some "+" files were not getting pushed up.
3. My code had a second bug which was caused by archive.ubuntu.com not returning content-type in the http headers. Previously I was using the content-type header from archive.ubuntu.com to set the content type header for S3. However, recently that changed, which was causing syncronization problems.
The issue was fixed late last on 2012-05-23. After looking at the logs, the problems seems to have been fixed.
Marking fixed released.