Project

General

Profile

Actions

Bug #21555

open

src/osd/PGLog.h: 1455: FAILED assert(miter != missing.get_items().end())

Added by huang jun over 6 years ago. Updated over 6 years ago.

Status:
New
Priority:
Normal
Assignee:
-
Category:
-
Target version:
-
% Done:

0%

Source:
Tags:
Backport:
Regression:
No
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
rados
Component(RADOS):
OSD
Pull request ID:
Crash signature (v1):
Crash signature (v2):

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())

Actions

Also available in: Atom PDF