summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMohit Agrawal <moagrawa@redhat.com>2016-10-25 19:57:02 +0530
committerAtin Mukherjee <amukherj@redhat.com>2017-10-04 04:33:16 +0000
commitd1f15cdeb609a1b720a04a502f7a63b2d3922f41 (patch)
tree2269ce400aa5e379ea9f541836aa141593251db7
parent1c0d3ac5c5f9774a0f25f5282d54177af02f984e (diff)
cli/afr: gluster volume heal info "healed" command output is not appropriate
Problem: "gluster volume heal info [healed] [heal-failed]" command output on terminal is not appropriate in case of down any volume. Solution: To make message more appropriate change the condition in function "gd_syncop_mgmt_brick_op". Test : To verify the fix followed below procedure 1) Create 2*3 distribute replicate volume 2) set self-heal daemon off 3) kill two bricks (3, 6) 4) create some file on mount point 5) bring brick 3,6 up 6) kill other two brick (2 and 4) 7) make self heal daemon on 8) run "gluster v heal <vol-name>" Note: After apply the patch options (healed | heal-failed) will deprecate from command line. BUG: 1388509 Change-Id: I229c320c9caeb2525c76b78b44a53a64b088545a Signed-off-by: Mohit Agrawal <moagrawa@redhat.com>
-rw-r--r--cli/src/cli-cmd-parser.c10
-rw-r--r--cli/src/cli-cmd-volume.c2
-rw-r--r--cli/src/cli-rpc-ops.c13
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-syncop.c13
4 files changed, 21 insertions, 17 deletions
diff --git a/cli/src/cli-cmd-parser.c b/cli/src/cli-cmd-parser.c
index ac4221ff8c4..482010ce502 100644
--- a/cli/src/cli-cmd-parser.c
+++ b/cli/src/cli-cmd-parser.c
@@ -3826,16 +3826,6 @@ cli_cmd_volume_heal_options_parse (const char **words, int wordcount,
}
if (!strcmp (words[3], "info")) {
- if (!strcmp (words[4], "healed")) {
- ret = dict_set_int32 (dict, "heal-op",
- GF_SHD_OP_HEALED_FILES);
- goto done;
- }
- if (!strcmp (words[4], "heal-failed")) {
- ret = dict_set_int32 (dict, "heal-op",
- GF_SHD_OP_HEAL_FAILED_FILES);
- goto done;
- }
if (!strcmp (words[4], "split-brain")) {
ret = dict_set_int32 (dict, "heal-op",
GF_SHD_OP_SPLIT_BRAIN_FILES);
diff --git a/cli/src/cli-cmd-volume.c b/cli/src/cli-cmd-volume.c
index a7e0fc7ed03..7bedd29306f 100644
--- a/cli/src/cli-cmd-volume.c
+++ b/cli/src/cli-cmd-volume.c
@@ -3305,7 +3305,7 @@ struct cli_cmd volume_cmds[] = {
{ "volume heal <VOLNAME> [enable | disable | full |"
"statistics [heal-count [replica <HOSTNAME:BRICKNAME>]] |"
- "info [summary | healed | heal-failed | split-brain] |"
+ "info [summary | split-brain] |"
"split-brain {bigger-file <FILE> | latest-mtime <FILE> |"
"source-brick <HOSTNAME:BRICKNAME> [<FILE>]} |"
"granular-entry-heal {enable | disable}]",
diff --git a/cli/src/cli-rpc-ops.c b/cli/src/cli-rpc-ops.c
index 1a92fb54ec9..2b15813e123 100644
--- a/cli/src/cli-rpc-ops.c
+++ b/cli/src/cli-rpc-ops.c
@@ -9141,13 +9141,13 @@ gf_cli_heal_volume_cbk (struct rpc_req *req, struct iovec *iov,
operation = "Launching heal operation ";
heal_op_str = "to perform index self heal";
substr = "\nUse heal info commands to check"
- " status";
+ " status.";
break;
case GF_SHD_OP_HEAL_FULL:
operation = "Launching heal operation ";
heal_op_str = "to perform full self heal";
substr = "\nUse heal info commands to check"
- " status";
+ " status.";
break;
case GF_SHD_OP_INDEX_SUMMARY:
heal_op_str = "list of entries to be healed";
@@ -9200,10 +9200,11 @@ gf_cli_heal_volume_cbk (struct rpc_req *req, struct iovec *iov,
}
if (rsp.op_ret) {
- cli_err ("%s%s on volume %s has been unsuccessful on "
- "bricks that are down. Please check if all brick "
- "processes are running.",
- operation, heal_op_str, volname);
+ if (strcmp (rsp.op_errstr, "")) {
+ cli_err ("%s%s on volume %s has been unsuccessful:",
+ operation, heal_op_str, volname);
+ cli_err ("%s", rsp.op_errstr);
+ }
ret = rsp.op_ret;
goto out;
} else {
diff --git a/xlators/mgmt/glusterd/src/glusterd-syncop.c b/xlators/mgmt/glusterd/src/glusterd-syncop.c
index aa47517c356..31b08d76adc 100644
--- a/xlators/mgmt/glusterd/src/glusterd-syncop.c
+++ b/xlators/mgmt/glusterd/src/glusterd-syncop.c
@@ -1039,6 +1039,19 @@ out:
errno = args.op_errno;
if (args.dict)
dict_unref (args.dict);
+ if (args.op_ret && (*errstr == NULL)) {
+ if (op == GD_OP_HEAL_VOLUME) {
+ gf_asprintf (errstr,
+ "Glusterd Syncop Mgmt brick op '%s' failed."
+ " Please check glustershd log file for details.",
+ gd_op_list[op]);
+ } else {
+ gf_asprintf (errstr,
+ "Glusterd Syncop Mgmt brick op '%s' failed."
+ " Please check brick log file for details.",
+ gd_op_list[op]);
+ }
+ }
gd_brick_op_req_free (req);
return args.op_ret;
}