diff options
author | Sage Weil <sage@newdream.net> | 2009-04-04 06:49:54 -0700 |
---|---|---|
committer | Sage Weil <sage@newdream.net> | 2009-04-04 14:29:29 -0700 |
commit | 3ba1175e4c07283bef330fddb27b076d71a4ee72 (patch) | |
tree | 916f4769ba4eb660eb1ecdbed8f3d4b21567f8b2 | |
parent | 95710f0e9d7691edcd99b9b17b76ae09490e5a60 (diff) | |
download | ceph-3ba1175e4c07283bef330fddb27b076d71a4ee72.tar.gz |
objecter: only send one ping per laggy osd
-rw-r--r-- | src/osdc/Objecter.cc | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/osdc/Objecter.cc b/src/osdc/Objecter.cc index cbf3b7354b3..f1eeff58b96 100644 --- a/src/osdc/Objecter.cc +++ b/src/osdc/Objecter.cc @@ -315,6 +315,8 @@ void Objecter::tick() { dout(10) << "tick" << dendl; + set<int> ping; + // look for laggy pgs utime_t cutoff = g_clock.now(); cutoff -= g_conf.objecter_timeout; // timeout @@ -330,10 +332,13 @@ void Objecter::tick() // send a ping to this osd, to ensure we detect any session resets // (osd reply message policy is lossy) if (i->second.acting.size()) - messenger->send_message(new MPing, osdmap->get_inst(i->second.acting[0])); + ping.insert(i->second.acting[0]); } } + for (set<int>::iterator p = ping.begin(); p != ping.end(); p++) + messenger->send_message(new MPing, osdmap->get_inst(*p)); + // reschedule timer.add_event_after(g_conf.objecter_tick_interval, new C_Tick(this)); } |