]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: Elector: clean ack set on election start
authorJoao Eduardo Luis <joao.luis@inktank.com>
Thu, 4 Oct 2012 16:34:37 +0000 (17:34 +0100)
committerJoao Eduardo Luis <joao.luis@inktank.com>
Thu, 4 Oct 2012 16:36:10 +0000 (17:36 +0100)
We should never consider old 'acks' from monitors on a new election. We
usually do it, but we didn't if an election expired, because this code
didn't foresee the possibility of monitors changing ranks in-between
elections -- which doesn't happen if we specify the monmap during the
monitor's mkfs, but may happen when relying on 'mon initial peers'.

Failing to do so triggered an assertion after fixing bug #3252.

Backport: argonaut

Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
Signed-off-by: Sage Weil <sage@inktank.com>
src/mon/Elector.cc

index 970b8e44384dbad095892fb97c13fc719723e4e9..684762d15f35b5a028d7692ab6af8d5ad2065f66 100644 (file)
@@ -67,6 +67,8 @@ void Elector::start()
     return;
   }
   dout(5) << "start -- can i be leader?" << dendl;
+
+  acked_me.clear();
   
   // start by trying to elect me
   if (epoch % 2 == 0)