Inspired by issue 767472 - all leveldb clients need various thread traits
* MayBlock - for I/O
* WithBaseSyncPrimitives - for base::ConditionVariable
The latter appears subtle - it isn't always used, so a client may not be aware this trait is required until suddenly base::ThreadRestrictions::AssertWaitAllowed() runs and *boom*!
I tried dropping base::ThreadRestrictions::AssertIOAllowed() and base::ThreadRestrictions::AssertWaitAllowed() into the ChromiumEnv constructor and BGThread() method. On startup, chrome immediately hits the check in data_reduction_proxy::DataStoreImpl::OpenDB() on the I/O thread. Is this a problem waiting to happen?
Or am I misunderstanding things?
Comment 1 by benhenry@google.com
, Jan 10