Eliminate possible race between LockFile() vs UnlockFile() (#7721)
Summary: LockFile() accessing LockHoldingInfo (element of locked_files) by reference after mutex_locked_files had been released. Pull Request resolved: https://github.com/facebook/rocksdb/pull/7721 Reviewed By: pdillinger Differential Revision: D25431839 Pulled By: jay-zhuang fbshipit-source-id: eefee93f12a8016a98e2466e442af2605b3e2a5e
This commit is contained in:
parent
8ff6557e7f
commit
40f2b65008
2
env/fs_posix.cc
vendored
2
env/fs_posix.cc
vendored
@ -766,9 +766,9 @@ class PosixFileSystem : public FileSystem {
|
||||
// closed, all locks the process holds for that *file* are released
|
||||
const auto it_success = locked_files.insert({fname, lhi});
|
||||
if (it_success.second == false) {
|
||||
LockHoldingInfo prev_info = it_success.first->second;
|
||||
mutex_locked_files.Unlock();
|
||||
errno = ENOLCK;
|
||||
LockHoldingInfo& prev_info = it_success.first->second;
|
||||
// Note that the thread ID printed is the same one as the one in
|
||||
// posix logger, but posix logger prints it hex format.
|
||||
return IOError("lock hold by current process, acquire time " +
|
||||
|
Loading…
Reference in New Issue
Block a user