diff options
author | Sage Weil <sage@inktank.com> | 2013-05-21 17:10:01 -0700 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2013-05-22 16:13:37 -0700 |
commit | 6ad105513940ca4ebb2c44094f47b75bc01c36e9 (patch) | |
tree | 2a7da8a148db98253771e67e394d7831e5191455 /src/osd/OSD.cc | |
parent | 0262301b3a32620b0c365f5476f234c07e82c48c (diff) | |
download | ceph-6ad105513940ca4ebb2c44094f47b75bc01c36e9.tar.gz |
osd: bind front heartbeat messenger to public_addr
Signed-off-by: Sage Weil <sage@inktank.com>
Diffstat (limited to 'src/osd/OSD.cc')
-rw-r--r-- | src/osd/OSD.cc | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index ab93a800f64..b5a3a5ea309 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -3035,9 +3035,17 @@ void OSD::_send_boot() hb_back_addr = cluster_addr; hb_back_addr.set_port(port); hb_back_server_messenger->set_addr_unknowns(hb_back_addr); - dout(10) << " assuming hb_addr ip matches cluster_addr" << dendl; + dout(10) << " assuming hb_back_addr ip matches cluster_addr" << dendl; } - entity_addr_t hb_front_addr; + entity_addr_t hb_front_addr = hb_front_server_messenger->get_myaddr(); + if (hb_front_addr.is_blank_ip()) { + int port = hb_front_addr.get_port(); + hb_front_addr = client_messenger->get_myaddr(); + hb_front_addr.set_port(port); + hb_front_server_messenger->set_addr_unknowns(hb_front_addr); + dout(10) << " assuming hb_front_addr ip matches client_addr" << dendl; + } + MOSDBoot *mboot = new MOSDBoot(superblock, boot_epoch, hb_back_addr, hb_front_addr, cluster_addr); dout(10) << " client_addr " << client_messenger->get_myaddr() << ", cluster_addr " << cluster_addr @@ -4423,7 +4431,8 @@ void OSD::handle_osd_map(MOSDMap *m) } else if (!osdmap->is_up(whoami) || !osdmap->get_addr(whoami).probably_equals(client_messenger->get_myaddr()) || !osdmap->get_cluster_addr(whoami).probably_equals(cluster_messenger->get_myaddr()) || - !osdmap->get_hb_back_addr(whoami).probably_equals(hb_back_server_messenger->get_myaddr())) { + !osdmap->get_hb_back_addr(whoami).probably_equals(hb_back_server_messenger->get_myaddr()) || + !osdmap->get_hb_front_addr(whoami).probably_equals(hb_front_server_messenger->get_myaddr())) { if (!osdmap->is_up(whoami)) { if (service.is_preparing_to_stop()) { service.got_stop_ack(); @@ -4444,6 +4453,10 @@ void OSD::handle_osd_map(MOSDMap *m) clog.error() << "map e" << osdmap->get_epoch() << " had wrong hb back addr (" << osdmap->get_hb_back_addr(whoami) << " != my " << hb_back_server_messenger->get_myaddr() << ")"; + else if (!osdmap->get_hb_front_addr(whoami).probably_equals(hb_front_server_messenger->get_myaddr())) + clog.error() << "map e" << osdmap->get_epoch() + << " had wrong hb front addr (" << osdmap->get_hb_front_addr(whoami) + << " != my " << hb_front_server_messenger->get_myaddr() << ")"; if (!service.is_stopping()) { state = STATE_BOOTING; @@ -4462,6 +4475,10 @@ void OSD::handle_osd_map(MOSDMap *m) if (r != 0) do_shutdown = true; // FIXME: do_restart? + r = hb_front_server_messenger->rebind(hbport); + if (r != 0) + do_shutdown = true; // FIXME: do_restart? + hbclient_messenger->mark_down_all(); reset_heartbeat_peers(); |