[SRU] accept undecodable multi-block bluefs transactions on log
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
ceph (Ubuntu) |
In Progress
|
Undecided
|
gerald.yang | ||
Bionic |
In Progress
|
Undecided
|
gerald.yang |
Bug Description
[Impact]
Multi-block transaction could fail during unexpected power down
in this case, it should be stop replaying this log instead of throwing unrecoverable error
[Test Case]
It's too difficult to simulate power outage during multi-block transaction on disk, so the way I test this patch is to simulate a multi-block transaction and trigger a decode error in
try {
auto p = bl.cbegin();
decode(t, p);
seen_recs = true;
}
Add the following line right after decode(t, p) to throw an error
throw buffer:
According to the patch description https:/
this error will be considered as a normal bluefs log reply stop condition and will *not* prevent OSD from starting
After the error test is triggered, OSD can still be started normally
[Where problems could occur]
This upstream PR was created 2 months ago and Luminous was EOL upstream for a while, so no backport and test by upstream
In order to backport this commit, it also needs to backport some dependencies
[Other Info]
upstream tracker: https:/
PR: https:/
Changed in ceph (Ubuntu Bionic): | |
assignee: | nobody → gerald.yang (gerald-yang-tw) |
Changed in ceph (Ubuntu): | |
assignee: | nobody → gerald.yang (gerald-yang-tw) |
Changed in ceph (Ubuntu Bionic): | |
status: | New → In Progress |
Changed in ceph (Ubuntu): | |
status: | New → In Progress |
description: | updated |
first patch