mon->messenger->send_message(ack, lease->get_source_inst());
// (re)set timeout event.
- if (lease_timeout_event)
- mon->timer.cancel_event(lease_timeout_event);
- lease_timeout_event = new C_LeaseTimeout(this);
- mon->timer.add_event_after(g_conf->mon_lease_ack_timeout, lease_timeout_event);
+ reset_lease_timeout();
// kick waiters
finish_contexts(g_ceph_context, waiting_for_active);
mon->bootstrap();
}
+void Paxos::reset_lease_timeout()
+{
+ dout(20) << "reset_lease_timeout - setting timeout event" << dendl;
+ if (lease_timeout_event)
+ mon->timer.cancel_event(lease_timeout_event);
+ lease_timeout_event = new C_LeaseTimeout(this);
+ mon->timer.add_event_after(g_conf->mon_lease_ack_timeout, lease_timeout_event);
+}
+
void Paxos::lease_timeout()
{
dout(5) << "lease_timeout -- calling new election" << dendl;
lease_expire = utime_t();
dout(10) << "peon_init -- i am a peon" << dendl;
+ // start a timer, in case the leader never manages to issue a lease
+ reset_lease_timeout();
+
// no chance to write now!
finish_contexts(g_ceph_context, waiting_for_writeable, -EAGAIN);
finish_contexts(g_ceph_context, waiting_for_commit, -EAGAIN);
*/
void lease_timeout(); // on peon, if lease isn't extended
+ /// restart the lease timeout timer
+ void reset_lease_timeout();
+
/**
* Cancel all of Paxos' timeout/renew events.
*/