From 761e5296ff0a4d6074e83e9b4b14f481d0b958cf Mon Sep 17 00:00:00 2001 From: Xuehan Xu Date: Mon, 29 Aug 2022 16:07:47 +0800 Subject: [PATCH] crimson/common/interrupt_future: simplify may_interrupt Signed-off-by: Xuehan Xu --- src/crimson/common/interruptible_future.h | 12 ++++++------ src/crimson/os/seastore/transaction.h | 10 ++++------ src/crimson/osd/pg_interval_interrupt_condition.h | 12 ++++++------ src/test/crimson/test_interruptible_future.cc | 12 ++++++------ 4 files changed, 22 insertions(+), 24 deletions(-) diff --git a/src/crimson/common/interruptible_future.h b/src/crimson/common/interruptible_future.h index 61660a217bc..299f1285046 100644 --- a/src/crimson/common/interruptible_future.h +++ b/src/crimson/common/interruptible_future.h @@ -170,17 +170,17 @@ auto call_with_interruption_impl( // global "interrupt_cond" with the interruption condition, and go ahead // executing the Func. assert(interrupt_condition); - auto [interrupt, fut] = interrupt_condition->template may_interrupt< + auto fut = interrupt_condition->template may_interrupt< typename futurator_t::type>(); INTR_FUT_DEBUG( "call_with_interruption_impl: may_interrupt: {}, " "local interrupt_condition: {}, " "global interrupt_cond: {},{}", - interrupt, + (bool)fut, (void*)interrupt_condition.get(), (void*)interrupt_cond.interrupt_cond.get(), typeid(InterruptCond).name()); - if (interrupt) { + if (fut) { return std::move(*fut); } interrupt_cond.set(interrupt_condition); @@ -271,15 +271,15 @@ Result non_futurized_call_with_interruption( Func&& func, T&&... args) { assert(interrupt_condition); - auto [interrupt, fut] = interrupt_condition->template may_interrupt>(); + auto fut = interrupt_condition->template may_interrupt>(); INTR_FUT_DEBUG( "non_futurized_call_with_interruption may_interrupt: {}, " "interrupt_condition: {}, interrupt_cond: {},{}", - interrupt, + (bool)fut, (void*)interrupt_condition.get(), (void*)interrupt_cond.interrupt_cond.get(), typeid(InterruptCond).name()); - if (interrupt) { + if (fut) { std::rethrow_exception(fut->get_exception()); } interrupt_cond.set(interrupt_condition); diff --git a/src/crimson/os/seastore/transaction.h b/src/crimson/os/seastore/transaction.h index e38d3c56f17..b5508fdb30f 100644 --- a/src/crimson/os/seastore/transaction.h +++ b/src/crimson/os/seastore/transaction.h @@ -544,14 +544,12 @@ public: TransactionConflictCondition(Transaction &t) : t(t) {} template - std::pair> may_interrupt() { + std::optional may_interrupt() { if (t.conflicted) { - return { - true, - seastar::futurize::make_exception_future( - transaction_conflict())}; + return seastar::futurize::make_exception_future( + transaction_conflict()); } else { - return {false, std::optional()}; + return std::optional(); } } diff --git a/src/crimson/osd/pg_interval_interrupt_condition.h b/src/crimson/osd/pg_interval_interrupt_condition.h index a59e479638c..a3a0a1edbcf 100644 --- a/src/crimson/osd/pg_interval_interrupt_condition.h +++ b/src/crimson/osd/pg_interval_interrupt_condition.h @@ -24,16 +24,16 @@ public: bool is_primary(); template - std::pair> may_interrupt() { + std::optional may_interrupt() { if (new_interval_created()) { - return {true, seastar::futurize::make_exception_future( - ::crimson::common::actingset_changed(is_primary()))}; + return seastar::futurize::make_exception_future( + ::crimson::common::actingset_changed(is_primary())); } if (is_stopping()) { - return {true, seastar::futurize::make_exception_future( - ::crimson::common::system_shutdown_exception())}; + return seastar::futurize::make_exception_future( + ::crimson::common::system_shutdown_exception()); } - return {false, std::optional()}; + return std::optional(); } template diff --git a/src/test/crimson/test_interruptible_future.cc b/src/test/crimson/test_interruptible_future.cc index 4e4288686de..9032ad3b72d 100644 --- a/src/test/crimson/test_interruptible_future.cc +++ b/src/test/crimson/test_interruptible_future.cc @@ -19,12 +19,12 @@ public: : interrupt(interrupt) {} template - std::pair> may_interrupt() { - if (interrupt) - return std::pair>( - true, seastar::futurize::make_exception_future(test_interruption())); - else - return std::pair>(false, std::optional()); + std::optional may_interrupt() { + if (interrupt) { + return seastar::futurize::make_exception_future(test_interruption()); + } else { + return std::optional(); + } } template -- 2.39.5