diff --git a/src/v/rpc/transport.cc b/src/v/rpc/transport.cc index 98845a84e9a3b..da600b8022ba3 100644 --- a/src/v/rpc/transport.cc +++ b/src/v/rpc/transport.cc @@ -457,7 +457,8 @@ void transport::setup_metrics( "rpc_client", labels, aggregate_labels, - _probe->defs(labels, aggregate_labels)); + _probe->defs( + labels, aggregate_labels, [this] { return _correlations.size(); })); } timing_info* transport::get_timing(uint32_t correlation) { @@ -487,7 +488,8 @@ std::ostream& operator<<(std::ostream& o, const transport& t) { std::vector client_probe::defs( const std::vector& labels, - const std::vector& aggregate_labels) { + const std::vector& aggregate_labels, + std::function pending_count) { namespace sm = ss::metrics; std::vector ret; @@ -502,7 +504,7 @@ std::vector client_probe::defs( ret.emplace_back( sm::make_gauge( "requests_pending", - [this] { return _requests_pending; }, + [pending_count = std::move(pending_count)] { return pending_count(); }, sm::description("Number of requests pending"), labels) .aggregate(aggregate_labels)); @@ -586,7 +588,6 @@ std::vector client_probe::defs( std::ostream& operator<<(std::ostream& o, const client_probe& p) { o << "{" << " requests_sent: " << p._requests - << ", requests_pending: " << p._requests_pending << ", requests_completed: " << p._requests_completed << ", request_errors: " << p._request_errors << ", request_timeouts: " << p._request_timeouts diff --git a/src/v/rpc/transport.h b/src/v/rpc/transport.h index 82e01fdebb298..baa2a784b31ca 100644 --- a/src/v/rpc/transport.h +++ b/src/v/rpc/transport.h @@ -36,6 +36,7 @@ #include #include +#include #include #include #include @@ -114,25 +115,13 @@ class client_probe : public net::client_probe { client_probe& operator=(client_probe&&) = delete; ~client_probe() = default; - void request() { - ++_requests; - ++_requests_pending; - } + void request() { ++_requests; } - void request_completed() { - ++_requests_completed; - --_requests_pending; - } + void request_completed() { ++_requests_completed; } - void request_timeout() { - ++_request_timeouts; - --_requests_pending; - } + void request_timeout() { ++_request_timeouts; } - void request_error() { - ++_request_errors; - --_requests_pending; - } + void request_error() { ++_request_errors; } void add_bytes_sent(size_t sent) { _out_bytes += sent; } @@ -150,11 +139,11 @@ class client_probe : public net::client_probe { std::vector defs( const std::vector& labels, - const std::vector& aggregate_labels); + const std::vector& aggregate_labels, + std::function pending_count); private: uint64_t _requests = 0; - uint32_t _requests_pending = 0; uint32_t _request_errors = 0; uint64_t _request_timeouts = 0; uint64_t _requests_completed = 0;