]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: only send messages to current OSDs
authorSage Weil <sage@inktank.com>
Sun, 5 Jan 2014 06:43:26 +0000 (22:43 -0800)
committerSage Weil <sage@inktank.com>
Thu, 9 Jan 2014 01:09:08 +0000 (17:09 -0800)
When choosing a random OSD to send a message to, verify not only that
the OSD id is up but that the session is for the same instance of that OSD
by checking that the address matches.

Fixes: #7093
Backport: emperor, dumpling
Signed-off-by: Sage Weil <sage@inktank.com>
(cherry picked from commit 98ed9ac5fed6eddf68f163086df72faabd9edcde)

src/mon/Session.h

index 7df6001581c21d9790972d3964b15545cac13732..a5f67d9e2daceeaba0fe104c4c5df16b82982e5d 100644 (file)
@@ -147,7 +147,8 @@ struct MonSessionMap {
     bool backward = true, forward = true;
     while (backward || forward) {
       if (backward) {
-        if (osdmap->is_up(b->first)) {
+        if (osdmap->is_up(b->first) &&
+           osdmap->get_addr(b->first) == b->second->con->get_peer_addr()) {
           s = b->second;
           break;
         }