Summary:
instead of thread_local
The cleanup path for the rocksdb database might not have the
thread_updater_local_cache_ pointer initialized because the thread
executing the cleanup is likely not a rocksdb thread. This results in a
memory leak detected by Valgrind. The cleanup code path should use the
thread_status_updater pointer obtained from the DB object instead of a
thread local one.
Closes https://github.com/facebook/rocksdb/pull/2059
Differential Revision:
D4801611
Pulled By: hermanlee
fbshipit-source-id:
407d7de
}
void ThreadStatusUtil::EraseDatabaseInfo(const DB* db) {
- if (thread_updater_local_cache_ == nullptr) {
+ ThreadStatusUpdater* thread_updater = db->GetEnv()->GetThreadStatusUpdater();
+ if (thread_updater == nullptr) {
return;
}
- thread_updater_local_cache_->EraseDatabaseInfo(db);
+ thread_updater->EraseDatabaseInfo(db);
}
bool ThreadStatusUtil::MaybeInitThreadLocalUpdater(const Env* env) {