]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
objecter: fix mon command resends
authorSage Weil <sage@inktank.com>
Mon, 23 Jul 2012 21:41:17 +0000 (14:41 -0700)
committerSage Weil <sage@inktank.com>
Fri, 27 Jul 2012 17:43:25 +0000 (10:43 -0700)
The monitor session is lossy.  Send these when the op is initiated, or
when we reconnect.  The timeout/cutoff was preventing ops from getting
resent if there was an ill-timed mon reset.

Backport: testing, stable/argonaut
Signed-off-by: Sage Weil <sage@inktank.com>
src/osdc/Objecter.cc

index 829f20326dfc32aa1d48842fd08f825cc4f02630..a8c34e5bbfa514ea6c6932f224cd49e5a98dca48 100644 (file)
@@ -843,29 +843,21 @@ void Objecter::tick()
 
 void Objecter::resend_mon_ops()
 {
-  utime_t cutoff = ceph_clock_now(cct);
-  cutoff -= cct->_conf->objecter_mon_retry_interval;
-
+  ldout(cct, 10) << "resend_mon_ops" << dendl;
 
   for (map<tid_t,PoolStatOp*>::iterator p = poolstat_ops.begin(); p!=poolstat_ops.end(); ++p) {
-    if (p->second->last_submit < cutoff) {
-      poolstat_submit(p->second);
-      logger->inc(l_osdc_poolstat_resend);
-    }
+    poolstat_submit(p->second);
+    logger->inc(l_osdc_poolstat_resend);
   }
 
   for (map<tid_t,StatfsOp*>::iterator p = statfs_ops.begin(); p!=statfs_ops.end(); ++p) {
-    if (p->second->last_submit < cutoff) {
-      fs_stats_submit(p->second);
-      logger->inc(l_osdc_statfs_resend);
-    }
+    fs_stats_submit(p->second);
+    logger->inc(l_osdc_statfs_resend);
   }
 
   for (map<tid_t,PoolOp*>::iterator p = pool_ops.begin(); p!=pool_ops.end(); ++p) {
-    if (p->second->last_submit < cutoff) {
-      pool_op_submit(p->second);
-      logger->inc(l_osdc_poolop_resend);
-    }
+    pool_op_submit(p->second);
+    logger->inc(l_osdc_poolop_resend);
   }
 }
 
@@ -1918,6 +1910,7 @@ void Objecter::_sg_read_finish(vector<ObjectExtent>& extents, vector<bufferlist>
 
 void Objecter::ms_handle_connect(Connection *con)
 {
+  ldout(cct, 10) << "ms_handle_connect " << con << dendl;
   if (con->get_peer_type() == CEPH_ENTITY_TYPE_MON)
     resend_mon_ops();
 }