From 3e577a6dd3e1431b84311ef178244432963296ce Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 25 Sep 2020 11:47:34 -0400 Subject: [PATCH] remove reapZombies Believed to be no longer needed as I've squashed the last ones. Note that, in Test.Framework, I can see no reason for the code to have run it twice. It does not cause running processes to exit after all, so any process that has leaked and is running and causing problems with cleanup of the directory won't be helped by running it. This commit was sponsored by Mark Reidenbach on Patreon. --- Annex/Action.hs | 24 ------------------------ Benchmark.hs | 5 ----- Test/Framework.hs | 4 +--- 3 files changed, 1 insertion(+), 32 deletions(-) diff --git a/Annex/Action.hs b/Annex/Action.hs index b3ad1d9088..1902b0d89c 100644 --- a/Annex/Action.hs +++ b/Annex/Action.hs @@ -5,20 +5,13 @@ - Licensed under the GNU AGPL version 3 or higher. -} -{-# LANGUAGE CPP #-} - module Annex.Action ( startup, shutdown, stopCoProcesses, - reapZombies, ) where import qualified Data.Map as M -#ifndef mingw32_HOST_OS -import System.Posix.Process (getAnyProcessStatus) -import Utility.Exception -#endif import Annex.Common import qualified Annex @@ -38,7 +31,6 @@ shutdown nocommit = do saveState nocommit sequence_ =<< M.elems <$> Annex.getState Annex.cleanup stopCoProcesses - liftIO reapZombies -- zombies from long-running git processes {- Stops all long-running git query processes. -} stopCoProcesses :: Annex () @@ -47,19 +39,3 @@ stopCoProcesses = do checkAttrStop hashObjectStop checkIgnoreStop - -{- Reaps any zombie processes that may be hanging around. - - - - Warning: Not thread safe. Anything that was expecting to wait - - on a process and get back an exit status is going to be confused - - if this reap gets there first. -} -reapZombies :: IO () -#ifndef mingw32_HOST_OS -reapZombies = - -- throws an exception when there are no child processes - catchDefaultIO Nothing (getAnyProcessStatus False True) - >>= maybe (return ()) (const reapZombies) - -#else -reapZombies = return () -#endif diff --git a/Benchmark.hs b/Benchmark.hs index c365f0530e..4f191b501e 100644 --- a/Benchmark.hs +++ b/Benchmark.hs @@ -15,7 +15,6 @@ import CmdLine import CmdLine.GitAnnex.Options import qualified Annex import qualified Annex.Branch -import Annex.Action import qualified Options.Applicative as O @@ -35,10 +34,6 @@ mkGenerator cmds userinput = do -- The cmd is run for benchmarking without startup or -- shutdown actions. Annex.eval st $ performCommandAction cmd seek noop - -- Since the cmd will be run many times, some zombie - -- processes that normally only occur once per command - -- will build up; reap them. - reapZombies where -- Simplified versio of CmdLine.dispatch, without support for fuzzy -- matching or out-of-repo commands. diff --git a/Test/Framework.hs b/Test/Framework.hs index 79737b5481..ce7f482d06 100644 --- a/Test/Framework.hs +++ b/Test/Framework.hs @@ -245,15 +245,13 @@ cleanup dir = whenM (doesDirectoryExist dir) $ do finalCleanup :: IO () finalCleanup = whenM (doesDirectoryExist tmpdir) $ do - Annex.Action.reapZombies Command.Uninit.prepareRemoveAnnexDir' tmpdir catchIO (removeDirectoryForCleanup tmpdir) $ \e -> do print e putStrLn "sleeping 10 seconds and will retry directory cleanup" Utility.ThreadScheduler.threadDelaySeconds $ Utility.ThreadScheduler.Seconds 10 - whenM (doesDirectoryExist tmpdir) $ do - Annex.Action.reapZombies + whenM (doesDirectoryExist tmpdir) $ removeDirectoryForCleanup tmpdir checklink :: FilePath -> Assertion