]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
fixed objecter timeout to request new osdmap
authorsageweil <sageweil@29311d96-e01e-0410-9327-a35deaab8ce9>
Wed, 29 Aug 2007 15:26:07 +0000 (15:26 +0000)
committersageweil <sageweil@29311d96-e01e-0410-9327-a35deaab8ce9>
Wed, 29 Aug 2007 15:26:07 +0000 (15:26 +0000)
git-svn-id: https://ceph.svn.sf.net/svnroot/ceph@1728 29311d96-e01e-0410-9327-a35deaab8ce9

trunk/ceph/client/Client.cc
trunk/ceph/osdc/Objecter.cc
trunk/ceph/osdc/Objecter.h

index 7d0dc5c0f5377243153682505ab5a1992384dca8..7153461009061ce0c929e214f0e950cfab6b0e1c 100644 (file)
@@ -229,10 +229,13 @@ void Client::dump_cache()
 
 void Client::init() 
 {
+  Mutex::Locker lock(client_lock);
   objecter->init();
 }
 
-void Client::shutdown() {
+void Client::shutdown() 
+{
+  Mutex::Locker lock(client_lock);
   dout(1) << "shutdown" << dendl;
   objecter->shutdown();
   messenger->shutdown();
index d0e0bbd9e65021c050770d0870751ad506e9a7dc..78a4bdaf30bb346daddfdf8c8cf25606674924d9 100644 (file)
 
 // messages ------------------------------
 
+void Objecter::init()
+{
+  assert(client_lock.is_locked());  // otherwise event cancellation is unsafe
+  timer.add_event_after(g_conf.objecter_tick_interval, new C_Tick(this));
+}
+
+void Objecter::shutdown() 
+{
+  assert(client_lock.is_locked());  // otherwise event cancellation is unsafe
+  timer.cancel_all();
+}
+
+
 void Objecter::dispatch(Message *m)
 {
   switch (m->get_type()) {
@@ -263,6 +276,9 @@ void Objecter::tick()
       break;
     }
   }
+
+  // reschedule
+  timer.add_event_after(g_conf.objecter_tick_interval, new C_Tick(this));
 }
 
 
index 121225622c58dfd0071449cf88ecaaa6cf5e9e95..30b1c3840a0c4c11023f055cad0bd65a8511e42c 100644 (file)
@@ -54,7 +54,6 @@ class Objecter {
 
   Mutex &client_lock;
   SafeTimer timer;
-  Context *tick_event;
   
   class C_Tick : public Context {
     Objecter *ob;
@@ -173,18 +172,12 @@ class Objecter {
     messenger(m), monmap(mm), osdmap(om), 
     last_tid(0), client_inc(-1),
     num_unacked(0), num_uncommitted(0),
-    client_lock(l), timer(l), tick_event(0) 
+    client_lock(l), timer(l)
   { }
   ~Objecter() { }
 
-  void init() {
-    assert(client_lock.is_locked());  // otherwise event cancellation is unsafe
-    timer.add_event_after(g_conf.objecter_tick_interval, new C_Tick(this));
-  }
-  void shutdown() {
-    assert(client_lock.is_locked());  // otherwise event cancellation is unsafe
-    if (tick_event) timer.cancel_event(tick_event);
-  }
+  void init();
+  void shutdown();
 
   // messages
  public: