Reduce the LockFileManager timeout, and provide unsafeRemoveLockFile

5 minutes is an eternity, so try to strike a better balance between
waiting long enough for any reasonable module build and not so long that
users kill the process because they think it's hanging.

Also give the client a way to delete the lock file after a timeout.

llvm-svn: 228603
This commit is contained in:
Ben Langmuir 2015-02-09 20:34:24 +00:00
parent 955c4ff9c3
commit d2d52de229
2 changed files with 10 additions and 2 deletions

View File

@ -77,6 +77,10 @@ public:
/// \brief For a shared lock, wait until the owner releases the lock.
WaitForUnlockResult waitForUnlock();
/// \brief Remove the lock file. This may delete a different lock file than
/// the one previously read if there is a race.
std::error_code unsafeRemoveLockFile();
};
} // end namespace llvm

View File

@ -186,8 +186,8 @@ LockFileManager::WaitForUnlockResult LockFileManager::waitForUnlock() {
Interval.tv_sec = 0;
Interval.tv_nsec = 1000000;
#endif
// Don't wait more than five minutes for the file to appear.
unsigned MaxSeconds = 300;
// Don't wait more than one minute for the file to appear.
unsigned MaxSeconds = 60;
bool LockFileGone = false;
do {
// Sleep for the designated interval, to allow the owning process time to
@ -263,3 +263,7 @@ LockFileManager::WaitForUnlockResult LockFileManager::waitForUnlock() {
// Give up.
return Res_Timeout;
}
std::error_code LockFileManager::unsafeRemoveLockFile() {
return sys::fs::remove(LockFileName.str());
}