On Mon, May 27, 2013 at 13:50 -0400, Donald Stufft wrote: > On May 27, 2013, at 12:39 PM, Donald Stufft <don...@stufft.io> wrote: > > > > > On May 27, 2013, at 8:08 AM, holger krekel <hol...@merlinux.eu> wrote: > > > >> Hi Noah, Donald, (CC also Richard, Christian), > >> > >> i just checked with a test package and think we might have a cache > >> consistency / changelog API problem. It took me a while but here is > >> the basic thing: I uploaded a test package, changelog API reports it has > >> changed, then i go to its simple page, and some of the time the new release > >> file shows up, sometimes not. > >> > >> Tools like bandersnatch, pep381 and devpi-server (and probably others) > >> use PyPI's changelog API to determine if there are changes. It seems > >> those changes are signalled faster than they become consistently > >> accessible > >> through the CDN. This can lead to inconsistent mirrors because when > >> the CDN has the files there is no change event anymore. Such mirrors > >> are run by companies in-house so i think it's a real problem. > >> > >> Even without mirroring there can be problems because installs are not > >> directly repeatable: "pip install XYZ>=2.0" can give you first 2.0.1, > >> then 2.0.0 a minute later. I had hoped that a particular ip address > >> sees things consistently. > >> > >> I am not familiar with Fastly's caching properties -- can they notify > >> about the fact that a page/file is consistently up-to-date everywhere? > >> Or can the cache be globally invalidated for a particular page/file? > >> Any other ideas? > >> > >> Failing customizing Fastly usage and also maybe for the short term, > >> is/could there be a special location provided by pypi.python.org which > >> the above tools could use to get at the actual non-cached data? We > >> could then maybe mitigate the problem through updates of the respective > >> tools. > >> That would at least solve the problem for one of my customers i think. > >> > >> best, > >> holger > >> > >> > >> On Sun, May 26, 2013 at 10:34 -0700, Noah Kantrowitz wrote: > >>> </farnsworth> > >>> > >>> but seriously, at long last today it was my honor to throw the DNS switch > >>> to move PyPI to the Fastly caching CDN. I would like to thank Donald > >>> Stufft for doing much of the heavy lifting on the PyPI side, and to > >>> Fastly for graciously offering to host us. What does this mean for > >>> everyone? Well the biggest change is PyPI should get a whole lot faster. > >>> There are two major downsides however. There will now be a delay of > >>> several minutes in some cases between updating a package and having it be > >>> installable, and download counts will now be even more incorrect than > >>> they were before. The PyPI admins are discussing what to do about > >>> download counts long-term, but for now we all feel that the performance > >>> and availability benefits outweigh the loss. If anyone has any questions, > >>> or hears anything about issues with PyPI please don't hesitate to contact > >>> me. > >>> > >>> --Noah > >>> > >> > >> > >> > >>> _______________________________________________ > >>> Distutils-SIG maillist - Distutils-SIG@python.org > >>> http://mail.python.org/mailman/listinfo/distutils-sig > >> > >> _______________________________________________ > >> Distutils-SIG maillist - Distutils-SIG@python.org > >> http://mail.python.org/mailman/listinfo/distutils-sig > > > > I mentioned it on twitter but might as well mention it here as well. > > > > Currently there is no invalidation going on. The effect on the mirroring > > was unanticipated and I'm currently getting the invalidation API setup > > within PyPI. > > > > ----------------- > > Donald Stufft > > PGP: 0x6E3CBCE93372DCFA // 7C6B 7C5D 5E2B 6356 A926 F04F 6E3C BCE9 3372 DCFA > > > > _______________________________________________ > > Distutils-SIG maillist - Distutils-SIG@python.org > > http://mail.python.org/mailman/listinfo/distutils-sig > > > > /simple/ Pages should now be immediately invalidated when a new package is > released.
thanks Donald. Looking at the implementation, i wonder what happens if after ``self._conn.commit()`` a changelog API call arrives, returns changes and a client uses it to retrieve changes before the fastly-purging takes place. It's still a potential race-condition or am i missing something? best, holger > ----------------- > Donald Stufft > PGP: 0x6E3CBCE93372DCFA // 7C6B 7C5D 5E2B 6356 A926 F04F 6E3C BCE9 3372 DCFA > _______________________________________________ Distutils-SIG maillist - Distutils-SIG@python.org http://mail.python.org/mailman/listinfo/distutils-sig