From 0b0c306cbcabee7539af2dbafde2d5af3da037d4 Mon Sep 17 00:00:00 2001 From: Jiffin Tony Thottan Date: Wed, 19 Apr 2017 16:12:10 +0530 Subject: [PATCH 399/406] ganesha : allow refresh-config and volume export/unexport in failover state If ganesha is not running on one of nodes in HA cluster, then all dbus commands send to that ganesha server will fail. This results in both refresh-config and volume export/unepxort failure. This change will gracefully handle those scenarios. Upstream reference : >Change-Id: I3f1b7b7ca98e54c273c266e56357d8e24dd1b14b >BUG: 1443490 Signed-off-by: Jiffin Tony Thottan >Reviewed-on: https://review.gluster.org/17081 >Smoke: Gluster Build System >NetBSD-regression: NetBSD Build System >CentOS-regression: Gluster Build System >Reviewed-by: soumya k >Reviewed-by: Kaleb KEITHLEY Change-Id: I3f1b7b7ca98e54c273c266e56357d8e24dd1b14b BUG: 1419816 Signed-off-by: Jiffin Tony Thottan Reviewed-on: https://code.engineering.redhat.com/gerrit/104142 Reviewed-by: Atin Mukherjee --- extras/ganesha/scripts/ganesha-ha.sh | 6 ++---- xlators/mgmt/glusterd/src/glusterd-ganesha.c | 25 +++++++++++++++++-------- xlators/mgmt/glusterd/src/glusterd-messages.h | 8 ++++++++ 3 files changed, 27 insertions(+), 12 deletions(-) diff --git a/extras/ganesha/scripts/ganesha-ha.sh b/extras/ganesha/scripts/ganesha-ha.sh index c145805..0a15f1f 100644 --- a/extras/ganesha/scripts/ganesha-ha.sh +++ b/extras/ganesha/scripts/ganesha-ha.sh @@ -267,8 +267,7 @@ string:\"EXPORT(Export_Id=$export_id)\" 2>&1") ret=$? logger <<< "${output}" if [ ${ret} -ne 0 ]; then - echo "Error: refresh-config failed on ${current_host}." - exit 1 + echo "Refresh-config failed on ${current_host}" else echo "Refresh-config completed on ${current_host}." fi @@ -289,8 +288,7 @@ string:"EXPORT(Export_Id=$export_id)" 2>&1) ret=$? logger <<< "${output}" if [ ${ret} -ne 0 ] ; then - echo "Error: refresh-config failed on localhost." - exit 1 + echo "Refresh-config failed on localhost." else echo "Success: refresh-config completed." fi diff --git a/xlators/mgmt/glusterd/src/glusterd-ganesha.c b/xlators/mgmt/glusterd/src/glusterd-ganesha.c index 4a76e7e..79f8c6d 100644 --- a/xlators/mgmt/glusterd/src/glusterd-ganesha.c +++ b/xlators/mgmt/glusterd/src/glusterd-ganesha.c @@ -579,14 +579,23 @@ ganesha_manage_export (dict_t *dict, char *value, char **op_errstr) } if (check_host_list()) { - runner_add_args (&runner, "sh", GANESHA_PREFIX"/dbus-send.sh", - CONFDIR, value, volname, NULL); - ret = runner_run (&runner); - if (ret) { - gf_asprintf(op_errstr, "Dynamic export" - " addition/deletion failed." - " Please see log file for details"); - goto out; + /* Check whether ganesha is running on this node */ + if (manage_service ("status")) { + gf_msg (this->name, GF_LOG_WARNING, 0, + GD_MSG_GANESHA_NOT_RUNNING, + "Export failed, NFS-Ganesha is not running"); + } else { + runner_add_args (&runner, + GANESHA_PREFIX"/dbus-send.sh", + CONFDIR, value, volname, NULL); + ret = runner_run (&runner); + if (ret) { + gf_asprintf(op_errstr, "Dynamic export" + " addition/deletion failed." + " Please see log file for details"); + goto out; + } + } } diff --git a/xlators/mgmt/glusterd/src/glusterd-messages.h b/xlators/mgmt/glusterd/src/glusterd-messages.h index 4728810..a093d33 100644 --- a/xlators/mgmt/glusterd/src/glusterd-messages.h +++ b/xlators/mgmt/glusterd/src/glusterd-messages.h @@ -4792,6 +4792,14 @@ /*------------*/ +#define GD_MSG_GANESHA_NOT_RUNNING (GLUSTERD_COMP_BASE + 599) +/*! + * @messageid + * @diagnosis + * @recommendedaction + * + */ + #define glfs_msg_end_x GLFS_MSGID_END, "Invalid: End of messages" #endif /* !_GLUSTERD_MESSAGES_H_ */ -- 1.8.3.1