Controller's cache isn't thread safe
The Controller's _request_cache attribute isn't used in a thread safe manner. Once upon a time we only added to it so this wasn't an issue, but now that we're doing cache invalidation we need to be more careful. For instance...
# check for cached results
for param in list(lookup_params):
cache_key = "getconf.%s" % param.lower()
if cache_key in self._request_cache:
reply[param] = self._request_cache[cache_key]
lookup_params.remove(param)
Querying and changing the cache should be under methods that acquire a cache lock.