assert(is_writeable());
assert(features.contains_all(pending_map.persistent_features));
+ // we should never hit this because `features` should be the result
+ // of the quorum's supported features. But if it happens, die.
+ assert(ceph::features::mon::get_supported().contains_all(features));
mon_feature_t new_features =
(pending_map.persistent_features ^
return;
}
+ if (mon->get_quorum().size() < mon->monmap->size()) {
+ dout(1) << __func__ << " new features " << new_features
+ << " contains features that require a full quorum"
+ << " (quorum size is " << mon->get_quorum().size()
+ << ", requires " << mon->monmap->size() << "): "
+ << new_features
+ << " -- do not enable them!" << dendl;
+ return;
+ }
+
new_features |= pending_map.persistent_features;
dout(5) << __func__ << " applying new features to monmap;"