when locking a tile during metatiling, apr_file_lock is used, but a second call from inside a single process to this function will not block.
What steps will reproduce the problem? 1. use a worker apache mpm 2. do simultaneous requests on an unseeded area of a metatiled layer 3.
What is the expected output? all tiles return correctly once the metatile has been rendered
What do you see instead? some tiles return with an error code
when locking a tile during metatiling, apr_file_lock is used, but a second call from inside another thread of a same process to this function will not block.
setting to medium priority, as this only happens if the tile hasn't been seeded yet, and does not cause an overload on the source. a user coming on an unseeded area will see "pink" tiles though. this should only happen once in practice.
fix: investigate if there's a way of obtaining thread-safe locking on files. if not, use our own implementation of file locking: instead of relying on apr_file_lock, loop with a delay until the lockfile has been deleted by the rendering process.
Comment #1
Posted on Jan 8, 2011 by Helpful Rhinofixed. we no longer use lockfiles for tile locking, but instead posix semaphores
Status: Fixed
Labels:
Type-Defect
Priority-Medium
Component-Caches