diff options
Diffstat (limited to 'Assistant/Threads/Watcher.hs')
-rw-r--r-- | Assistant/Threads/Watcher.hs | 35 |
1 files changed, 0 insertions, 35 deletions
diff --git a/Assistant/Threads/Watcher.hs b/Assistant/Threads/Watcher.hs index 9b9321014..c10d03eeb 100644 --- a/Assistant/Threads/Watcher.hs +++ b/Assistant/Threads/Watcher.hs @@ -122,7 +122,6 @@ waitFor sig next = do {- Initial scartup scan. The action should return once the scan is complete. -} startupScan :: IO a -> Assistant a startupScan scanner = do - checkStaleIndexLock liftAnnex $ showAction "scanning" alertWhile' startupScanAlert $ do r <- liftIO scanner @@ -143,40 +142,6 @@ startupScan scanner = do return (True, r) -{- Detect when .git/index.lock exists and has no git process currently - - writing to it. This strongly suggests it is a stale lock file, because - - git writes the new index to index.lock and renames it over top. - - - - However, this could be on a network filesystem. Which is not very safe - - anyway (the assistant relies on being able to check when files have - - no writers to know when to commit them). Just in case, when the file - - appears stale, we delay for one minute, and check its size. If the size - - changed, delay for another minute, and so on. - -} -checkStaleIndexLock :: Assistant () -checkStaleIndexLock = do - dir <- liftAnnex $ fromRepo Git.localGitDir - checkStale $ dir </> "index.lock" -checkStale :: FilePath -> Assistant () -checkStale indexlock = go =<< getsize - where - getsize = liftIO $ catchMaybeIO $ fileSize <$> getFileStatus indexlock - go Nothing = return () - go oldsize = ifM (liftIO $ null <$> Lsof.query ["--", indexlock]) - ( do - waitforit "to check stale" - size <- getsize - if size == oldsize - then liftIO $ nukeFile indexlock - else go size - , do - waitforit "for writer on" - go =<< getsize - ) - waitforit why = do - notice ["Waiting for 60 seconds", why, indexlock] - liftIO $ threadDelaySeconds $ Seconds 60 - {- Hardcoded ignores, passed to the DirWatcher so it can avoid looking - at the entire .git directory. Does not include .gitignores. -} ignored :: FilePath -> Bool |