From 4bb662948dabaa6d7a82e05ab3d49c728f3fffcc Mon Sep 17 00:00:00 2001 From: Radoslaw Zarzynski Date: Thu, 25 Jul 2019 13:51:44 +0200 Subject: [PATCH] objclass, crimson: initialize the ClassHandler. Signed-off-by: Radoslaw Zarzynski --- src/crimson/osd/CMakeLists.txt | 1 + src/crimson/osd/osd.cc | 9 +++++++++ src/osd/ClassHandler.cc | 9 +++++++++ 3 files changed, 19 insertions(+) diff --git a/src/crimson/osd/CMakeLists.txt b/src/crimson/osd/CMakeLists.txt index 6e92f976617..8ee99bbfbfc 100644 --- a/src/crimson/osd/CMakeLists.txt +++ b/src/crimson/osd/CMakeLists.txt @@ -18,6 +18,7 @@ add_executable(crimson-osd osd_operations/replicated_request.cc osdmap_gate.cc pg_map.cc + ${PROJECT_SOURCE_DIR}/src/osd/ClassHandler.cc ${PROJECT_SOURCE_DIR}/src/osd/PeeringState.cc ${PROJECT_SOURCE_DIR}/src/osd/PGPeeringEvent.cc ${PROJECT_SOURCE_DIR}/src/osd/PGStateUtils.cc diff --git a/src/crimson/osd/osd.cc b/src/crimson/osd/osd.cc index 6cf7e9e04a6..e38bb9defd4 100644 --- a/src/crimson/osd/osd.cc +++ b/src/crimson/osd/osd.cc @@ -20,6 +20,7 @@ #include "messages/MPGStats.h" #include "os/Transaction.h" +#include "osd/ClassHandler.h" #include "osd/PGPeeringEvent.h" #include "osd/PeeringState.h" @@ -78,6 +79,14 @@ OSD::OSD(int id, uint32_t nonce, msgr.get().set_auth_server(monc.get()); msgr.get().set_auth_client(monc.get()); } + + if (local_conf()->osd_open_classes_on_start) { + const int r = ClassHandler::get_instance().open_all_classes(); + if (r) { + logger().warn("{} warning: got an error loading one or more classes: {}", + __func__, cpp_strerror(r)); + } + } } OSD::~OSD() = default; diff --git a/src/osd/ClassHandler.cc b/src/osd/ClassHandler.cc index 4f11e51f111..e96198ee881 100644 --- a/src/osd/ClassHandler.cc +++ b/src/osd/ClassHandler.cc @@ -329,6 +329,15 @@ int ClassHandler::ClassMethod::exec(cls_method_context_t ctx, bufferlist& indata ClassHandler& ClassHandler::get_instance() { +#ifdef WITH_SEASTAR + // the context is being used solely for: + // 1. random number generation (cls_gen_random_bytes) + // 2. accessing the configuration + // 3. logging + static CephContext cct; + static ClassHandler single(&cct); +#else static ClassHandler single(g_ceph_context); +#endif // WITH_SEASTAR return single; } -- 2.39.5