From b3b502f132583cc022081c0126bf362448f1a8b3 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Wed, 9 Apr 2014 11:09:14 -0700 Subject: [PATCH] mon/Elector: ignore ACK from peers without required features If an old peer gets a PROPOSE from us, we need to be sure to ignore their ACK. Ignoring their PROPOSEs isn't sufficient to keep them out of a quorum. Fixes: #8042 Signed-off-by: Sage Weil --- src/mon/Elector.cc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/mon/Elector.cc b/src/mon/Elector.cc index 3572c8b48c15a..539b291cd35e3 100644 --- a/src/mon/Elector.cc +++ b/src/mon/Elector.cc @@ -278,6 +278,12 @@ void Elector::handle_ack(MMonElection *m) return; } assert(m->epoch == epoch); + if ((required_features ^ m->get_connection()->get_features()) & + required_features) { + dout(5) << " ignoring ack from mon" << from + << " without required features" << dendl; + return; + } if (electing_me) { // thanks -- 2.39.5