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;
   }

Reply via email to