Bug #4221
closed
MDS: LogEvent::decode needs to respect mds_log_skip_corrupt_events for DECODE macros
Added by Greg Farnum about 11 years ago.
Updated almost 8 years ago.
Description
By far the most common form of corrupt event is one that's somehow the wrong size — and that hits an assert in LogEvent::decode before the MDLog even gets a chance to decide if it cares or not.
- Subject changed from MDS: mds_log_skip_corrupt_events is mostly useless to MDS: mds_log_skip_corrupt_events needs to influence LogEvent::decode
Actually, I think the details here are incorrect. mds_log_skip_corrupt_events behavior is broken, but it's not the result of the assert (which is skipped) and the actual assert seems to be happening on a follow-on loop somehow. We need to get a log of it.
- Subject changed from MDS: mds_log_skip_corrupt_events needs to influence LogEvent::decode to MDS: LogEvent::decode needs to respect mds_log_skip_corrupt_events for DECODE macros
A corrupt object might lead to asserts getting thrown as part of DECODE_START or DECODE_FINISH. These macros are not wrapped by a try-catch block in LogEvent::decode(), and so can cause a process abort even if "mds log skip corrupt events = true" is set.
I think it may suffice to simply do a quick wrap; that suffices to get past my quick test. Pushed a patch to wip-4221.
Should it be backported?
- Status changed from New to Fix Under Review
- Assignee set to Greg Farnum
- Status changed from Fix Under Review to Resolved
Master commit:73289b34b0be5b6612e38944794d59b5e789f841
Dumpling commit:b3d3b3747c1eef695138dac828e5fcb435309c7b
Also available in: Atom
PDF