From a65c0c3735a405bee418c9a2ef48c295db699ffc Mon Sep 17 00:00:00 2001 From: Piotr Dulikowski Date: Fri, 13 Dec 2024 09:58:46 +0100 Subject: [PATCH] api/cql_server_test: add information about scheduling group Now, information about connections' scheduling group is included in the HTTP API for querying information about connections' parameters. --- api/cql_server_test.cc | 10 +++++++--- transport/server.cc | 2 +- transport/server.hh | 2 ++ 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/api/cql_server_test.cc b/api/cql_server_test.cc index 77e0301d1b..d50394ca85 100644 --- a/api/cql_server_test.cc +++ b/api/cql_server_test.cc @@ -26,21 +26,24 @@ struct connection_sl_params : public json::json_base { json::json_element _role_name; json::json_element _workload_type; json::json_element _timeout; + json::json_element _scheduling_group; - connection_sl_params(const sstring& role_name, const sstring& workload_type, const sstring& timeout) { + connection_sl_params(const sstring& role_name, const sstring& workload_type, const sstring& timeout, const sstring& scheduling_group) { _role_name = role_name; _workload_type = workload_type; _timeout = timeout; + _scheduling_group = scheduling_group; register_params(); } connection_sl_params(const connection_sl_params& params) - : connection_sl_params(params._role_name(), params._workload_type(), params._timeout()) {} + : connection_sl_params(params._role_name(), params._workload_type(), params._timeout(), params._scheduling_group()) {} void register_params() { add(&_role_name, "role_name"); add(&_workload_type, "workload_type"); add(&_timeout, "timeout"); + add(&_scheduling_group, "scheduling_group"); } }; @@ -54,7 +57,8 @@ void set_cql_server_test(http_context& ctx, seastar::httpd::routes& r, cql_trans return connection_sl_params( std::move(params.role_name), sstring(qos::service_level_options::to_string(params.workload_type)), - to_string(cql_duration(months_counter{0}, days_counter{0}, nanoseconds_counter{nanos}))); + to_string(cql_duration(months_counter{0}, days_counter{0}, nanoseconds_counter{nanos})), + std::move(params.scheduling_group_name)); }); co_return result; }); diff --git a/transport/server.cc b/transport/server.cc index 39a9e65858..90c08f1787 100644 --- a/transport/server.cc +++ b/transport/server.cc @@ -2115,7 +2115,7 @@ future> cql_server::get_connections ? (user->name ? *(user->name) : "ANONYMOUS") : "UNAUTHENTICATED"; - sl_params.emplace_back(std::move(role_name), client_state.get_timeout_config(), client_state.get_workload_type()); + sl_params.emplace_back(std::move(role_name), client_state.get_timeout_config(), client_state.get_workload_type(), cql_conn.get_scheduling_group().name()); }); co_return sl_params; } diff --git a/transport/server.hh b/transport/server.hh index 9e4308a6df..546f03ebd8 100644 --- a/transport/server.hh +++ b/transport/server.hh @@ -142,6 +142,7 @@ struct connection_service_level_params { sstring role_name; timeout_config timeout_config; qos::service_level_options::workload_type workload_type; + sstring scheduling_group_name; }; class cql_server : public seastar::peering_sharded_service, public generic_server::server { @@ -252,6 +253,7 @@ private: const service::client_state& get_client_state() const { return _client_state; } void update_scheduling_group(); service::client_state& get_client_state() { return _client_state; } + scheduling_group get_scheduling_group() const { return _current_scheduling_group; } private: friend class process_request_executor; future>> process_request_one(fragmented_temporary_buffer::istream buf, uint8_t op, uint16_t stream, service::client_state& client_state, tracing_request_type tracing_request, service_permit permit);