From: Xuehan Xu Date: Mon, 31 Aug 2020 05:17:48 +0000 (+0800) Subject: crimson/pg: check acting set change before appending pglog X-Git-Tag: v16.1.0~1273^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F36896%2Fhead;p=ceph.git crimson/pg: check acting set change before appending pglog Fixes: https://tracker.ceph.com/issues/47133 Signed-off-by: Xuehan Xu --- diff --git a/src/crimson/osd/pg.cc b/src/crimson/osd/pg.cc index 7821c7b0855d..c4b3f5df18af 100644 --- a/src/crimson/osd/pg.cc +++ b/src/crimson/osd/pg.cc @@ -542,6 +542,10 @@ seastar::future<> PG::submit_transaction(const OpInfo& op_info, epoch_t map_epoch = get_osdmap_epoch(); + if (__builtin_expect(osd_op_p.at_version.epoch != map_epoch, false)) { + throw crimson::common::actingset_changed(is_primary()); + } + std::vector log_entries; log_entries.emplace_back(obc->obs.exists ? pg_log_entry_t::MODIFY : pg_log_entry_t::DELETE, diff --git a/src/crimson/osd/pg_backend.cc b/src/crimson/osd/pg_backend.cc index cd08b87edc87..030bf383c540 100644 --- a/src/crimson/osd/pg_backend.cc +++ b/src/crimson/osd/pg_backend.cc @@ -130,9 +130,6 @@ PGBackend::mutate_object( epoch_t map_epoch, std::vector&& log_entries) { - if (__builtin_expect((bool)peering, false)) { - throw crimson::common::actingset_changed(peering->is_primary); - } logger().trace("mutate_object: num_ops={}", txn.get_num_ops()); if (obc->obs.exists) { #if 0