A better system for handling tile loading errors. At the moment I don't handle these and the default behaviour is quite permissive, which means erroring tiles can pile up in the tile loading queue until that is maxed out and no more tiles are loaded. This is what causes white tiles to appear in some maps and eventually no maps to load at all.
EG1 CycleOSM is quite bad for this when it is going slowly. The v slow tiles block the queue, such that if you give up on CycleOSM and switch back to eg OSM still nothing happens because OSM cannot load while the queue is blocked. The solution here is to put a timeout into the new error handler and stop it blocking the queue.
EG2 OS DataHub requires the token to be renewed frequently and in the short window when the token has expired but before the next one is acquired a tile can fail. This also blocks the queue but at least the error state is reached quickly and the queue gets unblocked. The solution here is to return a temporary blank tile and handle the error.
EG2 unexpected errors from any other server. Handle them with both the above: stop them blocking the Q via a timeout and return a blank tile.
A better system for handling tile loading errors. At the moment I don't handle these and the default behaviour is quite permissive, which means erroring tiles can pile up in the tile loading queue until that is maxed out and no more tiles are loaded. This is what causes white tiles to appear in some maps and eventually no maps to load at all.
EG1 CycleOSM is quite bad for this when it is going slowly. The v slow tiles block the queue, such that if you give up on CycleOSM and switch back to eg OSM still nothing happens because OSM cannot load while the queue is blocked. The solution here is to put a timeout into the new error handler and stop it blocking the queue.
EG2 OS DataHub requires the token to be renewed frequently and in the short window when the token has expired but before the next one is acquired a tile can fail. This also blocks the queue but at least the error state is reached quickly and the queue gets unblocked. The solution here is to return a temporary blank tile and handle the error.
EG2 unexpected errors from any other server. Handle them with both the above: stop them blocking the Q via a timeout and return a blank tile.