From 312daed342f2b247c2db423c2bcbf4ec7a079e49 Mon Sep 17 00:00:00 2001 From: Asias He Date: Tue, 8 Sep 2015 11:07:13 +0800 Subject: [PATCH] storage_service: Fix is_starting API Query _operation_mode on CPU 0. $ curl -X GET --header "Accept: application/json" "http://127.0.0.1:10000/storage_service/is_starting" --- api/storage_service.cc | 6 ++++-- service/storage_service.cc | 7 +++++-- service/storage_service.hh | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/api/storage_service.cc b/api/storage_service.cc index bbbfe61877..d371129877 100644 --- a/api/storage_service.cc +++ b/api/storage_service.cc @@ -325,8 +325,10 @@ void set_storage_service(http_context& ctx, routes& r) { }); }); - ss::is_starting.set(r, [](const_req req) { - return service::get_local_storage_service().is_starting(); + ss::is_starting.set(r, [](std::unique_ptr req) { + return service::get_local_storage_service().is_starting().then([] (auto starting) { + return make_ready_future(starting); + }); }); ss::get_drain_progress.set(r, [](std::unique_ptr req) { diff --git a/service/storage_service.cc b/service/storage_service.cc index 5f190d0713..4d01a4e79f 100644 --- a/service/storage_service.cc +++ b/service/storage_service.cc @@ -1180,8 +1180,11 @@ future storage_service::get_operation_mode() { }); } -bool storage_service::is_starting() { - return _operation_mode == storage_service::mode::STARTING; +future storage_service::is_starting() { + return smp::submit_to(0, [] { + auto mode = get_local_storage_service()._operation_mode; + return mode == storage_service::mode::STARTING; + }); } future storage_service::is_gossip_running() { diff --git a/service/storage_service.hh b/service/storage_service.hh index 530d1b2e16..95c88b22d2 100644 --- a/service/storage_service.hh +++ b/service/storage_service.hh @@ -2448,7 +2448,7 @@ public: #endif future get_operation_mode(); - bool is_starting(); + future is_starting(); #if 0 public String getDrainProgress() {