From a9eb97f419e08f4b92a1a90fe726f72086bd9d66 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 22 Sep 2009 13:17:03 -0700 Subject: [PATCH] objecter: fix uninitialized variable last_seen_version Fixes hang on 'rados df' --- src/mon/Paxos.cc | 5 +++-- src/mon/PaxosService.cc | 2 +- src/osdc/Objecter.h | 1 + 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/mon/Paxos.cc b/src/mon/Paxos.cc index 7d0362c7b00bb..110cbc0c9fe42 100644 --- a/src/mon/Paxos.cc +++ b/src/mon/Paxos.cc @@ -887,8 +887,9 @@ void Paxos::update_observers() bool Paxos::is_readable(version_t v) { - dout(1) << "is_readable now=" << g_clock.now() << " lease_expire=" << lease_expire << dendl; - if(v > last_committed) + dout(1) << "is_readable now=" << g_clock.now() << " lease_expire=" << lease_expire + << " has v" << v << " lc " << last_committed << dendl; + if (v > last_committed) return false; return (mon->is_peon() || mon->is_leader()) && diff --git a/src/mon/PaxosService.cc b/src/mon/PaxosService.cc index 0567ce9482242..6b58b671cfc7b 100644 --- a/src/mon/PaxosService.cc +++ b/src/mon/PaxosService.cc @@ -42,7 +42,7 @@ bool PaxosService::dispatch(PaxosServiceMessage *m) // make sure our map is readable and up to date if (!paxos->is_readable(m->version)) { - dout(10) << " waiting for paxos -> readable" << dendl; + dout(10) << " waiting for paxos -> readable (v" << m->version << ")" << dendl; paxos->wait_for_readable(new C_RetryMessage(this, m)); return true; } diff --git a/src/osdc/Objecter.h b/src/osdc/Objecter.h index 8c3f3e6eb9dd8..c575f30a0b6cf 100644 --- a/src/osdc/Objecter.h +++ b/src/osdc/Objecter.h @@ -390,6 +390,7 @@ class Objecter { messenger(m), monc(mc), osdmap(om), last_tid(0), client_inc(-1), num_unacked(0), num_uncommitted(0), + last_seen_version(0), client_lock(l), timer(l) { } ~Objecter() { } -- 2.39.5