src/shell/commands.h (146 lines of code) (raw):
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
#pragma once
#include <getopt.h>
#include <thread>
#include <iomanip>
#include <fstream>
#include <boost/lexical_cast.hpp>
#include <boost/algorithm/string.hpp>
#include <rocksdb/db.h>
#include "utils/filesystem.h"
#include "utils/output_utils.h"
#include "utils/string_conv.h"
#include <string_view>
#include "client/replication_ddl_client.h"
#include "tools/mutation_log_tool.h"
#include <rrdb/rrdb.code.definition.h>
#include <rrdb/rrdb_types.h>
#include <pegasus/version.h>
#include <pegasus/git_commit.h>
#include <pegasus/error.h>
#include "command_executor.h"
#include "command_helper.h"
#include "args.h"
using namespace dsn::replication;
using tp_alignment = ::dsn::utils::table_printer::alignment;
using tp_output_format = ::dsn::utils::table_printer::output_format;
static const char *INDENT = " ";
struct list_nodes_helper
{
std::string node_name;
std::string node_status;
int primary_count{0};
int secondary_count{0};
int64_t memused_res_mb{0};
int64_t block_cache_bytes{0};
int64_t wbm_total_bytes{0};
int64_t wbm_mutable_bytes{0};
int64_t mem_tbl_bytes{0};
int64_t mem_idx_bytes{0};
int64_t disk_available_total_ratio{0};
int64_t disk_available_min_ratio{0};
double get_qps{0.0};
double put_qps{0.0};
double multi_get_qps{0.0};
double batch_get_qps{0.0};
double multi_put_qps{0.0};
double get_p99{0.0};
double put_p99{0.0};
double multi_get_p99{0.0};
double batch_get_p99{0.0};
double multi_put_p99{0.0};
double read_cu{0.0};
double write_cu{0.0};
list_nodes_helper(std::string &&name, std::string &&status)
: node_name(std::move(name)), node_status(std::move(status))
{
}
};
// == miscellaneous (see 'commands/misc.cpp') == //
bool help_info(command_executor *e, shell_context *sc, arguments args);
bool version(command_executor *e, shell_context *sc, arguments args);
bool exit_shell(command_executor *e, shell_context *sc, arguments args);
// == global properties (see 'commands/global_properties.cpp') == //
bool use_app_as_current(command_executor *e, shell_context *sc, arguments args);
bool process_escape_all(command_executor *e, shell_context *sc, arguments args);
bool process_timeout(command_executor *e, shell_context *sc, arguments args);
bool cc_command(command_executor *e, shell_context *sc, arguments args);
// == node management (see 'commands/node_management.cpp') == //
bool query_cluster_info(command_executor *e, shell_context *sc, arguments args);
bool ls_nodes(command_executor *e, shell_context *sc, arguments args);
bool server_info(command_executor *e, shell_context *sc, arguments args);
bool server_stat(command_executor *e, shell_context *sc, arguments args);
bool remote_command(command_executor *e, shell_context *sc, arguments args);
bool flush_log(command_executor *e, shell_context *sc, arguments args);
// == table management (see 'commands/table_management.cpp') == //
bool ls_apps(command_executor *e, shell_context *sc, arguments args);
bool query_app(command_executor *e, shell_context *sc, arguments args);
bool app_disk(command_executor *e, shell_context *sc, arguments args);
bool app_stat(command_executor *e, shell_context *sc, arguments args);
bool create_app(command_executor *e, shell_context *sc, arguments args);
bool drop_app(command_executor *e, shell_context *sc, arguments args);
bool recall_app(command_executor *e, shell_context *sc, arguments args);
bool rename_app(command_executor *e, shell_context *sc, arguments args);
bool get_app_envs(command_executor *e, shell_context *sc, arguments args);
bool set_app_envs(command_executor *e, shell_context *sc, arguments args);
bool del_app_envs(command_executor *e, shell_context *sc, arguments args);
bool clear_app_envs(command_executor *e, shell_context *sc, arguments args);
bool get_max_replica_count(command_executor *e, shell_context *sc, arguments args);
bool set_max_replica_count(command_executor *e, shell_context *sc, arguments args);
bool get_atomic_idempotent(command_executor *e, shell_context *sc, arguments args);
bool enable_atomic_idempotent(command_executor *e, shell_context *sc, arguments args);
bool disable_atomic_idempotent(command_executor *e, shell_context *sc, arguments args);
// == data operations (see 'commands/data_operations.cpp') == //
bool data_operations(command_executor *e, shell_context *sc, arguments args);
bool set_value(command_executor *e, shell_context *sc, arguments args);
bool multi_set_value(command_executor *e, shell_context *sc, arguments args);
bool get_value(command_executor *e, shell_context *sc, arguments args);
bool multi_get_value(command_executor *e, shell_context *sc, arguments args);
bool multi_get_range(command_executor *e, shell_context *sc, arguments args);
bool multi_get_sortkeys(command_executor *e, shell_context *sc, arguments args);
bool delete_value(command_executor *e, shell_context *sc, arguments args);
bool multi_del_value(command_executor *e, shell_context *sc, arguments args);
bool multi_del_range(command_executor *e, shell_context *sc, arguments args);
bool incr(command_executor *e, shell_context *sc, arguments args);
bool check_and_set(command_executor *e, shell_context *sc, arguments args);
bool check_and_mutate(command_executor *e, shell_context *sc, arguments args);
bool exist(command_executor *e, shell_context *sc, arguments args);
bool sortkey_count(command_executor *e, shell_context *sc, arguments args);
bool get_ttl(command_executor *e, shell_context *sc, arguments args);
bool calculate_hash_value(command_executor *e, shell_context *sc, arguments args);
bool hash_scan(command_executor *e, shell_context *sc, arguments args);
bool full_scan(command_executor *e, shell_context *sc, arguments args);
bool copy_data(command_executor *e, shell_context *sc, arguments args);
bool clear_data(command_executor *e, shell_context *sc, arguments args);
bool count_data(command_executor *e, shell_context *sc, arguments args);
// == load balancing(see 'commands/rebalance.cpp') == //
bool set_meta_level(command_executor *e, shell_context *sc, arguments args);
bool get_meta_level(command_executor *e, shell_context *sc, arguments args);
bool propose(command_executor *e, shell_context *sc, arguments args);
bool balance(command_executor *e, shell_context *sc, arguments args);
// == data recovery(see 'commands/recovery.cpp') == //
bool recover(command_executor *e, shell_context *sc, arguments args);
bool ddd_diagnose(command_executor *e, shell_context *sc, arguments args);
// == cold backup (see 'commands/cold_backup.cpp') == //
bool add_backup_policy(command_executor *e, shell_context *sc, arguments args);
bool ls_backup_policy(command_executor *e, shell_context *sc, arguments args);
bool modify_backup_policy(command_executor *e, shell_context *sc, arguments args);
extern const std::string disable_backup_policy_help;
bool disable_backup_policy(command_executor *e, shell_context *sc, arguments args);
bool enable_backup_policy(command_executor *e, shell_context *sc, arguments args);
bool restore(command_executor *e, shell_context *sc, arguments args);
bool query_backup_policy(command_executor *e, shell_context *sc, arguments args);
bool query_restore_status(command_executor *e, shell_context *sc, arguments args);
// == debugger (see 'commands/debugger.cpp') == //Debugging tool
bool sst_dump(command_executor *e, shell_context *sc, arguments args);
bool mlog_dump(command_executor *e, shell_context *sc, arguments args);
bool local_get(command_executor *e, shell_context *sc, arguments args);
bool rdb_key_hex2str(command_executor *e, shell_context *sc, arguments args);
bool rdb_key_str2hex(command_executor *e, shell_context *sc, arguments args);
bool rdb_value_hex2str(command_executor *e, shell_context *sc, arguments args);
// == duplication (see 'commands/duplication.cpp') == //
bool add_dup(command_executor *e, shell_context *sc, arguments args);
bool query_dup(command_executor *e, shell_context *sc, arguments args);
bool ls_dups(command_executor *e, shell_context *sc, arguments args);
bool remove_dup(command_executor *e, shell_context *sc, arguments args);
bool start_dup(command_executor *e, shell_context *sc, arguments args);
bool pause_dup(command_executor *e, shell_context *sc, arguments args);
bool set_dup_fail_mode(command_executor *e, shell_context *sc, arguments args);
// == bulk load (see 'commands/bulk_load.cpp') == //
bool start_bulk_load(command_executor *e, shell_context *sc, arguments args);
bool query_bulk_load_status(command_executor *e, shell_context *sc, arguments args);
bool pause_bulk_load(command_executor *e, shell_context *sc, arguments args);
bool restart_bulk_load(command_executor *e, shell_context *sc, arguments args);
bool cancel_bulk_load(command_executor *e, shell_context *sc, arguments args);
bool clear_bulk_load(command_executor *e, shell_context *sc, arguments args);
// == detect hotkey (see 'commands/detect_hotkey.cpp') == //
bool detect_hotkey(command_executor *e, shell_context *sc, arguments args);
// == local partition split (see 'commands/local_partition_split.cpp') == //
extern const std::string local_partition_split_help;
bool local_partition_split(command_executor *e, shell_context *sc, arguments args);