]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
OSD: _share_map_outgoing whenever sending a message to a peer
authorGreg Farnum <greg@inktank.com>
Fri, 4 Apr 2014 23:06:05 +0000 (16:06 -0700)
committerSage Weil <sage@inktank.com>
Mon, 7 Apr 2014 18:02:08 +0000 (11:02 -0700)
This ensures that they get new maps before an op which requires them (that
they would then request from the monitor).

Signed-off-by: Greg Farnum <greg@inktank.com>
(cherry picked from commit 232ac1a52a322d163d8d8dbc4a7da4b6a9acb709)

src/osd/OSD.cc
src/osd/OSD.h

index bea378ba6f8775ea766b071e935f518bd57ca898..cceeeb7bb57e1c5144f886643d8b0a3dc7963bc8 100644 (file)
@@ -3589,7 +3589,10 @@ void OSDService::send_message_osd_cluster(int peer, Message *m, epoch_t from_epo
     m->put();
     return;
   }
-  osd->cluster_messenger->send_message(m, next_osdmap->get_cluster_inst(peer));
+  const entity_inst_t& peer_inst = next_osdmap->get_cluster_inst(peer);
+  Connection *peer_con = osd->cluster_messenger->get_connection(peer_inst).get();
+  osd->_share_map_outgoing(peer, peer_con, next_osdmap);
+  osd->cluster_messenger->send_message(m, peer_inst);
 }
 
 ConnectionRef OSDService::get_con_osd_cluster(int peer, epoch_t from_epoch)
index 1bebc9ebf338686db35f8143296100d072236192..60547722fcb3e363f99dbc3f0eab072ec221a8d0 100644 (file)
@@ -271,7 +271,7 @@ public:
   void dequeue_pg(PG *pg, list<OpRequestRef> *dequeued);
 
   // -- superblock --
-  Mutex publish_lock, pre_publish_lock;
+  Mutex publish_lock, pre_publish_lock; // pre-publish orders before publish
   OSDSuperblock superblock;
   OSDSuperblock get_superblock() {
     Mutex::Locker l(publish_lock);