[PATCH] Revert "ctdb-daemon: Check packet generation against database generation"

Martin Schwenke martin at meltin.net
Tue Feb 9 08:32:27 UTC 2016


On Tue, 9 Feb 2016 19:31:15 +1100, Martin Schwenke <martin at meltin.net>
wrote:

> On Tue, 9 Feb 2016 11:23:55 +1100, Amitay Isaacs <amitay at gmail.com>
> wrote:
> 
> > This revert avoids the race condition where dmaster packets are processed
> > during recovery.  This causes ctdbd to abort due to miscalculation of
> > lmaster since vnnmap has been updated.
> > 
> > Here are the details from commit message:
> > 
> > BUG: https://bugzilla.samba.org/show_bug.cgi?id=11707
> > 
> > The checks against database generation are not required since
> > the global generation is updated as part of updating vnnmap
> > before the actual database recovery.  This change was done in
> > 5aab31a39a3589b910a78b96071d6aa5e6547696.
> > 
> > Checking only against the database generation is incomplete.  It can
> > cause CTDB to abort if the following sequence of events happen.
> > 
> >  - CTDB gets REQ_DMASTER packet (gen1)
> >    This packet processing gets deferred to get a record lock
> > 
> >  - CTDB goes into recovery, marks RECOVERY_ACTIVE
> >    CTDB recovery helper updates vnnmap (gen2)
> > 
> >  - CTDB processes REQ_DMASTER packet (gen1)
> >    The check against database generation (gen1) succeeds.
> >    The check for lmaster is now invalid because VNNMAP has changed.
> >    This will cause CTDB to abort due to protocol error.
> > 
> > Reverting the patch stops processing packets of older generation before
> > they get into call processing.  
> 
> Reviewed-by: Martin Schwenke <martin at meltin.net>

Bah, not Reviewed-by: since it has both of our Signed-off-by: tags...

peace & happiness,
martin



More information about the samba-technical mailing list