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;