This doesn't need to be threadsafe, as there is only one reader thread, and
the internal datastructures are not shared.
The only thing we need to ensure is that we pick up a flag when settings
are updated, right?  I mean we could remove the volatile and potentially
have a delayed read of this flag.