diff --git a/conanfile.py b/conanfile.py index e62837a..349e96d 100644 --- a/conanfile.py +++ b/conanfile.py @@ -9,7 +9,7 @@ class HomeObjectConan(ConanFile): name = "homeobject" - version = "2.0.12" + version = "2.0.13" homepage = "https://github.com/eBay/HomeObject" description = "Blob Store built on HomeReplication" diff --git a/src/lib/homestore_backend/hs_homeobject.cpp b/src/lib/homestore_backend/hs_homeobject.cpp index 13b3fcf..400761e 100644 --- a/src/lib/homestore_backend/hs_homeobject.cpp +++ b/src/lib/homestore_backend/hs_homeobject.cpp @@ -112,9 +112,6 @@ void HSHomeObject::init_homestore() { ioenvironment.with_iomgr(iomgr::iomgr_params{.num_threads = app->threads(), .is_spdk = app->spdk_mode()}) .with_http_server(); - // TODO: Fixme. This is a hack to restart http server. We should remove this once IOEnvironment has an api - // called stop_iomgr, stop_http_server. Until that this restart call allows us to cleanup previous instances - ioenvironment.restart_http_server(); http_mgr_ = std::make_unique< HttpManager >(*this); /// TODO Where should this come from? diff --git a/src/lib/homestore_backend/hs_http_manager.cpp b/src/lib/homestore_backend/hs_http_manager.cpp index d33a4c3..ca06cc0 100644 --- a/src/lib/homestore_backend/hs_http_manager.cpp +++ b/src/lib/homestore_backend/hs_http_manager.cpp @@ -27,14 +27,8 @@ HttpManager::HttpManager(HSHomeObject& ho) : ho_(ho) { using namespace Pistache::Rest; LOGINFO("Setting up HomeObject HTTP routes"); - struct http_route { - Pistache::Http::Method method; - std::string resource; - Pistache::Rest::Route::Handler handler; - iomgr::url_type type{iomgr::url_type::regular}; - }; - std::vector< http_route > routes = { + std::vector< iomgr::http_route > routes = { {Pistache::Http::Method::Get, "/api/v1/getObjLife", Pistache::Rest::Routes::bind(&HttpManager::get_obj_life, this)}, {Pistache::Http::Method::Get, "/api/v1/mallocStats", @@ -46,11 +40,13 @@ HttpManager::HttpManager(HSHomeObject& ho) : ho_(ho) { }; auto http_server = ioenvironment.get_http_server(); - for (auto& route : routes) { - try { - http_server->setup_route(std::move(route.method), route.resource, std::move(route.handler), route.type); - } catch (std::runtime_error const& e) { LOGERROR("setup route {} failed, {}", route.resource, e.what()) } + if (!http_server) { + LOGERROR("http server not available"); + return; } + try { + http_server->setup_routes(routes); + } catch (std::runtime_error const& e) { LOGERROR("setup routes failed, {}", e.what()) } } void HttpManager::get_obj_life(const Pistache::Rest::Request& request, Pistache::Http::ResponseWriter response) {