diff --git a/db/hints/manager.cc b/db/hints/manager.cc index 6b76f0bc96..2272889df7 100644 --- a/db/hints/manager.cc +++ b/db/hints/manager.cc @@ -73,17 +73,18 @@ public: public: future<> ensure_created_and_verified() { if (_state != state::uninitialized) { - return make_ready_future<>(); + co_return; } - return with_semaphore(_lock, 1, [this] () { - utils::directories::set dir_set; - dir_set.add_sharded(_hints_directory); - return _dirs.create_and_verify(std::move(dir_set)).then([this] { - manager_logger.debug("Creating and validating hint directories: {}", _hints_directory); - _state = state::created_and_validated; - }); - }); + const auto units = co_await seastar::get_units(_lock, 1); + + utils::directories::set dir_set; + dir_set.add_sharded(_hints_directory); + + co_await _dirs.create_and_verify(std::move(dir_set)); + + manager_logger.debug("Creating and validating hint directories: {}", _hints_directory); + _state = state::created_and_validated; } future<> ensure_rebalanced() {