You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kudu.apache.org by jd...@apache.org on 2016/07/22 22:02:23 UTC

[3/9] incubator-kudu git commit: ksck: report hostnames instead of IP addresses for tablet servers

ksck: report hostnames instead of IP addresses for tablet servers

Typically admins know their hosts by hostname instead of by IP address.
This rejiggers the code a bit to save the original host/port instead of
the resolved address, so that the output contains a hostname instead
of an IP.

Tested manually against a cluster (hard to add an assertion since we
don't have the ability to mock DNS).

Change-Id: I8164dca050fd1adcc034a91cebc241e6fff8a117
Reviewed-on: http://gerrit.cloudera.org:8080/3704
Tested-by: Kudu Jenkins
Reviewed-by: Jean-Daniel Cryans <jd...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/incubator-kudu/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-kudu/commit/7ba9d994
Tree: http://git-wip-us.apache.org/repos/asf/incubator-kudu/tree/7ba9d994
Diff: http://git-wip-us.apache.org/repos/asf/incubator-kudu/diff/7ba9d994

Branch: refs/heads/master
Commit: 7ba9d994448dade702c959febe51abebce65920c
Parents: 513d6e9
Author: Todd Lipcon <to...@apache.org>
Authored: Wed Jul 20 14:29:51 2016 -0700
Committer: Jean-Daniel Cryans <jd...@apache.org>
Committed: Fri Jul 22 20:23:31 2016 +0000

----------------------------------------------------------------------
 src/kudu/tools/ksck-test.cc   |  2 +-
 src/kudu/tools/ksck.h         |  2 +-
 src/kudu/tools/ksck_remote.cc | 20 +++++++++++++++-----
 src/kudu/tools/ksck_remote.h  | 25 +++++++++++++------------
 4 files changed, 30 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/7ba9d994/src/kudu/tools/ksck-test.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tools/ksck-test.cc b/src/kudu/tools/ksck-test.cc
index a9184ab..44fcf69 100644
--- a/src/kudu/tools/ksck-test.cc
+++ b/src/kudu/tools/ksck-test.cc
@@ -64,7 +64,7 @@ class MockKsckTabletServer : public KsckTabletServer {
     callback.Run(Status::OK(), 0);
   }
 
-  virtual const std::string& address() const OVERRIDE {
+  virtual std::string address() const OVERRIDE {
     return address_;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/7ba9d994/src/kudu/tools/ksck.h
----------------------------------------------------------------------
diff --git a/src/kudu/tools/ksck.h b/src/kudu/tools/ksck.h
index 502f68e..80bc63d 100644
--- a/src/kudu/tools/ksck.h
+++ b/src/kudu/tools/ksck.h
@@ -197,7 +197,7 @@ class KsckTabletServer {
     return strings::Substitute("$0 ($1)", uuid(), address());
   }
 
-  virtual const std::string& address() const = 0;
+  virtual std::string address() const = 0;
 
   bool is_healthy() const {
     CHECK_NE(state_, kUninitialized);

http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/7ba9d994/src/kudu/tools/ksck_remote.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tools/ksck_remote.cc b/src/kudu/tools/ksck_remote.cc
index 325865a..66a495a 100644
--- a/src/kudu/tools/ksck_remote.cc
+++ b/src/kudu/tools/ksck_remote.cc
@@ -45,6 +45,16 @@ MonoDelta GetDefaultTimeout() {
   return MonoDelta::FromMilliseconds(FLAGS_timeout_ms);
 }
 
+Status RemoteKsckTabletServer::Init() {
+  vector<Sockaddr> addresses;
+  RETURN_NOT_OK(ParseAddressList(
+      host_port_.ToString(),
+      tserver::TabletServer::kDefaultPort, &addresses));
+  generic_proxy_.reset(new server::GenericServiceProxy(messenger_, addresses[0]));
+  ts_proxy_.reset(new tserver::TabletServerServiceProxy(messenger_, addresses[0]));
+  return Status::OK();
+}
+
 Status RemoteKsckTabletServer::FetchInfo() {
   state_ = kFetchFailed;
 
@@ -262,11 +272,11 @@ Status RemoteKsckMaster::RetrieveTabletServers(TSMap* tablet_servers) {
   tablet_servers->clear();
   for (const master::ListTabletServersResponsePB_Entry& e : resp.servers()) {
     HostPortPB addr = e.registration().rpc_addresses(0);
-    vector<Sockaddr> addresses;
-    RETURN_NOT_OK(ParseAddressList(HostPort(addr.host(), addr.port()).ToString(),
-                                   tserver::TabletServer::kDefaultPort, &addresses));
-    shared_ptr<KsckTabletServer> ts(
-        new RemoteKsckTabletServer(e.instance_id().permanent_uuid(), addresses[0], messenger_));
+    shared_ptr<RemoteKsckTabletServer> ts(
+        new RemoteKsckTabletServer(e.instance_id().permanent_uuid(),
+                                   HostPort(addr.host(), addr.port()),
+                                   messenger_));
+    RETURN_NOT_OK(ts->Init());
     InsertOrDie(tablet_servers, ts->uuid(), ts);
   }
   return Status::OK();

http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/7ba9d994/src/kudu/tools/ksck_remote.h
----------------------------------------------------------------------
diff --git a/src/kudu/tools/ksck_remote.h b/src/kudu/tools/ksck_remote.h
index 5ca2a3b..9ba4e99 100644
--- a/src/kudu/tools/ksck_remote.h
+++ b/src/kudu/tools/ksck_remote.h
@@ -42,15 +42,17 @@ namespace tools {
 class RemoteKsckTabletServer : public KsckTabletServer {
  public:
   explicit RemoteKsckTabletServer(const std::string& id,
-                                  const Sockaddr& address,
-                                  const std::shared_ptr<rpc::Messenger>& messenger)
+                                  const HostPort host_port,
+                                  std::shared_ptr<rpc::Messenger> messenger)
       : KsckTabletServer(id),
-        address_(address.ToString()),
-        messenger_(messenger),
-        generic_proxy_(new server::GenericServiceProxy(messenger, address)),
-        ts_proxy_(new tserver::TabletServerServiceProxy(messenger, address)) {
+        host_port_(host_port),
+        messenger_(std::move(messenger)) {
   }
 
+  // Resolves the host/port and sets up proxies.
+  // Must be called after constructing.
+  Status Init();
+
   virtual Status FetchInfo() OVERRIDE;
 
   virtual void RunTabletChecksumScanAsync(
@@ -60,16 +62,15 @@ class RemoteKsckTabletServer : public KsckTabletServer {
       const ReportResultCallback& callback) OVERRIDE;
 
 
-  virtual const std::string& address() const OVERRIDE {
-    return address_;
+  virtual std::string address() const OVERRIDE {
+    return host_port_.ToString();
   }
 
  private:
-  const std::string address_;
+  const HostPort host_port_;
   const std::shared_ptr<rpc::Messenger> messenger_;
-  const std::shared_ptr<server::GenericServiceProxy> generic_proxy_;
-  const std::shared_ptr<tserver::TabletServerServiceProxy> ts_proxy_;
-
+  std::shared_ptr<server::GenericServiceProxy> generic_proxy_;
+  std::shared_ptr<tserver::TabletServerServiceProxy> ts_proxy_;
 };
 
 // This implementation connects to a Master via RPC.