You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kudu.apache.org by to...@apache.org on 2018/02/12 19:28:01 UTC
kudu git commit: Expose RPC method info map and various metrics
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 <as...@cloudera.com>
Reviewed-by: Todd Lipcon <to...@apache.org>
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 <lv...@cloudera.com>
Authored: Fri Feb 9 10:51:51 2018 -0800
Committer: Todd Lipcon <to...@apache.org>
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;
}