[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