Reduce the LockFileManager timeout, and provide unsafeRemoveLockFile
authorBen Langmuir <blangmuir@apple.com>
Mon, 9 Feb 2015 20:34:24 +0000 (20:34 +0000)
committerBen Langmuir <blangmuir@apple.com>
Mon, 9 Feb 2015 20:34:24 +0000 (20:34 +0000)
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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228603 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Support/LockFileManager.h
lib/Support/LockFileManager.cpp

index 61c65dabae3c9d785d59f201e55f7441c5ed116e..849fe471bf9f249caa8dc726edb552f096add007 100644 (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
index 5b82c367c0ad1253ea26bad0574cdd24ac146f58..9ec52ac540954e978088a577990d0a7029a7db7d 100644 (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());
+}