LGTM with a single nit. On Fri, Nov 20, 2015 at 5:11 PM, 'Oleg Ponomarev' via ganeti-devel < [email protected]> wrote:
> Start execution of global POST hooks as soon as the scheduler > finds out that job process has disappeared. > Sorry for missing this nit earlier: a job process > > Signed-off-by: Oleg Ponomarev <[email protected]> > --- > src/Ganeti/JQScheduler.hs | 21 +++++++++++++++++++-- > 1 file changed, 19 insertions(+), 2 deletions(-) > > diff --git a/src/Ganeti/JQScheduler.hs b/src/Ganeti/JQScheduler.hs > index 19ef14a..ea4b845 100644 > --- a/src/Ganeti/JQScheduler.hs > +++ b/src/Ganeti/JQScheduler.hs > @@ -90,6 +90,7 @@ import Ganeti.Lens hiding (chosen) > import Ganeti.Logging > import Ganeti.Objects > import Ganeti.Path > +import Ganeti.Query.Exec (forkPostHooksProcess) > import Ganeti.Types > import Ganeti.Utils > import Ganeti.Utils.Livelock > @@ -474,13 +475,29 @@ checkForDeath state jobWS = do > return died > > -- | Trigger job detection for the job with the given job id. > --- Return True, if the job is dead. > +-- If the job is dead, start post hooks execution process and return True > cleanupIfDead :: JQStatus -> JobId -> IO Bool > cleanupIfDead state jid = do > logDebug $ "Extra job-death detection for " ++ show (fromJobId jid) > jobs <- readIORef (jqJobs state) > let jobWS = find ((==) jid . qjId . jJob) $ qRunning jobs > - maybe (return True) (checkForDeath state) jobWS > + -- and run the post hooks > + let runHooks = do > + r <- runResultT . withLock (jqForkLock state) > + $ forkPostHooksProcess jid > + let sjid = show $ fromJobId jid > + logDebug $ genericResult ((++) $ "Error starting post hooks > process " > + ++ "for disappeared job " > + ++ sjid ++ ":") > + (\pid -> "Post hooks for disappeared job > " > + ++ sjid ++ "have started in " > + ++ show pid) > + r > + dead <- maybe (return True) (checkForDeath state) jobWS > + if dead > + then runHooks > + else pure () > + return dead > > -- | Force the queue to check the state of all jobs. > updateStatusAndScheduleSomeJobs :: JQStatus -> IO () > -- > 2.6.0.rc2.230.g3dd15c0 > > Hrvoje Ribicic Ganeti Engineering Google Germany GmbH Dienerstr. 12, 80331, München Geschäftsführer: Matthew Scott Sucherman, Paul Terence Manicle Registergericht und -nummer: Hamburg, HRB 86891 Sitz der Gesellschaft: Hamburg Diese E-Mail ist vertraulich. Wenn Sie nicht der richtige Adressat sind, leiten Sie diese bitte nicht weiter, informieren Sie den Absender und löschen Sie die E-Mail und alle Anhänge. Vielen Dank. This e-mail is confidential. If you are not the right addressee please do not forward it, please inform the sender, and please erase this e-mail including any attachments. Thanks.
