From 1a8841cfe337d655c557bdbf27db250802f4b2d6 Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Thu, 19 Sep 2019 17:52:35 +0800 Subject: [PATCH] crimson/osd: evict object state in foreground when doing error handling, we need to make sure the stale object state is evicted before we return. Signed-off-by: Kefu Chai --- src/crimson/osd/pg.cc | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/crimson/osd/pg.cc b/src/crimson/osd/pg.cc index e63b2e6fbcff3..d9814108b797b 100644 --- a/src/crimson/osd/pg.cc +++ b/src/crimson/osd/pg.cc @@ -384,13 +384,13 @@ seastar::future> PG::do_osd_ops(Ref m) }).handle_exception_type([=,&oid](const ceph::osd::error& e) { logger().debug("got ceph::osd::error while handling object {}: {} ({})", oid, e.code(), e.what()); - - backend->evict_object_state(oid); - auto reply = make_message( - m.get(), -e.code().value(), get_osdmap_epoch(), 0, false); - reply->set_enoent_reply_versions(peering_state.get_info().last_update, - peering_state.get_info().last_user_version); - return seastar::make_ready_future>(std::move(reply)); + return backend->evict_object_state(oid).then([=] { + auto reply = make_message( + m.get(), -e.code().value(), get_osdmap_epoch(), 0, false); + reply->set_enoent_reply_versions(peering_state.get_info().last_update, + peering_state.get_info().last_user_version); + return seastar::make_ready_future>(std::move(reply)); + }); }); } -- 2.39.5