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.

Reply via email to