Repository: kudu Updated Branches: refs/heads/master 194fd8b16 -> d1d7572b3
Expose RPC method info map and various metrics These changes are needed for IMPALA-6269. Change-Id: I8bda390ea92cceb0d696767402c978a83b386825 Reviewed-on: http://gerrit.cloudera.org:8080/9269 Tested-by: Kudu Jenkins Reviewed-by: Alexey Serbin <[email protected]> Reviewed-by: Todd Lipcon <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/kudu/repo Commit: http://git-wip-us.apache.org/repos/asf/kudu/commit/d1d7572b Tree: http://git-wip-us.apache.org/repos/asf/kudu/tree/d1d7572b Diff: http://git-wip-us.apache.org/repos/asf/kudu/diff/d1d7572b Branch: refs/heads/master Commit: d1d7572b364e06320e7afab8724242508709625d Parents: 194fd8b Author: Lars Volker <[email protected]> Authored: Fri Feb 9 10:51:51 2018 -0800 Committer: Todd Lipcon <[email protected]> Committed: Mon Feb 12 19:27:31 2018 +0000 ---------------------------------------------------------------------- src/kudu/rpc/acceptor_pool.cc | 4 ++++ src/kudu/rpc/acceptor_pool.h | 4 ++++ src/kudu/rpc/rpc-bench.cc | 4 ++-- src/kudu/rpc/service_if.h | 6 +++++- src/kudu/util/metrics.h | 6 ++++-- 5 files changed, 19 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kudu/blob/d1d7572b/src/kudu/rpc/acceptor_pool.cc ---------------------------------------------------------------------- diff --git a/src/kudu/rpc/acceptor_pool.cc b/src/kudu/rpc/acceptor_pool.cc index 49bad85..e4bcbd1 100644 --- a/src/kudu/rpc/acceptor_pool.cc +++ b/src/kudu/rpc/acceptor_pool.cc @@ -139,6 +139,10 @@ Status AcceptorPool::GetBoundAddress(Sockaddr* addr) const { return socket_.GetSocketAddress(addr); } +int64_t AcceptorPool::num_rpc_connections_accepted() const { + return rpc_connections_accepted_->value(); +} + void AcceptorPool::RunThread() { while (true) { Socket new_sock; http://git-wip-us.apache.org/repos/asf/kudu/blob/d1d7572b/src/kudu/rpc/acceptor_pool.h ---------------------------------------------------------------------- diff --git a/src/kudu/rpc/acceptor_pool.h b/src/kudu/rpc/acceptor_pool.h index ffbcdbe..ba1996a 100644 --- a/src/kudu/rpc/acceptor_pool.h +++ b/src/kudu/rpc/acceptor_pool.h @@ -18,6 +18,7 @@ #ifndef KUDU_RPC_ACCEPTOR_POOL_H #define KUDU_RPC_ACCEPTOR_POOL_H +#include <stdint.h> #include <vector> #include "kudu/gutil/atomicops.h" @@ -60,6 +61,9 @@ class AcceptorPool { // actual port that was bound. Status GetBoundAddress(Sockaddr* addr) const; + // Return the number of connections accepted by this messenger. Thread-safe. + int64_t num_rpc_connections_accepted() const; + private: void RunThread(); http://git-wip-us.apache.org/repos/asf/kudu/blob/d1d7572b/src/kudu/rpc/rpc-bench.cc ---------------------------------------------------------------------- diff --git a/src/kudu/rpc/rpc-bench.cc b/src/kudu/rpc/rpc-bench.cc index 203498f..55a7409 100644 --- a/src/kudu/rpc/rpc-bench.cc +++ b/src/kudu/rpc/rpc-bench.cc @@ -104,9 +104,9 @@ class RpcBench : public RpcTestBase { float csw_per_req = static_cast<float>(elapsed.context_switches) / total_reqs; HdrHistogram reactor_load(*METRIC_reactor_load_percent.Instantiate( - server_messenger_->metric_entity())->histogram_for_tests()); + server_messenger_->metric_entity())->histogram()); HdrHistogram reactor_latency(*METRIC_reactor_active_latency_us.Instantiate( - server_messenger_->metric_entity())->histogram_for_tests()); + server_messenger_->metric_entity())->histogram()); LOG(INFO) << "Mode: " << (sync ? "Sync" : "Async"); if (sync) { http://git-wip-us.apache.org/repos/asf/kudu/blob/d1d7572b/src/kudu/rpc/service_if.h ---------------------------------------------------------------------- diff --git a/src/kudu/rpc/service_if.h b/src/kudu/rpc/service_if.h index c0b72b4..9156b4a 100644 --- a/src/kudu/rpc/service_if.h +++ b/src/kudu/rpc/service_if.h @@ -114,12 +114,16 @@ class GeneratedServiceIf : public ServiceIf { RpcMethodInfo* LookupMethod(const RemoteMethod& method) override; + // Returns the mapping from method names to method infos. + typedef std::unordered_map<std::string, scoped_refptr<RpcMethodInfo>> MethodInfoMap; + const MethodInfoMap& methods_by_name() const { return methods_by_name_; } + protected: // For each method, stores the relevant information about how to handle the // call. Methods are inserted by the constructor of the generated subclass. // After construction, this map is accessed by multiple threads and therefore // must not be modified. - std::unordered_map<std::string, scoped_refptr<RpcMethodInfo>> methods_by_name_; + MethodInfoMap methods_by_name_; // The result tracker for this service's methods. scoped_refptr<ResultTracker> result_tracker_; http://git-wip-us.apache.org/repos/asf/kudu/blob/d1d7572b/src/kudu/util/metrics.h ---------------------------------------------------------------------- diff --git a/src/kudu/util/metrics.h b/src/kudu/util/metrics.h index 65ad030..ee9bad4 100644 --- a/src/kudu/util/metrics.h +++ b/src/kudu/util/metrics.h @@ -1093,13 +1093,15 @@ class Histogram : public Metric { Status GetHistogramSnapshotPB(HistogramSnapshotPB* snapshot_pb, const MetricJsonOptions& opts) const; + // Returns a pointer to the underlying histogram. The implementation of HdrHistogram + // is thread safe. + const HdrHistogram* histogram() const { return histogram_.get(); } + uint64_t CountInBucketForValueForTests(uint64_t value) const; uint64_t MinValueForTests() const; uint64_t MaxValueForTests() const; double MeanValueForTests() const; - const HdrHistogram* histogram_for_tests() const { return histogram_.get(); } - virtual bool IsUntouched() const override { return TotalCount() == 0; }
