]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: assert valid context return values
authorSage Weil <sage@inktank.com>
Fri, 8 Feb 2013 07:13:17 +0000 (23:13 -0800)
committerSage Weil <sage@inktank.com>
Fri, 8 Feb 2013 17:18:11 +0000 (09:18 -0800)
We recognized EAGAIN, ECANCELED, and success only.

Signed-off-by: Sage Weil <sage@inktank.com>
Reviewed-by: Joao Luis <joao.luis@inktank.com>
src/mon/MDSMonitor.h
src/mon/Monitor.h
src/mon/OSDMonitor.h
src/mon/PGMonitor.h

index d852785fa909ff905a6d30a6ebf0ff51874e125f..0e6471eb7b634be43cc054cfce355a640afd57aa 100644 (file)
@@ -54,13 +54,10 @@ class MDSMonitor : public PaxosService {
     C_Updated(MDSMonitor *a, MMDSBeacon *c) :
       mm(a), m(c) {}
     void finish(int r) {
-      if (r == -ECANCELED) {
-       if (m)
-         m->put();
-       return;
-      }
       if (r >= 0)
        mm->_updated(m);   // success
+      else if (r == -ECANCELED)
+       m->put();
       else
        mm->dispatch((PaxosServiceMessage*)m);        // try again
     }
index c7704bb16da3ca5de4520cfc6362d57f3663fb8b..e8baf8d864ce5c38b4e18fd221d1991b03709f3a 100644 (file)
@@ -460,10 +460,12 @@ public:
     void finish(int r) {
       if (r >= 0)
        mon->reply_command(m, rc, rs, rdata, version);
-      else if (r == -ECANCELED) {
+      else if (r == -ECANCELED)
        m->put();
-      } else
+      else if (r == -EAGAIN)
        mon->_ms_dispatch(m);
+      else
+       assert(0 == "bad C_Command return value");
     }
   };
 
@@ -474,10 +476,12 @@ public:
   public:
     C_RetryMessage(Monitor *m, Message *ms) : mon(m), msg(ms) {}
     void finish(int r) {
-      if (r == -ECANCELED) {
-       msg->put();
-      } else
+      if (r == -EAGAIN || r >= 0)
        mon->_ms_dispatch(msg);
+      else if (r == -ECANCELED)
+       msg->put();
+      else
+       assert(0 == "bad C_RetryMessage return value");
     }
   };
 
index f53b6285abb2c4763e7adf53e03535dd85ec0bed..f35992c43121d346ba54e7ee9e470b4bc105794c 100644 (file)
@@ -213,8 +213,10 @@ private:
        cmon->_booted(m, logit);
       else if (r == -ECANCELED)
        m->put();
-      else
+      else if (r == -EAGAIN)
        cmon->dispatch((PaxosServiceMessage*)m);
+      else
+       assert(0 == "bad C_Booted return value");
     }
   };
 
@@ -224,13 +226,14 @@ private:
     epoch_t e;
     C_ReplyMap(OSDMonitor *o, PaxosServiceMessage *mm, epoch_t ee) : osdmon(o), m(mm), e(ee) {}
     void finish(int r) {
-      if (r >= 0) {
+      if (r >= 0)
        osdmon->_reply_map(m, e);
-      } else if (r == -ECANCELED) {
+      else if (r == -ECANCELED)
        m->put();
-      } else {
+      else if (r == -EAGAIN)
        osdmon->dispatch(m);
-      }
+      else
+       assert(0 == "bad C_ReplyMap return value");
     }    
   };
   struct C_PoolOp : public Context {
@@ -245,13 +248,14 @@ private:
        reply_data = *rd;
     }
     void finish(int r) {
-      if (r >= 0) {
+      if (r >= 0)
        osdmon->_pool_op_reply(m, replyCode, epoch, &reply_data);
-      } else if (r == -ECANCELED) {
+      else if (r == -ECANCELED)
        m->put();
-      } else {
+      else if (r == -EAGAIN)
        osdmon->dispatch(m);
-      }
+      else
+       assert(0 == "bad C_PoolOp return value");
     }
   };
 
index 5db1744111d5cfd5ffc5a1b01139082d1aa9cfe1..0308e429d8d760f17b9212b4614fcebc18993a37 100644 (file)
@@ -76,9 +76,11 @@ private:
       } else if (r == -ECANCELED) {
        req->put();
        ack->put();
-      } else {
+      } else if (r == -EAGAIN) {
+       pgmon->dispatch(req);
        ack->put();
-       dispatch(req);
+      } else {
+       assert(0 == "bad C_Stats return value");
       }
     }    
   };