You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kudu.apache.org by aw...@apache.org on 2020/12/03 06:10:18 UTC

[kudu] branch master updated: mini-cluster: add a tserver admin proxy

This is an automated email from the ASF dual-hosted git repository.

awong pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kudu.git


The following commit(s) were added to refs/heads/master by this push:
     new 420b07e  mini-cluster: add a tserver admin proxy
420b07e is described below

commit 420b07e6490e14f26107088bc1b09866b6d43bba
Author: Andrew Wong <aw...@cloudera.com>
AuthorDate: Wed Dec 2 12:14:17 2020 -0800

    mini-cluster: add a tserver admin proxy
    
    It can be more convenient to use cluster APIs rather than creating the
    proxy via constructor.
    
    Change-Id: Ie230ec40165ad5eea6b0ca19141707389b6175d0
    Reviewed-on: http://gerrit.cloudera.org:8080/16813
    Tested-by: Kudu Jenkins
    Reviewed-by: Alexey Serbin <as...@cloudera.com>
---
 src/kudu/integration-tests/ts_tablet_manager-itest.cc | 11 ++++-------
 src/kudu/mini-cluster/external_mini_cluster.cc        |  9 +++++++++
 src/kudu/mini-cluster/external_mini_cluster.h         |  3 +++
 src/kudu/mini-cluster/internal_mini_cluster.cc        |  8 ++++++++
 src/kudu/mini-cluster/internal_mini_cluster.h         |  3 +++
 src/kudu/mini-cluster/mini_cluster.h                  |  6 ++++++
 6 files changed, 33 insertions(+), 7 deletions(-)

diff --git a/src/kudu/integration-tests/ts_tablet_manager-itest.cc b/src/kudu/integration-tests/ts_tablet_manager-itest.cc
index aa28d48..ae1d6e9 100644
--- a/src/kudu/integration-tests/ts_tablet_manager-itest.cc
+++ b/src/kudu/integration-tests/ts_tablet_manager-itest.cc
@@ -1226,7 +1226,8 @@ TEST_F(TxnStatusTabletManagementTest, TestTabletServerProxyCalls) {
   FLAGS_superuser_acl = kSuperUser;
   FLAGS_trusted_user_acl = kTrustedUser;
   NO_FATALS(StartCluster({}));
-  auto* ts = cluster_->mini_tablet_server(0);
+  constexpr const int kTServerIdx = 0;
+  auto* ts = cluster_->mini_tablet_server(kTServerIdx);
   ASSERT_OK(CreateTxnStatusTablet(ts));
   // Put together a sequence of ops that should succeed.
   const vector<CoordinatorOpPB::CoordinatorOpType> kOpSequence = {
@@ -1241,9 +1242,7 @@ TEST_F(TxnStatusTabletManagementTest, TestTabletServerProxyCalls) {
   // the logged-in user (this user is the service user, since we just restarted
   // the server).
   const auto perform_ops = [&] (int64_t txn_id, const string& user, bool expect_success) {
-    unique_ptr<TabletServerAdminServiceProxy> admin_proxy(
-        new TabletServerAdminServiceProxy(client_messenger_, ts->bound_rpc_addr(),
-                                          ts->bound_rpc_addr().host()));
+    auto admin_proxy = cluster_->tserver_admin_proxy(kTServerIdx);
     if (!user.empty()) {
       rpc::UserCredentials user_creds;
       user_creds.set_real_user(user);
@@ -1283,10 +1282,8 @@ TEST_F(TxnStatusTabletManagementTest, TestTabletServerProxyCalls) {
 TEST_F(TxnStatusTabletManagementTest, TestTabletServerProxyCallErrors) {
   NO_FATALS(StartCluster({}));
   auto* ts = cluster_->mini_tablet_server(0);
+  auto admin_proxy = cluster_->tserver_admin_proxy(0);
   ASSERT_OK(CreateTxnStatusTablet(ts));
-  unique_ptr<TabletServerAdminServiceProxy> admin_proxy(
-      new TabletServerAdminServiceProxy(client_messenger_, ts->bound_rpc_addr(),
-                                        ts->bound_rpc_addr().host()));
   // If the request is missing fields, it should be rejected.
   {
     CoordinateTransactionRequestPB req;
diff --git a/src/kudu/mini-cluster/external_mini_cluster.cc b/src/kudu/mini-cluster/external_mini_cluster.cc
index d6bc748..7e09fd6 100644
--- a/src/kudu/mini-cluster/external_mini_cluster.cc
+++ b/src/kudu/mini-cluster/external_mini_cluster.cc
@@ -58,6 +58,7 @@
 #include "kudu/tablet/metadata.pb.h"
 #include "kudu/tablet/tablet.pb.h"
 #include "kudu/tserver/tserver.pb.h"
+#include "kudu/tserver/tserver_admin.proxy.h"
 #include "kudu/tserver/tserver_service.proxy.h"
 #include "kudu/util/async_util.h"
 #include "kudu/util/env.h"
@@ -86,6 +87,7 @@ using kudu::rpc::RpcController;
 using kudu::server::ServerStatusPB;
 using kudu::tserver::ListTabletsRequestPB;
 using kudu::tserver::ListTabletsResponsePB;
+using kudu::tserver::TabletServerAdminServiceProxy;
 using kudu::tserver::TabletServerServiceProxy;
 using std::copy;
 using std::pair;
@@ -892,6 +894,13 @@ std::shared_ptr<TabletServerServiceProxy> ExternalMiniCluster::tserver_proxy(int
   return std::make_shared<TabletServerServiceProxy>(messenger_, addr, addr.host());
 }
 
+std::shared_ptr<TabletServerAdminServiceProxy> ExternalMiniCluster::tserver_admin_proxy(
+    int idx) const {
+  CHECK_LT(idx, tablet_servers_.size());
+  const auto& addr = CHECK_NOTNULL(tablet_server(idx))->bound_rpc_addr();
+  return std::make_shared<TabletServerAdminServiceProxy>(messenger_, addr, addr.host());
+}
+
 Status ExternalMiniCluster::CreateClient(client::KuduClientBuilder* builder,
                                          client::sp::shared_ptr<client::KuduClient>* client) const {
   client::KuduClientBuilder defaults;
diff --git a/src/kudu/mini-cluster/external_mini_cluster.h b/src/kudu/mini-cluster/external_mini_cluster.h
index 1553f2f..4d1d776 100644
--- a/src/kudu/mini-cluster/external_mini_cluster.h
+++ b/src/kudu/mini-cluster/external_mini_cluster.h
@@ -81,6 +81,7 @@ class ServerStatusPB;
 } // namespace server
 
 namespace tserver {
+class TabletServerAdminServiceProxy;
 class TabletServerServiceProxy;
 } // namespace tserver
 
@@ -391,6 +392,8 @@ class ExternalMiniCluster : public MiniCluster {
   std::shared_ptr<master::MasterServiceProxy> master_proxy() const override;
   std::shared_ptr<master::MasterServiceProxy> master_proxy(int idx) const override;
   std::shared_ptr<tserver::TabletServerServiceProxy> tserver_proxy(int idx) const override;
+  std::shared_ptr<tserver::TabletServerAdminServiceProxy> tserver_admin_proxy(
+      int idx) const override;
 
   std::string block_manager_type() const {
     return opts_.block_manager_type;
diff --git a/src/kudu/mini-cluster/internal_mini_cluster.cc b/src/kudu/mini-cluster/internal_mini_cluster.cc
index 9bd4deb..8ca917d 100644
--- a/src/kudu/mini-cluster/internal_mini_cluster.cc
+++ b/src/kudu/mini-cluster/internal_mini_cluster.cc
@@ -41,6 +41,7 @@
 #include "kudu/tserver/tablet_server.h"
 #include "kudu/tserver/tablet_server_options.h"
 #include "kudu/tserver/ts_tablet_manager.h"
+#include "kudu/tserver/tserver_admin.proxy.h"
 #include "kudu/tserver/tserver_service.proxy.h"
 #include "kudu/util/env.h"
 #include "kudu/util/monotime.h"
@@ -69,6 +70,7 @@ using master::TSDescriptor;
 using std::shared_ptr;
 using tserver::MiniTabletServer;
 using tserver::TabletServer;
+using tserver::TabletServerAdminServiceProxy;
 using tserver::TabletServerServiceProxy;
 
 InternalMiniClusterOptions::InternalMiniClusterOptions()
@@ -425,6 +427,12 @@ std::shared_ptr<TabletServerServiceProxy> InternalMiniCluster::tserver_proxy(int
   return std::make_shared<TabletServerServiceProxy>(messenger_, addr, addr.host());
 }
 
+std::shared_ptr<TabletServerAdminServiceProxy> InternalMiniCluster::tserver_admin_proxy(
+    int idx) const {
+  const auto& addr = CHECK_NOTNULL(mini_tablet_server(idx))->bound_rpc_addr();
+  return std::make_shared<TabletServerAdminServiceProxy>(messenger_, addr, addr.host());
+}
+
 string InternalMiniCluster::WalRootForTS(int ts_idx) const {
   return mini_tablet_server(ts_idx)->options()->fs_opts.wal_root;
 }
diff --git a/src/kudu/mini-cluster/internal_mini_cluster.h b/src/kudu/mini-cluster/internal_mini_cluster.h
index 379aecc..18b2d15 100644
--- a/src/kudu/mini-cluster/internal_mini_cluster.h
+++ b/src/kudu/mini-cluster/internal_mini_cluster.h
@@ -51,6 +51,7 @@ class Messenger;
 
 namespace tserver {
 class MiniTabletServer;
+class TabletServerAdminServiceProxy;
 class TabletServerServiceProxy;
 } // namespace tserver
 
@@ -206,6 +207,8 @@ class InternalMiniCluster : public MiniCluster {
   std::shared_ptr<master::MasterServiceProxy> master_proxy() const override;
   std::shared_ptr<master::MasterServiceProxy> master_proxy(int idx) const override;
   std::shared_ptr<tserver::TabletServerServiceProxy> tserver_proxy(int idx) const override;
+  std::shared_ptr<tserver::TabletServerAdminServiceProxy> tserver_admin_proxy(
+      int idx) const override;
 
  private:
 
diff --git a/src/kudu/mini-cluster/mini_cluster.h b/src/kudu/mini-cluster/mini_cluster.h
index 5283560..945a915 100644
--- a/src/kudu/mini-cluster/mini_cluster.h
+++ b/src/kudu/mini-cluster/mini_cluster.h
@@ -43,6 +43,7 @@ class Messenger;
 } // namespace rpc
 
 namespace tserver {
+class TabletServerAdminServiceProxy;
 class TabletServerServiceProxy;
 } // namespace tserver
 
@@ -118,6 +119,11 @@ class MiniCluster {
   // 'idx' is running.
   virtual std::shared_ptr<tserver::TabletServerServiceProxy> tserver_proxy(int idx) const = 0;
 
+  // Returns an RPC proxy to the tserver admin service at 'idx'. Requires that
+  // the tserver at 'idx' is running.
+  virtual std::shared_ptr<tserver::TabletServerAdminServiceProxy> tserver_admin_proxy(
+      int idx) const = 0;
+
   // Returns the UUID for the tablet server 'ts_idx'
   virtual std::string UuidForTS(int ts_idx) const = 0;