diff options
Diffstat (limited to 'xlators/mgmt')
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-geo-rep.c | 44 |
1 files changed, 26 insertions, 18 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-geo-rep.c b/xlators/mgmt/glusterd/src/glusterd-geo-rep.c index 74d28a71898..a160314134e 100644 --- a/xlators/mgmt/glusterd/src/glusterd-geo-rep.c +++ b/xlators/mgmt/glusterd/src/glusterd-geo-rep.c @@ -2821,32 +2821,40 @@ gd_pause_or_resume_gsync (dict_t *dict, char *master, char *slave, goto out; } } else { - ret = kill (-pid, SIGCONT); - if (ret) { - gf_log (this->name, GF_LOG_ERROR, - "Failed to resume gsyncd. Error: %s", - strerror (errno)); - goto out; - } token = strtok (monitor_status, "("); ret = glusterd_create_status_file (master, slave, slave_host, slave_vol, token); if (ret) { gf_log (this->name, GF_LOG_ERROR, - "Unable to update state_file." - " Error : %s", strerror (errno)); - /* If status cannot be updated pause back */ - if (kill (-pid, SIGSTOP)) { + "Resume Failed: Unable to update " + "state_file. Error : %s", + strerror (errno)); + goto out; + } + ret = kill (-pid, SIGCONT); + if (ret) { + gf_log (this->name, GF_LOG_ERROR, + "Resumed Failed: Unable to send" + " SIGCONT. Error: %s", + strerror (errno)); + /* Process can't be resumed, update status + * back to paused. */ + ret = glusterd_create_status_file (master, + slave, + slave_host, + slave_vol, + monitor_status); + if (ret) { snprintf (errmsg, sizeof(errmsg), - "Resume successful but could " - "not update status file." - " Please use 'pause force' to" - " pause back and retry resume" - " to reflect in status"); + "Resume failed!!! Status " + "inconsistent. Please use " + "'resume force' to resume and" + " reach consistent state"); gf_log (this->name, GF_LOG_ERROR, - "Pause back Failed. Error: %s", - strerror (errno)); + "Updating status back to paused" + " Failed. Error: %s", + strerror (errno)); *op_errstr = gf_strdup (errmsg); } goto out; |