Interdiff:

diff --git a/src/Ganeti/WConfd/DeathDetection.hs
b/src/Ganeti/WConfd/DeathDetection.hs
index 3b0e69c..26264a0 100644
--- a/src/Ganeti/WConfd/DeathDetection.hs
+++ b/src/Ganeti/WConfd/DeathDetection.hs
@@ -63,8 +63,8 @@ cleanupLocksTask = forever . runResultT $ do
         died <- liftIO (isDead fpath)
         when died $ do
           logInfo $ show owner ++ " died, releasing locks and reservations"
-          persCleanup persistentLocks owner
           persCleanup persistentTempRes owner
+          persCleanup persistentLocks owner
           _ <- liftIO . E.try $ removeFile fpath
                :: WConfdMonad (Either IOError ())
           return ()



On Fri, Jul 4, 2014 at 2:15 PM, Klaus Aehlig <[email protected]> wrote:

> On Fri, Jul 04, 2014 at 01:17:59PM +0200, 'Petr Pudlak' via ganeti-devel
> wrote:
> > .. as it needs to be stored and reloaded if WConfd is restarted while
> > jobs are running.
> >
> > Signed-off-by: Petr Pudlak <[email protected]>
> > ---
> >  src/Ganeti/Path.hs                  |  5 +++++
> >  src/Ganeti/WConfd/Core.hs           |  3 +--
> >  src/Ganeti/WConfd/DeathDetection.hs |  3 ++-
> >  src/Ganeti/WConfd/Monad.hs          | 23 ++++++++++++++++++-----
> >  src/Ganeti/WConfd/Persistent.hs     | 14 +++++++++++++-
> >  src/Ganeti/WConfd/Server.hs         |  3 +++
> >  src/Ganeti/WConfd/TempRes.hs        |  4 ++--
> >  7 files changed, 44 insertions(+), 11 deletions(-)
>
> > +++ b/src/Ganeti/WConfd/DeathDetection.hs
> > @@ -62,8 +62,9 @@ cleanupLocksTask = forever . runResultT $ do
> >          let fpath = ciLockFile owner
> >          died <- liftIO (isDead fpath)
> >          when died $ do
> > -          logInfo $ show owner ++ " died, releasing locks"
> > +          logInfo $ show owner ++ " died, releasing locks and
> reservations"
> >            persCleanup persistentLocks owner
> > +          persCleanup persistentTempRes owner
>
> Please release locks last. In the future we might get a dependency that
> ownership of a lock is a prerequisite for certain reservations whereas
> a dependency in the other direction cannot happen. So by switching the
> order (first release temporary reseverations, then release locks) we avoid
> subtle races in the future.
>
> >            _ <- liftIO . E.try $ removeFile fpath
> >                 :: WConfdMonad (Either IOError ())
> >            return ()
>
>
> Rest LGTM
>
> --
> Klaus Aehlig
> Google Germany GmbH, Dienerstr. 12, 80331 Muenchen
> Registergericht und -nummer: Hamburg, HRB 86891
> Sitz der Gesellschaft: Hamburg
> Geschaeftsfuehrer: Graham Law, Christine Elizabeth Flores
>

Reply via email to