Recent Changes to R2 HTTP Range GETs?

For Workers & Pages, what is the name of the domain?

alltheplaces-data.openaddresses.io

What is the issue or error you’re encountering

HTTP GET requests with a Range header to my bucket that has Incremental Migration enabled return data beyond what was requested. For example, curl 'https://alltheplaces-data.openaddresses.io/runs/2025-03-15-13-32-10/output.pmtiles' -H 'range: bytes=0-16383' | wc -c downloads the whole file instead of returning just the first 16K as requested. The same request through the r2.dev endpoint works as expected: curl 'https://pub-000ea379ac234b53924d6f50102f4d3d.r2.dev/runs/2025-03-15-13-32-10/output.pmtiles' -H 'range: bytes=0-16383' | wc -c. This worked as recently as a week or two ago.

What are the steps to reproduce the issue?

  1. Create an R2 bucket
  2. Enable Sippy / “Incremental migration” with an S3 bucket
  3. Make an HTTP GET with a Range request header

An update: I just disabled Incremental Migration and am still seeing the issue, so I don’t think it’s related to Sippy.

Ok, I think I probably just didn’t wait long enough. With Sippy disabled and waiting 15 minutes or so I see correct behavior with Range GETs.

This looks to be an example of Range requests not working with objects > 512MB. There are several examples of this in the related topics below.