From 31418020fd587295005e3530c34f5e60815f8a41 Mon Sep 17 00:00:00 2001 From: Xuehan Xu Date: Mon, 31 Aug 2020 13:17:48 +0800 Subject: [PATCH] crimson/pg: check acting set change before appending pglog Fixes: https://tracker.ceph.com/issues/47133 Signed-off-by: Xuehan Xu --- src/crimson/osd/pg.cc | 4 ++++ src/crimson/osd/pg_backend.cc | 3 --- 2 files changed, 4 insertions(+), 3 deletions(-) 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 -- 2.47.3