openstreetmap/operations

Consider blocking /dirty on the tile CDN

Closed this issue · 2 comments

Users have oudated expectations of what requesting https://tile.openstreetmap.org/z/x/y.png/dirty does, based on when there was one render server. Their expectation is that if the request a tile, see it is outdated, append /dirty, and everyone will get an updated version of the tile. When we had one render server, this was accurate, if they refreshed the correct way.

This has not been what happens for about a decade. What currently happens is a user requests a tile, it gets a tile from a load-balanced set of render servers, with different sets of servers depending on cache location, zoom, and (x/8)%2. This means that the user has, depending on region, a

  • 50% chance of sending the dirty command to a different server than they were viewing the tile from
  • 50% chance of reloading and getting a different server than they issued the dirty command to
  • 0% chance of fixing what they were trying to fix for all users

I do not believe it is ever sensible to issue the /dirty command to the CDN. Instead, if a user understands the internals of OSMF infrastructure, they need to issue it against the relevant backends.

The same applies to /status. Fetching a tile through the CDN and then fetching its /status does not guarantee the status page will be the status for the tile that was just viewed.

Implemented.

Instead, if a user understands the internals of OSMF infrastructure, they need to issue it against the relevant backends.

Which backends are relevant and what would one issue against them?

Marking a tile dirty always worked for me, was a bit sad to notice today that I couldn't make before/after screenshots on demand anymore. (The assumption made above, stating what "the user" assumes, is incorrect.) In today's case, the tiles refreshed on their own a few minutes later so I ended up being able to make my screenshot, but I am curious how one is supposed to do this now.

To also help others, perhaps the /dirty page could mention what one should do instead. Current behavior is loading for a long time and then showing "invalid tile request".