mapnik/test
Matt Amos 3d7b84a598 Fix deadlock in recursive datasource registration.
The datasource cache was taking an exclusive lock on the simple
mutex used to protect the singleton's data pointer. This works
okay when everyone always calls it non-recursively, but when the
recursive flag is true then it will always deadlock when called
on any directory with subdirectories.

Additionally, many methods which accessed private data members of
the cache were not protected by any locks.

Since the call pattern of registering datasources is strictly
tree-shaped then it's a good candidate for a recursive mutex. This
has a slightly higher overhead than a simple mutex, so rather than
change the singleton's mutex to be recursive, I've added a new
instance mutex to the datasource cache.

Also, added a very basic test which reproduces the problem and
shows that it's fixed with this patch.
2015-08-23 20:25:35 +01:00
..
data@cb1e7f2ed8 update test data 2015-08-17 16:56:00 +02:00
data-visual@886655410c update test 2015-08-12 11:35:26 +02:00
standalone Fix deadlock in recursive datasource registration. 2015-08-23 20:25:35 +01:00
unit update svg tests 2015-08-17 16:53:42 +02:00
visual visual tests: report total time spent by renderers 2015-07-08 20:01:23 +00:00
build.py always compile tests even if not installing 2015-05-21 07:41:28 -07:00
catch.hpp upgrade catch 2015-04-26 01:15:31 +02:00
cleanup.hpp use correct define -> HAVE_LIBXML2 2015-07-30 18:30:22 +02:00
run make test/run independent of bash location 2015-05-26 14:38:51 -07:00