Bug #4221
closedMDS: LogEvent::decode needs to respect mds_log_skip_corrupt_events for DECODE macros
0%
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.
Updated by Greg Farnum over 10 years ago
- Subject changed from MDS: mds_log_skip_corrupt_events is mostly useless to MDS: mds_log_skip_corrupt_events needs to influence LogEvent::decode
Updated by Greg Farnum over 10 years ago
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.
Updated by Greg Farnum over 10 years ago
- 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?
Updated by Greg Farnum over 10 years ago
- Status changed from New to Fix Under Review
- Assignee set to Greg Farnum
Updated by Greg Farnum over 10 years ago
- Status changed from Fix Under Review to Resolved
Master commit:73289b34b0be5b6612e38944794d59b5e789f841
Dumpling commit:b3d3b3747c1eef695138dac828e5fcb435309c7b