empiredan commented on code in PR #914:
URL: https://github.com/apache/incubator-pegasus/pull/914#discussion_r890788227
##########
src/shell/commands/table_management.cpp:
##########
@@ -886,3 +888,105 @@ bool clear_app_envs(command_executor *e, shell_context
*sc, arguments args)
}
return true;
}
+
+bool get_max_replica_count(command_executor *e, shell_context *sc, arguments
args)
+{
+ if (args.argc < 2) {
+ return false;
+ }
+
+ std::string app_name(args.argv[1]);
+
+ auto err_resp = sc->ddl_client->get_max_replica_count(app_name);
+ auto err = err_resp.get_error();
+ const auto &resp = err_resp.get_value();
+
+ if (err.is_ok()) {
+ err = dsn::error_s::make(resp.err);
+ }
+
+ std::string escaped_app_name(pegasus::utils::c_escape_string(app_name));
+ if (err.is_ok()) {
+ fmt::print(stdout,
+ "the replica count of app({}) is {}\n",
+ escaped_app_name,
+ resp.max_replica_count);
+ } else {
+ fmt::print(stdout, "get replica count of app({}) failed: {}\n",
escaped_app_name, err);
+ }
+
+ return true;
+}
+
+bool set_max_replica_count(command_executor *e, shell_context *sc, arguments
args)
+{
+ if (args.argc < 3) {
+ return false;
+ }
+
+ int new_max_replica_count;
+ if (!dsn::buf2int32(args.argv[2], new_max_replica_count)) {
+ fmt::print(stderr, "parse {} as replica count failed\n", args.argv[2]);
+ return false;
+ }
+
+ if (new_max_replica_count < 1) {
+ fmt::print(stderr, "replica count should be >= 1\n");
+ return false;
+ }
+
+ std::string app_name(args.argv[1]);
+ std::string escaped_app_name(pegasus::utils::c_escape_string(app_name));
+ std::string action(fmt::format(
+ "set the replica count of app({}) to {}", escaped_app_name,
new_max_replica_count));
+ if (!confirm_unsafe_command(action)) {
+ return true;
+ }
+
+ auto err_resp = sc->ddl_client->set_max_replica_count(app_name,
new_max_replica_count);
+ auto err = err_resp.get_error();
+ const auto &resp = err_resp.get_value();
+
+ if (dsn_likely(err.is_ok())) {
+ err = dsn::error_s::make(resp.err);
+ }
+
+ if (err.is_ok()) {
+ if (new_max_replica_count == resp.old_max_replica_count) {
+ fmt::print(stdout,
+ "set replica count of app({}) from {} to {}: {}\n",
+ escaped_app_name,
+ resp.old_max_replica_count,
+ new_max_replica_count,
+ resp.hint_message);
+ } else {
+ fmt::print(stdout,
+ "set replica count of app({}) from {} to {}
successfully\n",
+ escaped_app_name,
+ resp.old_max_replica_count,
+ new_max_replica_count);
+ }
Review Comment:
> Is it necesssary to split these two cases? There is little difference.
OK, I can merge the two cases.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]