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 2020/04/07 22:21:17 UTC
[kudu] 03/04: allow skip block manager in some ops of local_replica
tools
This is an automated email from the ASF dual-hosted git repository.
todd pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kudu.git
commit 96259c889a73516c021adf1051627c2946be05bb
Author: wangning <19...@gmail.com>
AuthorDate: Mon Apr 6 13:24:12 2020 +0800
allow skip block manager in some ops of local_replica tools
These cli ops could be speed up via skip opening block manager.
- local_replica cmeta print_replica_uuids
- local_replica cmeta rewrite_raft_config
- local_replica cmeta set_term
- local_replica dump wals
- local_replica list
Change-Id: I01e22354fdb76596008cd0824e240d24a8f20099
Reviewed-on: http://gerrit.cloudera.org:8080/15656
Tested-by: Andrew Wong <aw...@cloudera.com>
Reviewed-by: Andrew Wong <aw...@cloudera.com>
---
src/kudu/tools/tool_action_local_replica.cc | 23 +++++++++++++----------
1 file changed, 13 insertions(+), 10 deletions(-)
diff --git a/src/kudu/tools/tool_action_local_replica.cc b/src/kudu/tools/tool_action_local_replica.cc
index 12b197a..67a2d1a 100644
--- a/src/kudu/tools/tool_action_local_replica.cc
+++ b/src/kudu/tools/tool_action_local_replica.cc
@@ -155,9 +155,10 @@ string Indent(int indent) {
return string(indent, ' ');
}
-Status FsInit(unique_ptr<FsManager>* fs_manager) {
+Status FsInit(bool skip_block_manager, unique_ptr<FsManager>* fs_manager) {
FsManagerOpts fs_opts;
fs_opts.read_only = true;
+ fs_opts.skip_block_manager = skip_block_manager;
fs_opts.update_instances = fs::UpdateInstanceBehavior::DONT_UPDATE;
unique_ptr<FsManager> fs_ptr(new FsManager(Env::Default(), fs_opts));
RETURN_NOT_OK(fs_ptr->Open());
@@ -238,7 +239,7 @@ Status ParsePeerString(const string& peer_str,
Status PrintReplicaUuids(const RunnerContext& context) {
unique_ptr<FsManager> fs_manager;
- RETURN_NOT_OK(FsInit(&fs_manager));
+ RETURN_NOT_OK(FsInit(/*skip_block_manager*/true, &fs_manager));
scoped_refptr<ConsensusMetadataManager> cmeta_manager(
new ConsensusMetadataManager(fs_manager.get()));
@@ -323,7 +324,9 @@ Status SetRaftTerm(const RunnerContext& context) {
// Load the current metadata from disk and verify that the intended operation is safe.
Env* env = Env::Default();
- FsManager fs_manager(env, FsManagerOpts());
+ FsManagerOpts fs_opts = FsManagerOpts();
+ fs_opts.skip_block_manager = true;
+ FsManager fs_manager(env, fs_opts);
RETURN_NOT_OK(fs_manager.Open());
// Load the cmeta file and rewrite the raft config.
scoped_refptr<ConsensusMetadataManager> cmeta_manager(new ConsensusMetadataManager(&fs_manager));
@@ -468,7 +471,7 @@ struct TabletSizeStats {
Status SummarizeDataSize(const RunnerContext& context) {
const string& tablet_id_pattern = FindOrDie(context.required_args, kTabletIdGlobArg);
unique_ptr<FsManager> fs;
- RETURN_NOT_OK(FsInit(&fs));
+ RETURN_NOT_OK(FsInit(/*skip_block_manager*/false, &fs));
vector<string> tablets;
RETURN_NOT_OK(fs->ListTabletIds(&tablets));
@@ -525,7 +528,7 @@ Status SummarizeDataSize(const RunnerContext& context) {
Status DumpWals(const RunnerContext& context) {
unique_ptr<FsManager> fs_manager;
- RETURN_NOT_OK(FsInit(&fs_manager));
+ RETURN_NOT_OK(FsInit(/*skip_block_manager*/true, &fs_manager));
const string& tablet_id = FindOrDie(context.required_args, kTabletIdArg);
shared_ptr<LogReader> reader;
@@ -576,7 +579,7 @@ Status ListBlocksInRowSet(const Schema& schema,
Status DumpBlockIdsForLocalReplica(const RunnerContext& context) {
unique_ptr<FsManager> fs_manager;
- RETURN_NOT_OK(FsInit(&fs_manager));
+ RETURN_NOT_OK(FsInit(/*skip_block_manager*/false, &fs_manager));
const string& tablet_id = FindOrDie(context.required_args, kTabletIdArg);
scoped_refptr<TabletMetadata> meta;
@@ -628,7 +631,7 @@ Status DumpTabletMeta(FsManager* fs_manager,
Status ListLocalReplicas(const RunnerContext& context) {
unique_ptr<FsManager> fs_manager;
- RETURN_NOT_OK(FsInit(&fs_manager));
+ RETURN_NOT_OK(FsInit(/*skip_block_manager*/true, &fs_manager));
vector<string> tablets;
RETURN_NOT_OK(fs_manager->ListTabletIds(&tablets));
@@ -702,7 +705,7 @@ Status DumpRowSetInternal(const IOContext& ctx,
Status DumpRowSet(const RunnerContext& context) {
const int kIndent = 2;
unique_ptr<FsManager> fs_manager;
- RETURN_NOT_OK(FsInit(&fs_manager));
+ RETURN_NOT_OK(FsInit(/*skip_block_manager*/false, &fs_manager));
const string& tablet_id = FindOrDie(context.required_args, kTabletIdArg);
scoped_refptr<TabletMetadata> meta;
@@ -740,14 +743,14 @@ Status DumpRowSet(const RunnerContext& context) {
Status DumpMeta(const RunnerContext& context) {
unique_ptr<FsManager> fs_manager;
- RETURN_NOT_OK(FsInit(&fs_manager));
+ RETURN_NOT_OK(FsInit(/*skip_block_manager*/false, &fs_manager));
const string& tablet_id = FindOrDie(context.required_args, kTabletIdArg);
return DumpTabletMeta(fs_manager.get(), tablet_id, 0);
}
Status DumpDataDirs(const RunnerContext& context) {
unique_ptr<FsManager> fs_manager;
- RETURN_NOT_OK(FsInit(&fs_manager));
+ RETURN_NOT_OK(FsInit(/*skip_block_manager*/false, &fs_manager));
const string& tablet_id = FindOrDie(context.required_args, kTabletIdArg);
// Load the tablet meta to make sure the tablet's data directories are loaded
// into the manager.