Bug #21555
opensrc/osd/PGLog.h: 1455: FAILED assert(miter != missing.get_items().end())
0%
Description
pg 2.3s0 up/acting is [7,0,2]/[6,0,2]
in backfill_toofull state, osd.6 got write op, bc object > last_backfill, and only send the pglog to osd.7,
then in backfilling state, osd.6 got delete op, bc object > last_backfill, and only send the pglog to osd.7,
after backfill finished, up/acting changed to [7,0,2],
osd.7 receive delete (retry=2) op, bc osd.7 dont have the object in local storage, so the delete(retry=2) op
failed, it recorded in pglog as 'error 2:c4b0339b:::benchmark_data_mira035.xsky.com_17216_object7868:head by client.4215.0:17822 0.000000 -2'.
after reboot osd.7, with osd_debug_verify_missing_on_start=true, it checks the pglog,
it will skip the 'error' type log entry, but when it checks the first modify log entry,
the getattr() of the object returns ENOENT, and the object not in missing set,
so osd crashed in src/osd/PGLog.h: 1455: FAILED assert(miter != missing.get_items().end())