]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: PaxosServices: don't ignore get_version(ver,bl) return value
authorJoao Eduardo Luis <joao.luis@inktank.com>
Wed, 27 Feb 2013 18:30:15 +0000 (18:30 +0000)
committerJoao Eduardo Luis <joao.luis@inktank.com>
Wed, 27 Feb 2013 23:54:21 +0000 (23:54 +0000)
get_version(version_t,bufferlist) can only return one of two values:
  -ENOENT iff the version doesn't exist
  zero iff it was successful

Any other value is incorrect.

Fixes: #4281
Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
src/mon/AuthMonitor.cc
src/mon/LogMonitor.cc
src/mon/MDSMonitor.cc
src/mon/MonmapMonitor.cc
src/mon/OSDMonitor.cc
src/mon/PGMonitor.cc

index 382ef31921493a65cb51e0d64d30e77d22d9ca56..3e11c5e671c760dfe7ab1268c02faff243629d31 100644 (file)
@@ -148,6 +148,7 @@ void AuthMonitor::update_from_paxos()
     bufferlist bl;
     int ret = get_version(keys_ver+1, bl);
     assert(ret == 0);
+    assert(bl.length());
 
     // reset if we are moving to initial state.  we will normally have
     // keys in here temporarily for bootstrapping that we need to
index 1f5dafd0f019648e98b7dbac718efb2c45e8b0d4..ed933285ac0924852fcb5c6bf6842ba7cbb7a6dc 100644 (file)
@@ -491,8 +491,9 @@ void LogMonitor::_create_sub_incremental(MLog *mlog, int level, version_t sv)
   version_t summary_ver = summary.version;
   while (sv <= summary_ver) {
     bufferlist bl;
-    bool success = get_version(sv, bl);
-    assert(success);
+    int err = get_version(sv, bl);
+    assert(err == 0);
+    assert(bl.length());
     bufferlist::iterator p = bl.begin();
     __u8 v;
     ::decode(v,p);
index 3482dfe48d04fcb1ec94247612bbccde6171839e..ae9921e446cbe4e763c3269fd9c22a2a3644be1e 100644 (file)
@@ -95,7 +95,9 @@ void MDSMonitor::update_from_paxos()
 
   // read and decode
   mdsmap_bl.clear();
-  get_version(version, mdsmap_bl);
+  int err = get_version(version, mdsmap_bl);
+  assert(err == 0);
+
   assert(mdsmap_bl.length() > 0);
   dout(10) << __func__ << " got " << version << dendl;
   mdsmap.decode(mdsmap_bl);
@@ -565,11 +567,13 @@ bool MDSMonitor::preprocess_command(MMonCommand *m)
       MDSMap *p = &mdsmap;
       if (epoch) {
        bufferlist b;
-       get_version(epoch, b);
-       if (!b.length()) {
+       int err = get_version(epoch, b);
+       if (err == -ENOENT) {
          p = 0;
          r = -ENOENT;
        } else {
+          assert(err == 0);
+          assert(b.length());
          p = new MDSMap;
          p->decode(b);
        }
@@ -607,10 +611,12 @@ bool MDSMonitor::preprocess_command(MMonCommand *m)
        }
        epoch_t e = l;
        bufferlist b;
-       get_version(e, b);
-       if (!b.length()) {
+       int err = get_version(e, b);
+       if (err == -ENOENT) {
          r = -ENOENT;
        } else {
+          assert(r == 0);
+          assert(b.length());
          MDSMap mm;
          mm.decode(b);
          mm.encode(rdata, m->get_connection()->get_features());
index 392d724f71cbf6dd1949bdd6bc647b60f0a5e9e9..505327bd24d2e4a0e20dd3c3321aee603f23b10f 100644 (file)
@@ -99,6 +99,7 @@ void MonmapMonitor::update_from_paxos()
   monmap_bl.clear();
   int ret = get_version(version, monmap_bl);
   assert(ret == 0);
+  assert(monmap_bl.length());
 
   dout(10) << "update_from_paxos got " << version << dendl;
   mon->monmap->decode(monmap_bl);
index 965ec58d9ca1af565dfcde05be43c58578b2edfb..84cf4cbd791d9b218ab58a579cf71a3a6997cea1 100644 (file)
@@ -1361,13 +1361,16 @@ MOSDMap *OSDMonitor::build_incremental(epoch_t from, epoch_t to)
 
   for (epoch_t e = to; e >= from && e > 0; e--) {
     bufferlist bl;
-    get_version(e, bl);
-    if (bl.length() > 0) {
+    int err = get_version(e, bl);
+    if (err == 0) {
+      assert(bl.length());
       // if (get_version(e, bl) > 0) {
       dout(20) << "build_incremental    inc " << e << " "
               << bl.length() << " bytes" << dendl;
       m->incremental_maps[e] = bl;
     } else {
+      assert(err == -ENOENT);
+      assert(!bl.length());
       get_version("full", e, bl);
       if (bl.length() > 0) {
       //else if (get_version("full", e, bl) > 0) {
@@ -1402,7 +1405,8 @@ void OSDMonitor::send_incremental(PaxosServiceMessage *req, epoch_t first)
   if (first < get_first_committed()) {
     first = get_first_committed();
     bufferlist bl;
-    get_version("full", first, bl);
+    int err = get_version("full", first, bl);
+    assert(err == 0);
     assert(bl.length());
 
     dout(20) << "send_incremental starting with base full "
@@ -1433,9 +1437,10 @@ void OSDMonitor::send_incremental(epoch_t first, entity_inst_t& dest, bool oneti
   if (first < get_first_committed()) {
     first = get_first_committed();
     bufferlist bl;
-    get_version("full", first, bl);
+    int err = get_version("full", first, bl);
+    assert(err == 0);
     assert(bl.length());
-    
+
     dout(20) << "send_incremental starting with base full "
             << first << " " << bl.length() << " bytes" << dendl;
 
@@ -1804,11 +1809,13 @@ bool OSDMonitor::preprocess_command(MMonCommand *m)
       OSDMap *p = &osdmap;
       if (epoch) {
        bufferlist b;
-       get_version("full", epoch, b);
-       if (!b.length()) {
+       int err = get_version("full", epoch, b);
+       if (err == -ENOENT) {
          p = 0;
          r = -ENOENT;
        } else {
+          assert(err == 0);
+          assert(b.length());
          p = new OSDMap;
          p->decode(b);
        }
index c793092bb623d0a6c82ecfd3f2398c84b3341326..8245ed6ae6efdcad4d4f8a78e8530b989740ae9f 100644 (file)
@@ -601,7 +601,8 @@ void PGMonitor::check_osd_map(epoch_t epoch)
        e++) {
     dout(10) << "check_osd_map applying osdmap e" << e << " to pg_map" << dendl;
     bufferlist bl;
-    mon->osdmon()->get_version(e, bl);
+    int err = mon->osdmon()->get_version(e, bl);
+    assert(err == 0);
 
     assert(bl.length());
     OSDMap::Incremental inc(bl);