Each monitor is independently encoding the full OSDMap and storing it in
its local store. Sometime this happens when we do not have a valid value
for quorum_features (for example, it can happen during sync).
Instead, use the feature bits the Incremental was encoded with for the full
OSDMap so that they always match.
Note that this conveniently the *only* place in the mon where we encode
the full OSDMap, so we're capturing all paths. Yay!
Signed-off-by: Sage Weil <sage@inktank.com>
// write out the full map for all past epochs
bufferlist full_bl;
- osdmap.encode(full_bl, mon->quorum_features);
+ osdmap.encode(full_bl, inc.encode_features);
tx_size += full_bl.length();
put_version_full(t, osdmap.epoch, full_bl);