]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
OSD: _share_map_outgoing whenever sending a message to a peer 1613/head
authorGreg Farnum <greg@inktank.com>
Fri, 4 Apr 2014 23:06:05 +0000 (16:06 -0700)
committerGreg Farnum <greg@inktank.com>
Fri, 4 Apr 2014 23:06:05 +0000 (16:06 -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>
src/osd/OSD.cc
src/osd/OSD.h

index 52c4f4575022e9c8054a8819fb601c68d2f54f24..47cafaa8d39abccc4fac50671ce31bf723ba0cae 100644 (file)
@@ -3852,7 +3852,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 9192fcc8069a0b38f266be87b57852758d7e7395..6b3c89d9ce5d5799911e58c142cfe000dfa24eaa 100644 (file)
@@ -334,7 +334,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);