In
97462a3213e5e15812c79afc0f54d697b6c498b1 we tried to search for a
recent full osdmap but were looking at the wrong key. If full_0 was
present we could record that the latest full map was last_committed even
though it wasn't present. This is fixed in
76cd7ac1c, but we need to
compensate for when get_version_latest_full() gives us a back version
number by repeating the search.
Fixes: #5737
Signed-off-by: Sage Weil <sage@inktank.com>
Reviewed-by: Joao Eduardo Luis <joao.luis@inktank.com>
if (latest_full == 0 && get_first_committed() > 1)
latest_full = get_first_committed();
+ if (latest_full > 0) {
+ // make sure we can really believe get_version_latest_full(); see
+ // 76cd7ac1c2094b34ad36bea89b2246fa90eb2f6d
+ bufferlist test;
+ get_version_full(latest_full, test);
+ if (test.length() == 0) {
+ dout(10) << __func__ << " ignoring recorded latest_full as it is missing; fallback to search" << dendl;
+ latest_full = 0;
+ }
+ }
if (get_first_committed() > 1 &&
latest_full < get_first_committed()) {
/* a bug introduced in 7fb3804fb860dcd0340dd3f7c39eec4315f8e4b6 would lead