[Bug 1945555] Re: [SRU] accept undecodable multi-block bluefs transactions on log

gerald.yang 1945555 at bugs.launchpad.net
Fri Nov 12 08:01:59 UTC 2021


Update 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::malformed_input("error test");

According to the patch description https://github.com/ceph/ceph/pull/42830
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


** Description changed:

  [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]
- need to simulate power outage to reproduce this issue
+ 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::malformed_input("error test");
+ 
+ According to the patch description https://github.com/ceph/ceph/pull/42830
+ 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 Luminous Bluefs code is outdated, in order to backport this commit
  it might also need to backport some dependencies
  
  [Other Info]
  upstream tracker: https://tracker.ceph.com/issues/52079
  PR: https://github.com/ceph/ceph/pull/42830

-- 
You received this bug notification because you are a member of Ubuntu
OpenStack, which is subscribed to ceph in Ubuntu.
https://bugs.launchpad.net/bugs/1945555

Title:
  [SRU] accept undecodable multi-block bluefs transactions on log

Status in ceph package in Ubuntu:
  In Progress
Status in ceph source package in Bionic:
  In Progress

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::malformed_input("error test");

  According to the patch description https://github.com/ceph/ceph/pull/42830
  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 Luminous Bluefs code is outdated, in order to backport this commit
  it might also need to backport some dependencies

  [Other Info]
  upstream tracker: https://tracker.ceph.com/issues/52079
  PR: https://github.com/ceph/ceph/pull/42830

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/ceph/+bug/1945555/+subscriptions




More information about the Ubuntu-openstack-bugs mailing list