return back_msgr.get_myaddrs();
}
+void Heartbeat::set_require_authorizer(bool require_authorizer)
+{
+ if (front_msgr.get_require_authorizer() != require_authorizer) {
+ front_msgr.set_require_authorizer(require_authorizer);
+ back_msgr.set_require_authorizer(require_authorizer);
+ }
+}
+
seastar::future<> Heartbeat::add_peer(osd_id_t peer, epoch_t epoch)
{
auto found = peers.find(peer);
const entity_addrvec_t& get_front_addrs() const;
const entity_addrvec_t& get_back_addrs() const;
+ void set_require_authorizer(bool);
+
// Dispatcher methods
seastar::future<> ms_dispatch(ceph::net::Connection* conn,
MessageRef m) override;
std::chrono::seconds(TICK_INTERVAL));
}
}
+ check_osdmap_features();
// yay!
return consume_map(osdmap->get_epoch());
}).then([m, this] {
return do_peering_event(m->get_spg(), std::move(evt));
}
+void OSD::check_osdmap_features()
+{
+ if (osdmap->require_osd_release < CEPH_RELEASE_NAUTILUS) {
+ heartbeat->set_require_authorizer(false);
+ } else {
+ heartbeat->set_require_authorizer(true);
+ }
+}
+
seastar::future<> OSD::consume_map(epoch_t epoch)
{
// todo: m-to-n: broadcast this news to all shards
seastar::future<> committed_osd_maps(version_t first,
version_t last,
Ref<MOSDMap> m);
-
+ void check_osdmap_features();
// order the promises in descending order of the waited osdmap epoch,
// so we can access all the waiters expecting a map whose epoch is less
// than a given epoch